@heznpc/imcp
Advanced tools
| /** | ||
| * `npx @heznpc/imcp doctor` — Diagnose iMcp installation. | ||
| * | ||
| * Checks: Node version, config files, Claude Desktop config, | ||
| * module status, and optionally probes macOS permissions. | ||
| */ | ||
| export declare function runDoctor(): Promise<void>; |
| /** | ||
| * `npx @heznpc/imcp doctor` — Diagnose iMcp installation. | ||
| * | ||
| * Checks: Node version, config files, Claude Desktop config, | ||
| * module status, and optionally probes macOS permissions. | ||
| */ | ||
| import { readFileSync, existsSync } from "node:fs"; | ||
| import { join } from "node:path"; | ||
| import { execSync } from "node:child_process"; | ||
| import { MODULE_NAMES, STARTER_MODULES } from "../shared/config.js"; | ||
| const HOME = process.env.HOME ?? process.env.USERPROFILE ?? ""; | ||
| const CLAUDE_CONFIG_PATH = join(HOME, "Library", "Application Support", "Claude", "claude_desktop_config.json"); | ||
| const IMCP_CONFIG_PATH = join(HOME, ".config", "imcp", "config.json"); | ||
| const OK = "\x1b[32m✓\x1b[0m"; | ||
| const WARN = "\x1b[33m⚠\x1b[0m"; | ||
| const FAIL = "\x1b[31m✗\x1b[0m"; | ||
| function check(label, status, detail) { | ||
| console.log(` ${status} ${label.padEnd(22)} ${detail}`); | ||
| } | ||
| export async function runDoctor() { | ||
| console.log(""); | ||
| console.log("\x1b[1m\x1b[36m iMcp Doctor\x1b[0m"); | ||
| console.log(""); | ||
| // 1. Node version | ||
| const nodeVer = process.version; | ||
| const major = parseInt(nodeVer.slice(1), 10); | ||
| check("Node.js", major >= 18 ? OK : FAIL, `${nodeVer} ${major >= 18 ? "(>= 18 required)" : "— upgrade required (>= 18)"}`); | ||
| // 2. macOS check | ||
| const platform = process.platform; | ||
| check("Platform", platform === "darwin" ? OK : FAIL, platform === "darwin" ? "macOS" : `${platform} — iMcp requires macOS`); | ||
| // 3. Config file | ||
| let fileConfig = null; | ||
| if (existsSync(IMCP_CONFIG_PATH)) { | ||
| try { | ||
| fileConfig = JSON.parse(readFileSync(IMCP_CONFIG_PATH, "utf-8")); | ||
| check("Config file", OK, IMCP_CONFIG_PATH); | ||
| } | ||
| catch { | ||
| check("Config file", WARN, `${IMCP_CONFIG_PATH} (parse error)`); | ||
| } | ||
| } | ||
| else { | ||
| check("Config file", WARN, "Not found — using starter preset (5 modules)"); | ||
| } | ||
| // 4. Claude Desktop config | ||
| if (existsSync(CLAUDE_CONFIG_PATH)) { | ||
| try { | ||
| const raw = JSON.parse(readFileSync(CLAUDE_CONFIG_PATH, "utf-8")); | ||
| const servers = raw?.mcpServers ?? {}; | ||
| if (servers.imcp) { | ||
| check("Claude Desktop", OK, "imcp entry found"); | ||
| } | ||
| else { | ||
| check("Claude Desktop", WARN, "Config exists but no 'imcp' entry — run: npx @heznpc/imcp init"); | ||
| } | ||
| } | ||
| catch { | ||
| check("Claude Desktop", WARN, `Config parse error: ${CLAUDE_CONFIG_PATH}`); | ||
| } | ||
| } | ||
| else { | ||
| check("Claude Desktop", WARN, "Config not found — run: npx @heznpc/imcp init"); | ||
| } | ||
| // 5. Enabled modules | ||
| const disabledSet = new Set(fileConfig?.disabledModules ?? []); | ||
| const enabledMods = []; | ||
| const disabledMods = []; | ||
| for (const mod of MODULE_NAMES) { | ||
| if (fileConfig) { | ||
| // Explicit config | ||
| if (disabledSet.has(mod)) { | ||
| disabledMods.push(mod); | ||
| } | ||
| else { | ||
| enabledMods.push(mod); | ||
| } | ||
| } | ||
| else { | ||
| // Starter preset | ||
| if (STARTER_MODULES.has(mod)) { | ||
| enabledMods.push(mod); | ||
| } | ||
| else { | ||
| disabledMods.push(mod); | ||
| } | ||
| } | ||
| } | ||
| console.log(""); | ||
| console.log(` \x1b[1mModules\x1b[0m (${enabledMods.length} enabled, ${disabledMods.length} disabled)`); | ||
| for (const mod of MODULE_NAMES) { | ||
| const on = enabledMods.includes(mod); | ||
| console.log(` ${on ? OK : "\x1b[2m-\x1b[0m"} ${mod}${on ? "" : " \x1b[2m(disabled)\x1b[0m"}`); | ||
| } | ||
| // 6. Permission probe (macOS only, skip if not darwin) | ||
| if (platform === "darwin") { | ||
| console.log(""); | ||
| console.log(" \x1b[1mPermissions\x1b[0m"); | ||
| const APP_MAP = { | ||
| notes: "Notes", | ||
| reminders: "Reminders", | ||
| calendar: "Calendar", | ||
| contacts: "Contacts", | ||
| mail: "Mail", | ||
| messages: "Messages", | ||
| music: "Music", | ||
| finder: "Finder", | ||
| safari: "Safari", | ||
| system: "System Events", | ||
| photos: "Photos", | ||
| tv: "TV", | ||
| }; | ||
| for (const mod of enabledMods) { | ||
| const appName = APP_MAP[mod]; | ||
| if (!appName) | ||
| continue; | ||
| try { | ||
| execSync(`osascript -l JavaScript -e "Application('${appName}'); JSON.stringify({ok:true})"`, { timeout: 5000, stdio: "pipe" }); | ||
| check(` ${appName}`, OK, "Accessible"); | ||
| } | ||
| catch { | ||
| check(` ${appName}`, WARN, "Not accessible — grant permission in System Settings > Privacy"); | ||
| } | ||
| } | ||
| } | ||
| // 7. Swift bridge | ||
| const swiftBridgePath = join(process.cwd(), "swift", ".build", "release", "imcp-bridge"); | ||
| if (existsSync(swiftBridgePath)) { | ||
| check("Swift bridge", OK, "Built"); | ||
| } | ||
| else { | ||
| check("Swift bridge", WARN, "Not built — run: npm run swift-build (optional, for EventKit/PhotoKit/Intelligence)"); | ||
| } | ||
| console.log(""); | ||
| } | ||
| //# sourceMappingURL=doctor.js.map |
| {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * `npx @heznpc/imcp init` — Interactive setup wizard. | ||
| * | ||
| * 1. Choose modules (toggle-style) | ||
| * 2. Write ~/.config/imcp/config.json | ||
| * 3. Patch Claude Desktop config (auto-detect path) | ||
| */ | ||
| export declare function runInit(): Promise<void>; |
+145
| /** | ||
| * `npx @heznpc/imcp init` — Interactive setup wizard. | ||
| * | ||
| * 1. Choose modules (toggle-style) | ||
| * 2. Write ~/.config/imcp/config.json | ||
| * 3. Patch Claude Desktop config (auto-detect path) | ||
| */ | ||
| import { createInterface } from "node:readline"; | ||
| import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs"; | ||
| import { join } from "node:path"; | ||
| import { MODULE_NAMES, STARTER_MODULES } from "../shared/config.js"; | ||
| const HOME = process.env.HOME ?? process.env.USERPROFILE ?? ""; | ||
| const CLAUDE_CONFIG_PATH = join(HOME, "Library", "Application Support", "Claude", "claude_desktop_config.json"); | ||
| const IMCP_CONFIG_DIR = join(HOME, ".config", "imcp"); | ||
| const IMCP_CONFIG_PATH = join(IMCP_CONFIG_DIR, "config.json"); | ||
| const MODULE_LABELS = { | ||
| notes: "Notes", | ||
| reminders: "Reminders", | ||
| calendar: "Calendar", | ||
| contacts: "Contacts", | ||
| mail: "Mail", | ||
| messages: "Messages", | ||
| music: "Music", | ||
| finder: "Finder", | ||
| safari: "Safari", | ||
| system: "System", | ||
| photos: "Photos", | ||
| shortcuts: "Shortcuts", | ||
| intelligence: "Intelligence", | ||
| tv: "TV", | ||
| }; | ||
| function ask(rl, question) { | ||
| return new Promise((resolve) => rl.question(question, resolve)); | ||
| } | ||
| function printModules(enabled) { | ||
| const cols = 3; | ||
| const mods = [...MODULE_NAMES]; | ||
| const rows = Math.ceil(mods.length / cols); | ||
| console.log(""); | ||
| for (let r = 0; r < rows; r++) { | ||
| const parts = []; | ||
| for (let c = 0; c < cols; c++) { | ||
| const idx = r + c * rows; | ||
| if (idx >= mods.length) | ||
| break; | ||
| const mod = mods[idx]; | ||
| const num = String(idx + 1).padStart(2, " "); | ||
| const check = enabled.has(mod) ? "\x1b[32m✓\x1b[0m" : " "; | ||
| const label = MODULE_LABELS[mod] ?? mod; | ||
| parts.push(` [${num}] ${check} ${label.padEnd(14)}`); | ||
| } | ||
| console.log(parts.join("")); | ||
| } | ||
| console.log(""); | ||
| } | ||
| export async function runInit() { | ||
| const rl = createInterface({ input: process.stdin, output: process.stdout }); | ||
| console.log(""); | ||
| console.log("\x1b[1m\x1b[36m iMcp Setup Wizard\x1b[0m"); | ||
| console.log("\x1b[2m Connect your Mac to any AI via MCP\x1b[0m"); | ||
| console.log(""); | ||
| // --- Step 1: Module selection --- | ||
| const enabled = new Set(STARTER_MODULES); | ||
| console.log(" Which modules would you like to enable?"); | ||
| console.log(" \x1b[2mToggle: type a number (e.g. \"6\")\x1b[0m"); | ||
| console.log(" \x1b[2mPresets: \"all\" = enable all, \"starter\" = core 5\x1b[0m"); | ||
| console.log(" \x1b[2mDone: press Enter with empty input\x1b[0m"); | ||
| printModules(enabled); | ||
| for (;;) { | ||
| const input = (await ask(rl, " > ")).trim().toLowerCase(); | ||
| if (input === "") | ||
| break; | ||
| if (input === "all") { | ||
| for (const m of MODULE_NAMES) | ||
| enabled.add(m); | ||
| printModules(enabled); | ||
| continue; | ||
| } | ||
| if (input === "starter") { | ||
| enabled.clear(); | ||
| for (const m of STARTER_MODULES) | ||
| enabled.add(m); | ||
| printModules(enabled); | ||
| continue; | ||
| } | ||
| const num = parseInt(input, 10); | ||
| if (num >= 1 && num <= MODULE_NAMES.length) { | ||
| const mod = MODULE_NAMES[num - 1]; | ||
| if (enabled.has(mod)) { | ||
| enabled.delete(mod); | ||
| } | ||
| else { | ||
| enabled.add(mod); | ||
| } | ||
| printModules(enabled); | ||
| continue; | ||
| } | ||
| console.log(" \x1b[33mType a number (1-13), \"all\", \"starter\", or Enter to continue.\x1b[0m"); | ||
| } | ||
| // --- Step 2: Write config.json --- | ||
| const disabledModules = MODULE_NAMES.filter((m) => !enabled.has(m)); | ||
| console.log(""); | ||
| process.stdout.write(" Writing config..."); | ||
| mkdirSync(IMCP_CONFIG_DIR, { recursive: true }); | ||
| const configPayload = { | ||
| disabledModules, | ||
| includeShared: false, | ||
| allowSendMessages: true, | ||
| allowSendMail: true, | ||
| }; | ||
| writeFileSync(IMCP_CONFIG_PATH, JSON.stringify(configPayload, null, 2) + "\n"); | ||
| console.log(` \x1b[32m✓\x1b[0m ${IMCP_CONFIG_PATH}`); | ||
| // --- Step 3: Patch Claude Desktop config --- | ||
| process.stdout.write(" Configuring Claude Desktop..."); | ||
| const imcpEntry = { | ||
| command: "npx", | ||
| args: ["-y", "@heznpc/imcp"], | ||
| }; | ||
| try { | ||
| let existing = {}; | ||
| if (existsSync(CLAUDE_CONFIG_PATH)) { | ||
| existing = JSON.parse(readFileSync(CLAUDE_CONFIG_PATH, "utf-8")); | ||
| } | ||
| const servers = existing.mcpServers ?? {}; | ||
| servers.imcp = imcpEntry; | ||
| existing.mcpServers = servers; | ||
| // Ensure parent directory exists | ||
| mkdirSync(join(CLAUDE_CONFIG_PATH, ".."), { recursive: true }); | ||
| writeFileSync(CLAUDE_CONFIG_PATH, JSON.stringify(existing, null, 2) + "\n"); | ||
| console.log(" \x1b[32m✓\x1b[0m"); | ||
| } | ||
| catch (e) { | ||
| console.log(` \x1b[33m⚠\x1b[0m ${e instanceof Error ? e.message : String(e)}`); | ||
| console.log(""); | ||
| console.log(" Add this to your Claude Desktop config manually:"); | ||
| console.log(` \x1b[2m${JSON.stringify({ mcpServers: { imcp: imcpEntry } }, null, 2)}\x1b[0m`); | ||
| } | ||
| // --- Done --- | ||
| console.log(""); | ||
| console.log(` \x1b[32m✓\x1b[0m Setup complete! ${enabled.size} modules enabled.`); | ||
| console.log(" \x1b[2mRestart Claude Desktop to connect iMcp.\x1b[0m"); | ||
| console.log(""); | ||
| rl.close(); | ||
| } | ||
| //# sourceMappingURL=init.js.map |
| {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"} |
| import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; | ||
| import { ImcpConfig } from "../shared/config.js"; | ||
| /** | ||
| * Cross-module tools that leverage MCP Sampling to delegate | ||
| * intelligence to the client's LLM — no API keys needed. | ||
| */ | ||
| export declare function registerCrossTools(mcpServer: McpServer, config: ImcpConfig): void; |
| import { z } from "zod"; | ||
| import { ok, err } from "../shared/result.js"; | ||
| import { buildSnapshot } from "../shared/resources.js"; | ||
| import { isModuleEnabled } from "../shared/config.js"; | ||
| /** | ||
| * Cross-module tools that leverage MCP Sampling to delegate | ||
| * intelligence to the client's LLM — no API keys needed. | ||
| */ | ||
| export function registerCrossTools(mcpServer, config) { | ||
| const lowServer = mcpServer.server; | ||
| const enabled = (mod) => isModuleEnabled(config, mod); | ||
| mcpServer.registerTool("summarize_context", { | ||
| title: "Summarize Context", | ||
| description: "Collect context from all enabled Apple apps and ask the client's LLM to produce a concise briefing. " + | ||
| "Uses MCP Sampling — works with any LLM the client is using. No API keys required.", | ||
| inputSchema: { | ||
| focus: z | ||
| .string() | ||
| .optional() | ||
| .describe("Optional focus area (e.g. 'meetings', 'overdue tasks', 'project X')"), | ||
| }, | ||
| annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }, | ||
| }, async ({ focus }) => { | ||
| // 1. Build context snapshot directly | ||
| let snapshotText; | ||
| try { | ||
| snapshotText = await buildSnapshot(enabled, "standard"); | ||
| } | ||
| catch (e) { | ||
| return err(`Failed to build context snapshot: ${e instanceof Error ? e.message : String(e)}`); | ||
| } | ||
| if (!snapshotText || snapshotText === "{}") { | ||
| return err("Context snapshot is empty. Are any modules enabled?"); | ||
| } | ||
| // 2. Use MCP Sampling to ask the client's LLM for a summary | ||
| const systemPrompt = [ | ||
| "You are a personal assistant summarizing a user's Apple ecosystem context.", | ||
| "Be concise and actionable. Prioritize time-sensitive items.", | ||
| "Format: short paragraphs, no bullet points exceeding 5 items.", | ||
| focus ? `Focus especially on: ${focus}` : "", | ||
| ] | ||
| .filter(Boolean) | ||
| .join(" "); | ||
| try { | ||
| const result = await lowServer.createMessage({ | ||
| messages: [ | ||
| { | ||
| role: "user", | ||
| content: { | ||
| type: "text", | ||
| text: `Here is my current Apple ecosystem context:\n\n${snapshotText}\n\nPlease give me a concise briefing of what I need to know right now.`, | ||
| }, | ||
| }, | ||
| ], | ||
| systemPrompt, | ||
| maxTokens: 500, | ||
| modelPreferences: { | ||
| speedPriority: 0.8, | ||
| intelligencePriority: 0.5, | ||
| costPriority: 0.8, | ||
| }, | ||
| }); | ||
| const text = result.content.type === "text" | ||
| ? result.content.text | ||
| : JSON.stringify(result.content); | ||
| return ok({ briefing: text, model: result.model }); | ||
| } | ||
| catch (e) { | ||
| const msg = e instanceof Error ? e.message : String(e); | ||
| if (msg.includes("not supported") || msg.includes("sampling")) { | ||
| return ok({ | ||
| briefing: null, | ||
| fallback: "Client does not support MCP Sampling. Returning raw context snapshot.", | ||
| snapshot: JSON.parse(snapshotText), | ||
| }); | ||
| } | ||
| return err(`Sampling failed: ${msg}`); | ||
| } | ||
| }); | ||
| } | ||
| //# sourceMappingURL=tools.js.map |
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/cross/tools.ts"],"names":[],"mappings":"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"} |
| export declare function listPlaylistsScript(): string; | ||
| export declare function listTracksScript(playlist: string, limit: number): string; | ||
| export declare function nowPlayingScript(): string; | ||
| export declare function playbackControlScript(action: string): string; | ||
| export declare function searchTracksScript(query: string, limit: number): string; | ||
| export declare function playTrackScript(trackName: string): string; |
| // JXA scripts for Apple TV app automation. | ||
| import { esc } from "../shared/esc.js"; | ||
| export function listPlaylistsScript() { | ||
| return ` | ||
| const TV = Application('TV'); | ||
| const playlists = TV.playlists(); | ||
| const result = []; | ||
| for (let i = 0; i < playlists.length; i++) { | ||
| try { | ||
| result.push({ | ||
| id: playlists[i].id(), | ||
| name: playlists[i].name(), | ||
| duration: playlists[i].duration(), | ||
| trackCount: playlists[i].tracks.length | ||
| }); | ||
| } catch(e) {} | ||
| } | ||
| JSON.stringify(result); | ||
| `; | ||
| } | ||
| export function listTracksScript(playlist, limit) { | ||
| return ` | ||
| const TV = Application('TV'); | ||
| const pls = TV.playlists.whose({name: '${esc(playlist)}'})(); | ||
| if (pls.length === 0) throw new Error('Playlist not found: ${esc(playlist)}'); | ||
| const tracks = pls[0].tracks(); | ||
| const count = Math.min(tracks.length, ${limit}); | ||
| const result = []; | ||
| for (let i = 0; i < count; i++) { | ||
| try { | ||
| const t = tracks[i]; | ||
| result.push({ | ||
| id: t.id(), | ||
| name: t.name(), | ||
| artist: t.artist(), | ||
| album: t.album(), | ||
| duration: t.duration(), | ||
| genre: t.genre(), | ||
| year: t.year() | ||
| }); | ||
| } catch(e) {} | ||
| } | ||
| JSON.stringify({total: tracks.length, returned: result.length, tracks: result}); | ||
| `; | ||
| } | ||
| export function nowPlayingScript() { | ||
| return ` | ||
| const TV = Application('TV'); | ||
| const state = TV.playerState(); | ||
| if (state === 'stopped') { | ||
| JSON.stringify({playerState: 'stopped', track: null}); | ||
| } else { | ||
| const t = TV.currentTrack; | ||
| JSON.stringify({ | ||
| playerState: state, | ||
| track: { | ||
| name: t.name(), | ||
| show: t.show(), | ||
| seasonNumber: t.seasonNumber(), | ||
| episodeNumber: t.episodeNumber(), | ||
| duration: t.duration(), | ||
| playerPosition: TV.playerPosition() | ||
| } | ||
| }); | ||
| } | ||
| `; | ||
| } | ||
| const ALLOWED_ACTIONS = new Set(["play", "pause", "nextTrack", "previousTrack"]); | ||
| export function playbackControlScript(action) { | ||
| if (!ALLOWED_ACTIONS.has(action)) { | ||
| throw new Error(`Invalid playback action: ${action}`); | ||
| } | ||
| return ` | ||
| const TV = Application('TV'); | ||
| TV.${action}(); | ||
| const state = TV.playerState(); | ||
| JSON.stringify({action: '${action}', playerState: state}); | ||
| `; | ||
| } | ||
| export function searchTracksScript(query, limit) { | ||
| return ` | ||
| const TV = Application('TV'); | ||
| const lib = TV.playlists.whose({name: 'Library'})(); | ||
| if (lib.length === 0) { | ||
| JSON.stringify({returned: 0, tracks: []}); | ||
| } else { | ||
| const tracks = lib[0].tracks(); | ||
| const q = '${esc(query)}'.toLowerCase(); | ||
| const result = []; | ||
| for (let i = 0; i < tracks.length && result.length < ${limit}; i++) { | ||
| try { | ||
| const name = tracks[i].name() || ''; | ||
| const show = tracks[i].show() || ''; | ||
| if (name.toLowerCase().includes(q) || show.toLowerCase().includes(q)) { | ||
| result.push({ | ||
| id: tracks[i].id(), | ||
| name: name, | ||
| show: show, | ||
| seasonNumber: tracks[i].seasonNumber(), | ||
| episodeNumber: tracks[i].episodeNumber(), | ||
| duration: tracks[i].duration() | ||
| }); | ||
| } | ||
| } catch(e) {} | ||
| } | ||
| JSON.stringify({returned: result.length, tracks: result}); | ||
| } | ||
| `; | ||
| } | ||
| export function playTrackScript(trackName) { | ||
| return ` | ||
| const TV = Application('TV'); | ||
| const lib = TV.playlists.whose({name: 'Library'})(); | ||
| if (lib.length === 0) throw new Error('Library not found'); | ||
| const tracks = lib[0].tracks.whose({name: '${esc(trackName)}'})(); | ||
| if (tracks.length === 0) throw new Error('Track not found: ${esc(trackName)}'); | ||
| tracks[0].play(); | ||
| JSON.stringify({playing: true, track: tracks[0].name()}); | ||
| `; | ||
| } | ||
| //# sourceMappingURL=scripts.js.map |
| {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/tv/scripts.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;GAeN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,KAAa;IAC9D,OAAO;;6CAEoC,GAAG,CAAC,QAAQ,CAAC;iEACO,GAAG,CAAC,QAAQ,CAAC;;4CAElC,KAAK;;;;;;;;;;;;;;;;;GAiB9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;GAmBN,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;AAEjF,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO;;SAEA,MAAM;;+BAEgB,MAAM;GAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,KAAa;IAC7D,OAAO;;;;;;;mBAOU,GAAG,CAAC,KAAK,CAAC;;6DAEgC,KAAK;;;;;;;;;;;;;;;;;;GAkB/D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO;;;;iDAIwC,GAAG,CAAC,SAAS,CAAC;iEACE,GAAG,CAAC,SAAS,CAAC;;;GAG5E,CAAC;AACJ,CAAC"} |
| import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; | ||
| import type { ImcpConfig } from "../shared/config.js"; | ||
| export declare function registerTvTools(server: McpServer, _config: ImcpConfig): void; |
| import { z } from "zod"; | ||
| import { runJxa } from "../shared/jxa.js"; | ||
| import { ok, err } from "../shared/result.js"; | ||
| import { listPlaylistsScript, listTracksScript, nowPlayingScript, playbackControlScript, searchTracksScript, playTrackScript, } from "./scripts.js"; | ||
| export function registerTvTools(server, _config) { | ||
| server.registerTool("tv_list_playlists", { | ||
| title: "List TV Playlists", | ||
| description: "List all playlists (libraries) in Apple TV app.", | ||
| inputSchema: {}, | ||
| annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }, | ||
| }, async () => { | ||
| try { | ||
| return ok(await runJxa(listPlaylistsScript())); | ||
| } | ||
| catch (e) { | ||
| return err(`Failed to list TV playlists: ${e instanceof Error ? e.message : String(e)}`); | ||
| } | ||
| }); | ||
| server.registerTool("tv_list_tracks", { | ||
| title: "List TV Tracks", | ||
| description: "List movies/episodes in a TV playlist.", | ||
| inputSchema: { | ||
| playlist: z.string().describe("Playlist name (e.g. 'Library', 'Movies')"), | ||
| limit: z.number().int().min(1).max(200).optional().default(50).describe("Max items (default: 50)"), | ||
| }, | ||
| annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }, | ||
| }, async ({ playlist, limit }) => { | ||
| try { | ||
| return ok(await runJxa(listTracksScript(playlist, limit))); | ||
| } | ||
| catch (e) { | ||
| return err(`Failed to list TV tracks: ${e instanceof Error ? e.message : String(e)}`); | ||
| } | ||
| }); | ||
| server.registerTool("tv_now_playing", { | ||
| title: "TV Now Playing", | ||
| description: "Get currently playing content in Apple TV app.", | ||
| inputSchema: {}, | ||
| annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }, | ||
| }, async () => { | ||
| try { | ||
| return ok(await runJxa(nowPlayingScript())); | ||
| } | ||
| catch (e) { | ||
| return err(`Failed to get TV now playing: ${e instanceof Error ? e.message : String(e)}`); | ||
| } | ||
| }); | ||
| server.registerTool("tv_playback_control", { | ||
| title: "TV Playback Control", | ||
| description: "Control Apple TV playback: play, pause, next, previous.", | ||
| inputSchema: { | ||
| action: z.enum(["play", "pause", "nextTrack", "previousTrack"]).describe("Playback action"), | ||
| }, | ||
| annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false }, | ||
| }, async ({ action }) => { | ||
| try { | ||
| return ok(await runJxa(playbackControlScript(action))); | ||
| } | ||
| catch (e) { | ||
| return err(`Failed to control TV playback: ${e instanceof Error ? e.message : String(e)}`); | ||
| } | ||
| }); | ||
| server.registerTool("tv_search", { | ||
| title: "Search TV Library", | ||
| description: "Search movies and TV shows by name or show title.", | ||
| inputSchema: { | ||
| query: z.string().describe("Search keyword"), | ||
| limit: z.number().int().min(1).max(100).optional().default(20).describe("Max results (default: 20)"), | ||
| }, | ||
| annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }, | ||
| }, async ({ query, limit }) => { | ||
| try { | ||
| return ok(await runJxa(searchTracksScript(query, limit))); | ||
| } | ||
| catch (e) { | ||
| return err(`Failed to search TV: ${e instanceof Error ? e.message : String(e)}`); | ||
| } | ||
| }); | ||
| server.registerTool("tv_play", { | ||
| title: "Play TV Content", | ||
| description: "Play a movie or episode by name.", | ||
| inputSchema: { | ||
| name: z.string().describe("Movie or episode name"), | ||
| }, | ||
| annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false }, | ||
| }, async ({ name }) => { | ||
| try { | ||
| return ok(await runJxa(playTrackScript(name))); | ||
| } | ||
| catch (e) { | ||
| return err(`Failed to play TV content: ${e instanceof Error ? e.message : String(e)}`); | ||
| } | ||
| }); | ||
| } | ||
| //# sourceMappingURL=tools.js.map |
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/tv/tools.ts"],"names":[],"mappings":"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"} |
@@ -45,3 +45,3 @@ import { z } from "zod"; | ||
| }, | ||
| annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false }, | ||
| annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false }, | ||
| }, async ({ path, tags }) => { | ||
@@ -48,0 +48,0 @@ try { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/finder/tools.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/finder/tools.ts"],"names":[],"mappings":"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"} |
+18
-2
| #!/usr/bin/env node | ||
| // CLI subcommands: route before heavy imports | ||
| const _sub = process.argv[2]; | ||
| if (_sub === "init" || _sub === "doctor") { | ||
| const mod = _sub === "init" | ||
| ? await import("./cli/init.js") | ||
| : await import("./cli/doctor.js"); | ||
| await (_sub === "init" ? mod.runInit() : mod.runDoctor()); | ||
| process.exit(0); | ||
| } | ||
| import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; | ||
@@ -24,3 +33,5 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; | ||
| import { registerIntelligenceTools } from "./intelligence/tools.js"; | ||
| import { registerTvTools } from "./tv/tools.js"; | ||
| import { registerCrossPrompts } from "./cross/prompts.js"; | ||
| import { registerCrossTools } from "./cross/tools.js"; | ||
| import { registerResources } from "./shared/resources.js"; | ||
@@ -54,3 +65,3 @@ import { registerSetupTools } from "./shared/setup.js"; | ||
| name: "imcp", | ||
| version: "1.1.0", | ||
| version: "1.2.0", | ||
| }); | ||
@@ -120,6 +131,11 @@ // Install HITL guard before any tool registrations | ||
| } | ||
| // Apple TV | ||
| if (isModuleEnabled(config, "tv")) { | ||
| registerTvTools(server, config); | ||
| } | ||
| // Cross-module workflows | ||
| registerCrossPrompts(server); | ||
| registerCrossTools(server, config); | ||
| // MCP Resources | ||
| registerResources(server); | ||
| registerResources(server, config); | ||
| // Setup & diagnostics | ||
@@ -126,0 +142,0 @@ registerSetupTools(server, config); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} |
@@ -9,2 +9,4 @@ export declare function listMailboxesScript(): string; | ||
| export declare function moveMessageScript(id: string, targetMailbox: string, targetAccount?: string): string; | ||
| export declare function sendMailScript(to: string[], subject: string, body: string, cc?: string[], bcc?: string[], account?: string): string; | ||
| export declare function replyMailScript(id: string, body: string, replyAll: boolean): string; | ||
| export declare function listAccountsScript(): string; |
+42
-0
@@ -202,2 +202,44 @@ // JXA scripts for Apple Mail automation. | ||
| } | ||
| export function sendMailScript(to, subject, body, cc, bcc, account) { | ||
| const toList = to.map((a) => `msg.toRecipients.push(Mail.Recipient({address: '${esc(a)}'}));`).join("\n "); | ||
| const ccList = (cc ?? []).map((a) => `msg.ccRecipients.push(Mail.Recipient({address: '${esc(a)}'}));`).join("\n "); | ||
| const bccList = (bcc ?? []).map((a) => `msg.bccRecipients.push(Mail.Recipient({address: '${esc(a)}'}));`).join("\n "); | ||
| const acctLine = account | ||
| ? `msg.sender = '${esc(account)}';` | ||
| : ""; | ||
| return ` | ||
| const Mail = Application('Mail'); | ||
| const msg = Mail.OutgoingMessage({ | ||
| subject: '${esc(subject)}', | ||
| content: '${esc(body)}' | ||
| }); | ||
| Mail.outgoingMessages.push(msg); | ||
| ${toList} | ||
| ${ccList} | ||
| ${bccList} | ||
| ${acctLine} | ||
| msg.send(); | ||
| JSON.stringify({sent: true, to: ${JSON.stringify(to)}, subject: '${esc(subject)}'}); | ||
| `; | ||
| } | ||
| export function replyMailScript(id, body, replyAll) { | ||
| return ` | ||
| const Mail = Application('Mail'); | ||
| const accounts = Mail.accounts(); | ||
| let found = null; | ||
| for (const acct of accounts) { | ||
| if (found) break; | ||
| const boxes = acct.mailboxes(); | ||
| for (const box of boxes) { | ||
| const msgs = box.messages.whose({id: Number('${esc(id)}')})(); | ||
| if (msgs.length > 0) { found = msgs[0]; break; } | ||
| } | ||
| } | ||
| if (!found) throw new Error('Message not found'); | ||
| const reply = Mail.reply(found, {openingWindow: false, replyToAll: ${replyAll}}); | ||
| reply.content = '${esc(body)}' + '\\n\\n' + reply.content(); | ||
| reply.send(); | ||
| JSON.stringify({replied: true, id: Number('${esc(id)}'), replyAll: ${replyAll}}); | ||
| `; | ||
| } | ||
| export function listAccountsScript() { | ||
@@ -204,0 +246,0 @@ return ` |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/mail/scripts.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;GAgBN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,KAAa,EACb,OAAgB;IAEhB,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,6CAA6C,GAAG,CAAC,OAAO,CAAC,sEAAsE,GAAG,CAAC,OAAO,CAAC,4BAA4B;QACzK,CAAC,CAAC,kCAAkC,CAAC;IACvC,OAAO;;MAEH,UAAU;iDACiC,GAAG,CAAC,OAAO,CAAC;kEACK,GAAG,CAAC,OAAO,CAAC;;;0CAGpC,KAAK;;;;;;;;;;;;;;GAc5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAU,EAAE,SAAiB;IAC7D,OAAO;;;;;;;uDAO8C,GAAG,CAAC,EAAE,CAAC;;;;;;;;;;;;;;;gDAed,SAAS;;;;;;;;;;;GAWtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,OAAe,EACf,KAAa;IAEb,OAAO;;;iBAGQ,GAAG,CAAC,KAAK,CAAC;;;mDAGwB,GAAG,CAAC,OAAO,CAAC;;;2DAGJ,KAAK;;;;;;;;;;;;;6BAanC,KAAK;;;GAG/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU,EAAE,IAAa;IACtD,OAAO;;;;;;;;uDAQ8C,GAAG,CAAC,EAAE,CAAC;;iCAE7B,IAAI;;;;;;;yCAOI,IAAI;GAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAU,EAAE,OAAgB;IAC5D,OAAO;;;;;;;;uDAQ8C,GAAG,CAAC,EAAE,CAAC;;oCAE1B,OAAO;;;;;;;4CAOC,OAAO;GAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;GAiBN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAAU,EAAE,aAAqB,EAAE,aAAsB;IACzF,MAAM,YAAY,GAAG,aAAa;QAChC,CAAC,CAAC,8CAA8C,GAAG,CAAC,aAAa,CAAC,iIAAiI,GAAG,CAAC,aAAa,CAAC,QAAQ;QAC7N,CAAC,CAAC,2FAA2F,GAAG,CAAC,aAAa,CAAC,mDAAmD,CAAC;IACrK,OAAO;;MAEH,YAAY;0EACwD,GAAG,CAAC,aAAa,CAAC;;;;;;;;uDAQrC,GAAG,CAAC,EAAE,CAAC;;;;;;;;;+CASf,GAAG,CAAC,EAAE,CAAC,uBAAuB,GAAG,CAAC,aAAa,CAAC;GAC5F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;GASN,CAAC;AACJ,CAAC"} | ||
| {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/mail/scripts.ts"],"names":[],"mappings":"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"} |
| import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; | ||
| import type { ImcpConfig } from "../shared/config.js"; | ||
| export declare function registerMailTools(server: McpServer, _config: ImcpConfig): void; | ||
| export declare function registerMailTools(server: McpServer, config: ImcpConfig): void; |
+45
-4
| import { z } from "zod"; | ||
| import { runJxa } from "../shared/jxa.js"; | ||
| import { ok, err } from "../shared/result.js"; | ||
| import { listMailboxesScript, listMessagesScript, readMessageScript, searchMessagesScript, markReadScript, flagMessageScript, getUnreadCountScript, moveMessageScript, listAccountsScript, } from "./scripts.js"; | ||
| export function registerMailTools(server, _config) { | ||
| // _config.allowSendMail is reserved for future send/compose tools. | ||
| // Current mail tools are read-only or organizational (no outbound mail). | ||
| import { listMailboxesScript, listMessagesScript, readMessageScript, searchMessagesScript, markReadScript, flagMessageScript, getUnreadCountScript, moveMessageScript, listAccountsScript, sendMailScript, replyMailScript, } from "./scripts.js"; | ||
| export function registerMailTools(server, config) { | ||
| const { allowSendMail } = config; | ||
| server.registerTool("list_mailboxes", { | ||
@@ -146,3 +145,45 @@ title: "List Mailboxes", | ||
| }); | ||
| // ── Send tools (gated by allowSendMail) ── | ||
| server.registerTool("send_mail", { | ||
| title: "Send Email", | ||
| description: "Compose and send an email via Apple Mail. Requires allowSendMail config.", | ||
| inputSchema: { | ||
| to: z.array(z.string()).min(1).describe("Recipient email addresses"), | ||
| subject: z.string().describe("Email subject"), | ||
| body: z.string().describe("Email body text"), | ||
| cc: z.array(z.string()).optional().describe("CC recipients"), | ||
| bcc: z.array(z.string()).optional().describe("BCC recipients"), | ||
| account: z.string().optional().describe("Sender email address (uses default account if omitted)"), | ||
| }, | ||
| annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true }, | ||
| }, async ({ to, subject, body, cc, bcc, account }) => { | ||
| if (!allowSendMail) | ||
| return err("Sending mail is disabled. Set allowSendMail: true in config or IMCP_ALLOW_SEND_MAIL=true."); | ||
| try { | ||
| return ok(await runJxa(sendMailScript(to, subject, body, cc, bcc, account))); | ||
| } | ||
| catch (e) { | ||
| return err(`Failed to send mail: ${e instanceof Error ? e.message : String(e)}`); | ||
| } | ||
| }); | ||
| server.registerTool("reply_mail", { | ||
| title: "Reply to Email", | ||
| description: "Reply to an email message. Requires allowSendMail config.", | ||
| inputSchema: { | ||
| id: z.string().describe("Original message ID to reply to"), | ||
| body: z.string().describe("Reply body text"), | ||
| replyAll: z.boolean().optional().default(false).describe("Reply to all recipients (default: false)"), | ||
| }, | ||
| annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true }, | ||
| }, async ({ id, body, replyAll }) => { | ||
| if (!allowSendMail) | ||
| return err("Sending mail is disabled. Set allowSendMail: true in config or IMCP_ALLOW_SEND_MAIL=true."); | ||
| try { | ||
| return ok(await runJxa(replyMailScript(id, body, replyAll))); | ||
| } | ||
| catch (e) { | ||
| return err(`Failed to reply: ${e instanceof Error ? e.message : String(e)}`); | ||
| } | ||
| }); | ||
| } | ||
| //# sourceMappingURL=tools.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mail/tools.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mail/tools.ts"],"names":[],"mappings":"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"} |
@@ -8,3 +8,3 @@ export type HitlLevel = "off" | "destructive-only" | "all-writes" | "all"; | ||
| } | ||
| export declare const MODULE_NAMES: readonly ["notes", "reminders", "calendar", "contacts", "mail", "messages", "music", "finder", "safari", "system", "photos", "shortcuts", "intelligence"]; | ||
| export declare const MODULE_NAMES: readonly ["notes", "reminders", "calendar", "contacts", "mail", "messages", "music", "finder", "safari", "system", "photos", "shortcuts", "intelligence", "tv"]; | ||
| /** Core modules enabled by default when no config.json exists */ | ||
@@ -11,0 +11,0 @@ export declare const STARTER_MODULES: ReadonlySet<string>; |
@@ -18,2 +18,3 @@ import { readFileSync } from "node:fs"; | ||
| "intelligence", | ||
| "tv", | ||
| ]; | ||
@@ -20,0 +21,0 @@ /** Core modules enabled by default when no config.json exists */ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"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"} |
| import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; | ||
| import { ImcpConfig } from "./config.js"; | ||
| interface DepthConfig { | ||
| notes: number; | ||
| events: number; | ||
| reminders: number; | ||
| previewLen: number; | ||
| } | ||
| /** | ||
| * Register MCP resources that expose live Apple data for direct client reads. | ||
| */ | ||
| export declare function registerResources(server: McpServer): void; | ||
| export declare function registerResources(server: McpServer, config?: ImcpConfig): void; | ||
| export declare function buildSnapshot(enabled: (mod: string) => boolean, depth: DepthConfig | string): Promise<string>; | ||
| export {}; |
+199
-45
| import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; | ||
| import { runJxa } from "./jxa.js"; | ||
| import { listEventsScript } from "../calendar/scripts.js"; | ||
| import { listEventsScript, getUpcomingEventsScript } from "../calendar/scripts.js"; | ||
| import { listRemindersScript } from "../reminders/scripts.js"; | ||
| import { nowPlayingScript } from "../music/scripts.js"; | ||
| import { getClipboardScript, getFrontmostAppScript } from "../system/scripts.js"; | ||
| import { getUnreadCountScript } from "../mail/scripts.js"; | ||
| import { isModuleEnabled } from "./config.js"; | ||
| const DEPTH = { | ||
| brief: { notes: 3, events: 5, reminders: 3, previewLen: 80 }, | ||
| standard: { notes: 5, events: 10, reminders: 5, previewLen: 200 }, | ||
| full: { notes: 15, events: 30, reminders: 15, previewLen: 500 }, | ||
| }; | ||
| /** | ||
| * Register MCP resources that expose live Apple data for direct client reads. | ||
| */ | ||
| export function registerResources(server) { | ||
| // ── notes://recent — fixed resource: 10 most recently modified notes ── | ||
| server.registerResource("recent-notes", "notes://recent", { | ||
| description: "List of the 10 most recently modified Apple Notes", | ||
| export function registerResources(server, config) { | ||
| const enabled = (mod) => !config || isModuleEnabled(config, mod); | ||
| // ── Notes ── | ||
| if (enabled("notes")) { | ||
| server.registerResource("recent-notes", "notes://recent", { description: "10 most recently modified Apple Notes", mimeType: "application/json" }, async (uri) => ({ | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(await fetchRecentNotes(10), null, 2) }], | ||
| })); | ||
| server.registerResource("recent-notes-count", new ResourceTemplate("notes://recent/{count}", { list: undefined }), { description: "Recently modified Apple Notes (max 50)", mimeType: "application/json" }, async (uri, variables) => { | ||
| const raw = Array.isArray(variables.count) ? variables.count[0] : variables.count; | ||
| const count = Math.max(1, Math.min(Number(raw) || 10, 50)); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(await fetchRecentNotes(count), null, 2) }], | ||
| }; | ||
| }); | ||
| } | ||
| // ── Calendar ── | ||
| if (enabled("calendar")) { | ||
| server.registerResource("today-events", "calendar://today", { description: "Today's Apple Calendar events, sorted by start time", mimeType: "application/json" }, async (uri) => { | ||
| const today = new Date(); | ||
| const start = new Date(today.getFullYear(), today.getMonth(), today.getDate()).toISOString(); | ||
| const end = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1).toISOString(); | ||
| const result = await runJxa(listEventsScript(start, end, 999, 0)); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(result.events, null, 2) }], | ||
| }; | ||
| }); | ||
| server.registerResource("upcoming-events", "calendar://upcoming", { description: "Upcoming Apple Calendar events for the next 7 days", mimeType: "application/json" }, async (uri) => { | ||
| const result = await runJxa(getUpcomingEventsScript(50)); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(result.events, null, 2) }], | ||
| }; | ||
| }); | ||
| } | ||
| // ── Reminders ── | ||
| if (enabled("reminders")) { | ||
| server.registerResource("due-reminders", "reminders://due", { description: "Apple Reminders that are currently due or overdue", mimeType: "application/json" }, async (uri) => { | ||
| const all = await runJxa(listRemindersScript(undefined, false)); | ||
| const now = new Date(); | ||
| const due = all | ||
| .filter((r) => r.dueDate && new Date(r.dueDate) <= now) | ||
| .sort((a, b) => new Date(a.dueDate).getTime() - new Date(b.dueDate).getTime()); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(due, null, 2) }], | ||
| }; | ||
| }); | ||
| server.registerResource("today-reminders", "reminders://today", { description: "Apple Reminders due today (incomplete only)", mimeType: "application/json" }, async (uri) => { | ||
| const all = await runJxa(listRemindersScript(undefined, false)); | ||
| const today = new Date(); | ||
| const startOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate()).getTime(); | ||
| const endOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1).getTime(); | ||
| const todayItems = all.filter((r) => { | ||
| if (!r.dueDate) | ||
| return false; | ||
| const t = new Date(r.dueDate).getTime(); | ||
| return t >= startOfDay && t < endOfDay; | ||
| }); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(todayItems, null, 2) }], | ||
| }; | ||
| }); | ||
| } | ||
| // ── Music ── | ||
| if (enabled("music")) { | ||
| server.registerResource("now-playing", "music://now-playing", { description: "Currently playing track in Apple Music", mimeType: "application/json" }, async (uri) => { | ||
| const result = await runJxa(nowPlayingScript()); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(result, null, 2) }], | ||
| }; | ||
| }); | ||
| } | ||
| // ── System ── | ||
| if (enabled("system")) { | ||
| server.registerResource("clipboard", "system://clipboard", { description: "Current macOS clipboard contents", mimeType: "application/json" }, async (uri) => { | ||
| const result = await runJxa(getClipboardScript()); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(result, null, 2) }], | ||
| }; | ||
| }); | ||
| } | ||
| // ── Mail ── | ||
| if (enabled("mail")) { | ||
| server.registerResource("unread-mail", "mail://unread", { description: "Unread email count across all mailboxes", mimeType: "application/json" }, async (uri) => { | ||
| const result = await runJxa(getUnreadCountScript()); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(result, null, 2) }], | ||
| }; | ||
| }); | ||
| } | ||
| // ── Context Snapshot ── | ||
| server.registerResource("context-snapshot", "context://snapshot", { | ||
| description: "Unified context from all enabled Apple apps — calendar, reminders, notes, mail, music, system — in a single read. Default depth: standard.", | ||
| mimeType: "application/json", | ||
| }, async (uri) => { | ||
| const notes = await fetchRecentNotes(10); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(notes, null, 2) }], | ||
| }; | ||
| }); | ||
| // ── notes://recent/{count} — template: configurable count ── | ||
| server.registerResource("recent-notes-count", new ResourceTemplate("notes://recent/{count}", { list: undefined }), { | ||
| description: "List of recently modified Apple Notes. Use {count} to control how many are returned (max 50).", | ||
| }, async (uri) => ({ | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: await buildSnapshot(enabled, DEPTH.standard) }], | ||
| })); | ||
| server.registerResource("context-snapshot-depth", new ResourceTemplate("context://snapshot/{depth}", { list: undefined }), { | ||
| description: "Unified context snapshot with configurable depth: brief (~500 tokens), standard (~2-4k), full (~5k+).", | ||
| mimeType: "application/json", | ||
| }, async (uri, variables) => { | ||
| const raw = Array.isArray(variables.count) ? variables.count[0] : variables.count; | ||
| const count = Math.max(1, Math.min(Number(raw) || 10, 50)); | ||
| const notes = await fetchRecentNotes(count); | ||
| const raw = (Array.isArray(variables.depth) ? variables.depth[0] : variables.depth); | ||
| const dc = DEPTH[raw] ?? DEPTH.standard; | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(notes, null, 2) }], | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: await buildSnapshot(enabled, dc) }], | ||
| }; | ||
| }); | ||
| // ── calendar://today — today's calendar events (reuses listEventsScript) ── | ||
| server.registerResource("today-events", "calendar://today", { | ||
| description: "Today's Apple Calendar events, sorted by start time", | ||
| mimeType: "application/json", | ||
| }, async (uri) => { | ||
| const today = new Date(); | ||
| const start = new Date(today.getFullYear(), today.getMonth(), today.getDate()).toISOString(); | ||
| const end = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1).toISOString(); | ||
| const result = await runJxa(listEventsScript(start, end, 999, 0)); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(result.events, null, 2) }], | ||
| }; | ||
| }); | ||
| // ── reminders://due — currently due or overdue reminders (reuses listRemindersScript) ── | ||
| server.registerResource("due-reminders", "reminders://due", { | ||
| description: "Apple Reminders that are currently due or overdue", | ||
| mimeType: "application/json", | ||
| }, async (uri) => { | ||
| const all = await runJxa(listRemindersScript(undefined, false)); | ||
| const now = new Date(); | ||
| const due = all | ||
| .filter((r) => r.dueDate && new Date(r.dueDate) <= now) | ||
| .sort((a, b) => new Date(a.dueDate).getTime() - new Date(b.dueDate).getTime()); | ||
| return { | ||
| contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(due, null, 2) }], | ||
| }; | ||
| }); | ||
| } | ||
| export async function buildSnapshot(enabled, depth) { | ||
| const dc = typeof depth === "string" ? (DEPTH[depth] ?? DEPTH.standard) : depth; | ||
| const depthName = dc === DEPTH.brief ? "brief" : dc === DEPTH.full ? "full" : "standard"; | ||
| // Build parallel fetchers for each enabled module | ||
| const tasks = []; | ||
| if (enabled("calendar")) { | ||
| tasks.push({ | ||
| key: "calendar", | ||
| promise: (async () => { | ||
| const today = new Date(); | ||
| const start = new Date(today.getFullYear(), today.getMonth(), today.getDate()).toISOString(); | ||
| const end = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1).toISOString(); | ||
| const result = await runJxa(listEventsScript(start, end, dc.events, 0)); | ||
| return { todayCount: result.events.length, events: result.events.slice(0, dc.events) }; | ||
| })(), | ||
| }); | ||
| } | ||
| if (enabled("reminders")) { | ||
| tasks.push({ | ||
| key: "reminders", | ||
| promise: (async () => { | ||
| const all = await runJxa(listRemindersScript(undefined, false)); | ||
| const now = new Date(); | ||
| const today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); | ||
| const tomorrow = new Date(today.getTime() + 86400000); | ||
| const overdue = all.filter((r) => r.dueDate && new Date(r.dueDate) < today); | ||
| const dueToday = all.filter((r) => { | ||
| if (!r.dueDate) | ||
| return false; | ||
| const t = new Date(r.dueDate).getTime(); | ||
| return t >= today.getTime() && t < tomorrow.getTime(); | ||
| }); | ||
| return { | ||
| overdueCount: overdue.length, | ||
| dueTodayCount: dueToday.length, | ||
| totalIncomplete: all.length, | ||
| overdue: overdue.slice(0, dc.reminders), | ||
| dueToday: dueToday.slice(0, dc.reminders), | ||
| }; | ||
| })(), | ||
| }); | ||
| } | ||
| if (enabled("notes")) { | ||
| tasks.push({ | ||
| key: "notes", | ||
| promise: (async () => { | ||
| const notes = await fetchRecentNotes(dc.notes); | ||
| return { | ||
| recentCount: notes.length, | ||
| notes: notes.map((n) => ({ ...n, preview: n.preview.substring(0, dc.previewLen) })), | ||
| }; | ||
| })(), | ||
| }); | ||
| } | ||
| if (enabled("mail")) { | ||
| tasks.push({ | ||
| key: "mail", | ||
| promise: runJxa(getUnreadCountScript()), | ||
| }); | ||
| } | ||
| if (enabled("music")) { | ||
| tasks.push({ | ||
| key: "music", | ||
| promise: runJxa(nowPlayingScript()).catch(() => ({ playerState: "unavailable" })), | ||
| }); | ||
| } | ||
| if (enabled("system")) { | ||
| tasks.push({ | ||
| key: "system", | ||
| promise: (async () => { | ||
| const [clipboard, frontApp] = await Promise.all([ | ||
| runJxa(getClipboardScript()).catch(() => null), | ||
| runJxa(getFrontmostAppScript()).catch(() => null), | ||
| ]); | ||
| return { clipboard, frontmostApp: frontApp }; | ||
| })(), | ||
| }); | ||
| } | ||
| // Execute all in parallel | ||
| const results = await Promise.allSettled(tasks.map((t) => t.promise)); | ||
| const snapshot = { | ||
| timestamp: new Date().toISOString(), | ||
| depth: depthName, | ||
| }; | ||
| for (let i = 0; i < tasks.length; i++) { | ||
| const r = results[i]; | ||
| snapshot[tasks[i].key] = r.status === "fulfilled" ? r.value : { error: "unavailable" }; | ||
| } | ||
| return JSON.stringify(snapshot, null, 2); | ||
| } | ||
| async function fetchRecentNotes(count) { | ||
@@ -60,0 +214,0 @@ return runJxa(` |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/shared/resources.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/shared/resources.ts"],"names":[],"mappings":"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"} |
@@ -17,2 +17,3 @@ import { runJxa } from "./jxa.js"; | ||
| { module: "messages", name: "Messages", script: "const Messages = Application('Messages'); JSON.stringify({app: 'Messages', accessible: true});" }, | ||
| { module: "tv", name: "TV", script: "const TV = Application('TV'); JSON.stringify({app: 'TV', accessible: true});" }, | ||
| ]; | ||
@@ -19,0 +20,0 @@ export function registerSetupTools(server, config) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/shared/setup.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/shared/setup.ts"],"names":[],"mappings":"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"} |
@@ -90,3 +90,3 @@ import { z } from "zod"; | ||
| destructiveHint: false, | ||
| idempotentHint: false, | ||
| idempotentHint: true, | ||
| openWorldHint: false, | ||
@@ -187,3 +187,3 @@ }, | ||
| annotations: { | ||
| readOnlyHint: false, | ||
| readOnlyHint: true, | ||
| destructiveHint: false, | ||
@@ -190,0 +190,0 @@ idempotentHint: false, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/system/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,OAAmB;IACxE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAAsB,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,4BAA4B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,oEAAoE;QACjF,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SAC3D;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAAmC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,4BAA4B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,4DAA4D;QACzE,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAAsE,eAAe,EAAE,CAAC,CAAC,CAAC;QAClH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,yBAAyB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,yDAAyD;QACtE,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACrF,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SACvE;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAAiD,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1G,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,yBAAyB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAAwB,oBAAoB,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,+BAA+B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,2FAA2F;QACxG,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAA0D,qBAAqB,EAAE,CAAC,CAAC,CAAC;QAC5G,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,gCAAgC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,kFAAkF;QAC/F,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,gCAAgC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,oFAAoF;QACjG,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,8BAA8B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACjE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;SAC3F;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,gCAAgC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,uGAAuG;QACpH,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;YACnG,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC;SAC9J;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,iCAAiC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"} | ||
| {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/system/tools.ts"],"names":[],"mappings":"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"} |
+1
-1
| { | ||
| "name": "@heznpc/imcp", | ||
| "version": "1.1.0", | ||
| "version": "1.2.0", | ||
| "description": "MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, Photos, Shortcuts, System, and Apple Intelligence. Connect any AI to your Mac.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
+177
-210
@@ -7,18 +7,95 @@ # iMcp | ||
| ## Features | ||
| ## Get Started (2 minutes) | ||
| - **110 tools** across 13 modules — full CRUD for Apple apps + system control + Apple Intelligence | ||
| - **20 prompts** — per-app workflows + cross-module + developer workflows (dev-session, debug-loop, build-log) | ||
| - **4 MCP Resources** — live data URIs for notes, calendar, and reminders | ||
| - **JXA + Swift bridge** — JXA for core automation, EventKit/PhotoKit via Swift for advanced features | ||
| - **Recurring events/reminders** — create recurrence rules via EventKit (macOS 26+ Swift bridge) | ||
| - **Photos import/delete** — import and delete photos via PhotoKit (macOS 26+ Swift bridge) | ||
| - **Apple Intelligence** — on-device summarization, rewriting, proofreading (macOS 26+) | ||
| - **Native menubar app** — SwiftUI companion app for status monitoring, permission setup, config copy | ||
| - **One-click setup** — `setup_permissions` tool or menubar app triggers all macOS permission prompts at once | ||
| - **Dual transport** — stdio (default, secure local) + HTTP/SSE (`--http`) for remote agents and registries | ||
| - **Safety annotations** — every tool tagged with readOnly/destructive hints | ||
| ### 1. Install Node.js | ||
| ## Quick Start | ||
| If you don't have Node.js, install it first: | ||
| ```bash | ||
| # Using Homebrew (recommended) | ||
| brew install node | ||
| # Or download from https://nodejs.org (LTS version) | ||
| ``` | ||
| ### 2. Run the Setup Wizard | ||
| ```bash | ||
| npx @heznpc/imcp init | ||
| ``` | ||
| This will: | ||
| - Let you choose which Apple apps to connect (Notes, Calendar, Reminders, etc.) | ||
| - Automatically configure Claude Desktop | ||
| - Save your preferences to `~/.config/imcp/config.json` | ||
| ### 3. Restart Claude Desktop | ||
| That's it! Claude can now read your notes, manage reminders, check your calendar, and more. | ||
| ### Troubleshooting | ||
| ```bash | ||
| npx @heznpc/imcp doctor | ||
| ``` | ||
| Checks Node.js version, config files, Claude Desktop setup, macOS permissions, and module status — all in one command. | ||
| --- | ||
| ## What Can It Do? | ||
| **118 tools** across 14 Apple app modules, **9 MCP resources**, and **20 prompts**: | ||
| | Module | What it does | Tools | | ||
| |--------|-------------|-------| | ||
| | **Notes** | Read, create, search, organize notes and folders | 12 | | ||
| | **Reminders** | Create tasks, set due dates, manage lists | 11 | | ||
| | **Calendar** | View events, create meetings, check schedule | 10 | | ||
| | **Contacts** | Look up people, manage contact info | 10 | | ||
| | **Mail** | Read, search, send, reply to emails | 11 | | ||
| | **Music** | Control playback, search tracks, manage playlists | 9 | | ||
| | **Finder** | Browse files, search with Spotlight, organize | 8 | | ||
| | **Safari** | Read web pages, manage tabs | 8 | | ||
| | **System** | Clipboard, volume, dark mode, screenshots, notifications | 10 | | ||
| | **Photos** | Browse albums, import/delete photos | 9 | | ||
| | **Messages** | View chats, send iMessages | 6 | | ||
| | **Shortcuts** | Run Siri Shortcuts from AI | 4 | | ||
| | **Intelligence** | On-device summarize, rewrite, proofread (macOS 26+) | 3 | | ||
| | **TV** | Browse library, control playback, search content | 6 | | ||
| All tools include MCP annotations (`readOnlyHint`, `destructiveHint`, `openWorldHint`) for client-side safety UI. | ||
| ## Module Presets | ||
| By default, new installations start with 5 core modules (Notes, Reminders, Calendar, Shortcuts, System) to keep things simple. You can enable more anytime: | ||
| ```bash | ||
| # Re-run the setup wizard to change modules | ||
| npx @heznpc/imcp init | ||
| # Or enable all modules at once | ||
| npx @heznpc/imcp --full | ||
| ``` | ||
| Or edit `~/.config/imcp/config.json` directly: | ||
| ```json | ||
| { | ||
| "disabledModules": ["messages", "intelligence"] | ||
| } | ||
| ``` | ||
| ## CLI Commands | ||
| | Command | Description | | ||
| |---------|-------------| | ||
| | `npx @heznpc/imcp init` | Interactive setup wizard | | ||
| | `npx @heznpc/imcp doctor` | Diagnose installation issues | | ||
| | `npx @heznpc/imcp` | Start MCP server (stdio, default) | | ||
| | `npx @heznpc/imcp --full` | Start with all 13 modules enabled | | ||
| | `npx @heznpc/imcp --http` | Start as HTTP server (port 3847) | | ||
| ## Alternative Setup (Manual) | ||
| ### Claude Desktop | ||
@@ -52,18 +129,39 @@ | ||
| npm run build | ||
| node dist/index.js | ||
| ``` | ||
| ### Menubar App (Optional) | ||
| ## Configuration | ||
| A native SwiftUI companion app for server status monitoring and permission setup. | ||
| ### Environment Variables | ||
| ```bash | ||
| cd app && swift build -c release | ||
| # Binary: app/.build/release/iMcpApp | ||
| | Variable | Default | Description | | ||
| |----------|---------|-------------| | ||
| | `IMCP_INCLUDE_SHARED` | `false` | Include shared notes/folders | | ||
| | `IMCP_ALLOW_SEND_MESSAGES` | `true` | Allow sending iMessages | | ||
| | `IMCP_ALLOW_SEND_MAIL` | `true` | Allow sending emails | | ||
| | `IMCP_FULL` | `false` | Enable all modules (ignores preset) | | ||
| | `IMCP_DISABLE_{MODULE}` | — | Disable a specific module (e.g. `IMCP_DISABLE_MUSIC=true`) | | ||
| ### Config File | ||
| `~/.config/imcp/config.json`: | ||
| ```json | ||
| { | ||
| "disabledModules": ["messages", "intelligence"], | ||
| "includeShared": false, | ||
| "allowSendMessages": true, | ||
| "allowSendMail": true, | ||
| "hitl": { | ||
| "level": "destructive-only", | ||
| "timeout": 30 | ||
| } | ||
| } | ||
| ``` | ||
| Features: server status indicator, one-click permission setup, copy Claude config to clipboard. | ||
| ## Advanced Features | ||
| ### HTTP Mode | ||
| Run iMcp as an HTTP server for remote agents, Smithery registry, or multi-client setups: | ||
| Run iMcp as an HTTP server for remote agents or multi-client setups: | ||
@@ -74,13 +172,38 @@ ```bash | ||
| - Endpoint: `POST/GET/DELETE /mcp` | ||
| - Transport: Streamable HTTP with SSE (MCP spec 2024-11-05) | ||
| - Session management via `Mcp-Session-Id` header | ||
| - Default port: 3847 | ||
| ### Human-in-the-Loop (HITL) | ||
| Useful for Mac Mini "always-on AI hub" setups where remote agents connect over the network. | ||
| Require manual approval before destructive operations: | ||
| ## Tools | ||
| ```json | ||
| { | ||
| "hitl": { | ||
| "level": "destructive-only", | ||
| "timeout": 30 | ||
| } | ||
| } | ||
| ``` | ||
| ### Notes (12 tools) | ||
| Levels: `off`, `destructive-only`, `all-writes`, `all` | ||
| ### Menubar App (Optional) | ||
| A native SwiftUI companion app for server status monitoring and permission setup: | ||
| ```bash | ||
| cd app && swift build -c release | ||
| ``` | ||
| ### Swift Bridge (Optional) | ||
| For recurring events/reminders (EventKit), photo import/delete (PhotoKit), and Apple Intelligence — requires macOS 26+: | ||
| ```bash | ||
| npm run swift-build | ||
| ``` | ||
| ## Tools Reference | ||
| <details> | ||
| <summary>Notes (12 tools)</summary> | ||
| | Tool | Description | Type | | ||
@@ -100,4 +223,6 @@ |------|-------------|------| | ||
| | `bulk_move_notes` | Move multiple notes at once | destructive | | ||
| </details> | ||
| ### Reminders (11 tools) | ||
| <details> | ||
| <summary>Reminders (11 tools)</summary> | ||
@@ -117,4 +242,6 @@ | Tool | Description | Type | | ||
| | `create_recurring_reminder` | Create with recurrence rule (Swift/EventKit) | write | | ||
| </details> | ||
| ### Calendar (10 tools) | ||
| <details> | ||
| <summary>Calendar (10 tools)</summary> | ||
@@ -133,4 +260,6 @@ | Tool | Description | Type | | ||
| | `create_recurring_event` | Create with recurrence rule (Swift/EventKit) | write | | ||
| </details> | ||
| ### Contacts (10 tools) | ||
| <details> | ||
| <summary>Contacts (10 tools)</summary> | ||
@@ -149,4 +278,6 @@ | Tool | Description | Type | | ||
| | `list_group_members` | List contacts in a group | read | | ||
| </details> | ||
| ### Mail (9 tools) | ||
| <details> | ||
| <summary>Mail (9 tools)</summary> | ||
@@ -164,4 +295,6 @@ | Tool | Description | Type | | ||
| | `list_accounts` | List all mail accounts | read | | ||
| </details> | ||
| ### Music (9 tools) | ||
| <details> | ||
| <summary>Music (9 tools)</summary> | ||
@@ -179,99 +312,10 @@ | Tool | Description | Type | | ||
| | `set_shuffle` | Set shuffle and repeat mode | write | | ||
| </details> | ||
| ### Finder (8 tools) | ||
| <details> | ||
| <summary>Finder, Safari, System, Photos, Messages, Shortcuts, Intelligence</summary> | ||
| | Tool | Description | Type | | ||
| |------|-------------|------| | ||
| | `search_files` | Spotlight search in a folder | read | | ||
| | `get_file_info` | File size, dates, kind, tags | read | | ||
| | `set_file_tags` | Set Finder tags on a file | destructive | | ||
| | `recent_files` | Recently modified files | read | | ||
| | `list_directory` | List files in a directory | read | | ||
| | `move_file` | Move or rename a file | destructive | | ||
| | `trash_file` | Move file to Trash | destructive | | ||
| | `create_directory` | Create a new directory | write | | ||
| See the full tool list in the [Tools Reference](https://github.com/heznpc/iMcp/wiki/Tools-Reference) or run the server to explore via your AI client. | ||
| </details> | ||
| ### Safari (8 tools) | ||
| | Tool | Description | Type | | ||
| |------|-------------|------| | ||
| | `list_tabs` | List all open tabs across windows | read | | ||
| | `read_page_content` | Read text content of a page | read | | ||
| | `get_current_tab` | Get the active tab URL and title | read | | ||
| | `open_url` | Open a URL in Safari | write | | ||
| | `close_tab` | Close a specific tab | destructive | | ||
| | `activate_tab` | Switch to a specific tab | write | | ||
| | `run_javascript` | Execute JavaScript in a tab | write | | ||
| | `search_tabs` | Search tabs by title or URL | read | | ||
| ### System (10 tools) | ||
| | Tool | Description | Type | | ||
| |------|-------------|------| | ||
| | `get_clipboard` | Read clipboard contents | read | | ||
| | `set_clipboard` | Write to clipboard | write | | ||
| | `get_volume` | Get system volume level | read | | ||
| | `set_volume` | Set system volume level | write | | ||
| | `toggle_dark_mode` | Toggle dark/light mode | write | | ||
| | `get_frontmost_app` | Get the frontmost application | read | | ||
| | `list_running_apps` | List all running applications | read | | ||
| | `get_screen_info` | Get display information | read | | ||
| | `show_notification` | Display a system notification | write | | ||
| | `capture_screenshot` | Take a screenshot (fullscreen/window/selection) | write | | ||
| ### Photos (9 tools) | ||
| | Tool | Description | Type | | ||
| |------|-------------|------| | ||
| | `list_albums` | List photo albums | read | | ||
| | `list_photos` | List photos in an album | read | | ||
| | `search_photos` | Search photos by keyword | read | | ||
| | `get_photo_info` | Detailed photo metadata | read | | ||
| | `list_favorites` | List favorite photos | read | | ||
| | `create_album` | Create a new album | write | | ||
| | `add_to_album` | Add photos to an album | write | | ||
| | `import_photo` | Import from file path (Swift/PhotoKit) | write | | ||
| | `delete_photos` | Delete photos by ID (Swift/PhotoKit) | destructive | | ||
| ### Messages (6 tools) | ||
| | Tool | Description | Type | | ||
| |------|-------------|------| | ||
| | `list_chats` | List recent chats with participants | read | | ||
| | `read_chat` | Read chat details including participants and last update | read | | ||
| | `search_chats` | Search by name, participant, or handle | read | | ||
| | `send_message` | Send text via iMessage/SMS | write | | ||
| | `send_file` | Send file attachment via iMessage/SMS | write | | ||
| | `list_participants` | List participants in a chat | read | | ||
| ### Shortcuts (4 tools) | ||
| | Tool | Description | Type | | ||
| |------|-------------|------| | ||
| | `list_shortcuts` | List available Shortcuts | read | | ||
| | `run_shortcut` | Run a Shortcut by name | write | | ||
| | `search_shortcuts` | Search shortcuts by name | read | | ||
| | `get_shortcut_detail` | Get shortcut details/actions | read | | ||
| ### Apple Intelligence (3 tools) | ||
| Requires macOS 26+ with Apple Silicon. Graceful error on unsupported systems. | ||
| | Tool | Description | Type | | ||
| |------|-------------|------| | ||
| | `summarize_text` | On-device summarization | read | | ||
| | `rewrite_text` | Rewrite in specified tone | read | | ||
| | `proofread_text` | Grammar/spelling correction | read | | ||
| ## Resources | ||
| MCP Resources expose live data from Apple apps as URIs. | ||
| | URI | Description | | ||
| |-----|-------------| | ||
| | `notes://recent` | 10 most recent notes | | ||
| | `notes://recent/{count}` | Recent notes (configurable count) | | ||
| | `calendar://today` | Today's calendar events | | ||
| | `reminders://due` | Overdue reminders | | ||
| ## Prompts | ||
@@ -293,54 +337,9 @@ | ||
| - **event-follow-up** — Create follow-up note and reminders after a meeting | ||
| - **research-with-safari** — Browse with Safari + save findings to Notes | ||
| - **focus-session** — Calendar + Reminders + Music for focused work | ||
| - **file-organizer** — Organize files with Finder + track in Notes | ||
| ### Developer Workflows | ||
| - **dev-session** — Scan project, check specs, research docs, create session notes | ||
| - **debug-loop** — Capture errors from Safari/clipboard, locate code, log bugs, create fix tasks | ||
| - **screen-capture-flow** — Screenshot → Photos import → annotated note | ||
| - **app-release-prep** — Calendar dates + changelog from Notes + Reminders checklist | ||
| - **debug-loop** — Capture errors from Safari/clipboard, locate code, log bugs | ||
| - **idea-to-task** — Break idea into tasks → Reminders + Calendar time blocks | ||
| - **build-log** — Analyze build output, log errors or celebrate success with Music | ||
| - **build-log** — Analyze build output, log errors or celebrate success | ||
| ## Developer Agent Pipeline | ||
| iMcp's developer prompts chain Apple apps into autonomous agent workflows. Each prompt orchestrates multiple tools across modules — the AI reads your actual filesystem, Notes, Calendar, and Reminders to build real context, then writes back structured results. | ||
| ``` | ||
| ┌─────────────────────────────────────────────────────────────────┐ | ||
| │ dev-session │ | ||
| │ Finder (scan) → Notes (specs) → Safari (docs) → Notes (log) │ | ||
| └─────────────────────────────────────────────────────────────────┘ | ||
| ┌─────────────────────────────────────────────────────────────────┐ | ||
| │ debug-loop │ | ||
| │ Safari (JS errors) → Clipboard → Finder (locate) → │ | ||
| │ Notes (bug log) → Reminders (fix task) │ | ||
| └─────────────────────────────────────────────────────────────────┘ | ||
| ┌─────────────────────────────────────────────────────────────────┐ | ||
| │ idea-to-task │ | ||
| │ Notes (capture) → AI (decompose) → Reminders (tasks) → │ | ||
| │ Calendar (time blocks) │ | ||
| └─────────────────────────────────────────────────────────────────┘ | ||
| ┌─────────────────────────────────────────────────────────────────┐ | ||
| │ build-log │ | ||
| │ Finder (output) → Clipboard (log) → │ | ||
| │ ┌ fail → Notes (error log) → Reminders (fix task) │ | ||
| │ └ pass → Notification → Music (celebrate) → Notes (success) │ | ||
| └─────────────────────────────────────────────────────────────────┘ | ||
| ``` | ||
| These prompts are designed for AI coding agents (Claude Code, Cursor, Copilot) to invoke as MCP prompts — turning your Mac into a context-aware development environment. | ||
| > Demo video coming soon. | ||
| ## Configuration | ||
| | Environment Variable | Default | Description | | ||
| |---------------------|---------|-------------| | ||
| | `IMCP_INCLUDE_SHARED` | `false` | Include shared notes/folders in results | | ||
| ## Requirements | ||
@@ -350,3 +349,2 @@ | ||
| - Node.js >= 18 | ||
| - First run will prompt for Automation permission for each app — use `setup_permissions` tool to grant all at once | ||
| - Apple Intelligence tools require macOS 26+ with Apple Silicon | ||
@@ -356,41 +354,10 @@ | ||
| ### Notes | ||
| - Move copies and deletes (new ID, reset dates, lost attachments) | ||
| - Update replaces entire body. Read first to preserve content. | ||
| - Password-protected notes unreadable. | ||
| - **Notes**: Move copies and deletes (new ID, reset dates, lost attachments). Update replaces entire body. | ||
| - **Calendar/Reminders**: JXA recurrence is read-only — use Swift bridge for recurring items. | ||
| - **Messages**: Chat message history not accessible via JXA. Send requires known buddy. | ||
| - **Safari**: Reading page content requires "Allow JavaScript from Apple Events" in Safari Developer menu. | ||
| - **Photos**: Full import/delete requires Swift bridge (macOS 26+). | ||
| ### Reminders / Calendar | ||
| - JXA recurrence rules are read-only — use `create_recurring_event`/`create_recurring_reminder` (Swift/EventKit) to create recurring items | ||
| - Calendar attendees are read-only | ||
| ### Contacts | ||
| - Custom fields not accessible | ||
| - Content truncated to 5000 characters by default (configurable via `maxLength` parameter) | ||
| ### Messages | ||
| - Chat message history (individual message content) is not accessible via JXA | ||
| - Send requires the recipient to be a known buddy in the Messages service | ||
| ### Music | ||
| - Smart playlists are read-only | ||
| - No queue manipulation | ||
| ### Finder | ||
| - Tags use Spotlight (mdfind), performance varies with index state | ||
| ### Safari | ||
| - Reading page content requires Allow JavaScript from Apple Events in Safari Developer menu | ||
| ### Photos | ||
| - JXA: albums can be created and photos added, but no import/delete | ||
| - Swift bridge (macOS 26+): full import and delete via PhotoKit | ||
| ### Apple Intelligence | ||
| - Requires macOS 26 (Tahoe) + Apple Silicon | ||
| - Run `npm run swift-build` to compile the bridge binary | ||
| ## License | ||
| MIT |
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 2 instances
502013
13.88%142
11.81%6803
14.64%352
-8.57%28
21.74%4
33.33%