Airmcp

io.github.heznpc由 GitHub 帳號 heznpc 發布v2.16.6更新於 Nov 4, 2026

Governed MCP runtime for the Apple ecosystem, available on macOS with per-call approval.

概覽

AI 產生的概覽

面向 Apple 生態的在地 macOS MCP 執行環境,讓助理讀寫真實的備忘錄、郵件、行事曆、提醒事項、訊息、Finder、Safari 與捷徑,並支援逐次呼叫核准。

可以做什麼
  • 讀寫 Apple 應用程式:備忘錄、提醒事項、行事曆、聯絡人、郵件、訊息、音樂、Finder、Safari、照片、捷徑、天氣、地圖、定位、藍牙與系統控制
  • 使用 Google Workspace:Gmail、Drive、試算表、行事曆、文件、Tasks 與聯絡人
  • 先預覽破壞性操作再執行,並執行支援平行、迴圈、重試與錯誤處理的 Skills DSL 工作流程
  • 透過設定檔、模組包與任務工作階段按需曝露龐大的工具目錄
  • 藉由產生的 App Intents 串接 macOS 捷徑,並提供 EventKit、PhotoKit、HealthKit 與裝置端搜尋的原生 Swift 橋接
適用情境
當你希望助理直接操作真實的 Mac 資料與應用程式而非副本時適用,例如產生行事曆、提醒事項與郵件的每日簡報,做會議準備,起草回覆,把摘要存進備忘錄,或執行捷徑,同時希望這些操作有核准與稽核紀錄。
執行需求
macOS 與 Node.js 20 或更新版本,透過 npx airmcp init 或 MCPB 擴充套件啟動。依啟用的模組需要授予 macOS 自動化、輔助使用、完整磁碟存取、定位、藍牙或照片權限。Swift 支援的工具需安裝簽章的 AirMCP.app 發行版或自行建置 Swift 橋接。選用 HTTP 模式使用 AIRMCP_HTTP_TOKEN 與 AIRMCP_ALLOW_NETWORK。
安裝前請注意
它會操作真實在地資料,可能寄送郵件、修改行事曆與提醒事項或執行捷徑;破壞性呼叫在預設 sensitive-only 等級下需逐次人工核准,核准前請先查看預覽。本機會寫入 HMAC 鏈式稽核日誌。HTTP 模式預設僅限回送位址並使用每次安裝產生的權杖,啟用網路模組或擴大曝露範圍需謹慎。workflows --preview 診斷會繞過治理流程且不產生稽核紀錄。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Airmcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[AirMCP]

AirMCP

[npm version] [Tests] [License: MIT] [GitHub stars]

Your AI assistant can use the Mac apps you already use. Ask for something in plain language and AirMCP does it in the real Notes, Mail, Calendar, Reminders, Messages, Photos, Safari, Finder, and Shortcuts on your machine — your actual data, not a copy and not a sandbox. The macOS runtime is available today; the iOS runtime is in preview.

Release status (2026-10-27 KST): v2.16.7 is available through npm and the MCPB extension. Its macOS app ZIP is still unavailable because Apple notarization authentication failed. Use the CLI or MCPB path; see the release verification record for completed checks and the remaining app-distribution gate.

text
"Brief me on today's calendar, overdue reminders, and unread mail.""For my next meeting, pull up the related notes, contacts, files, and reminders.""Search my Safari tabs for that article and save a summary to Notes.""Draft replies to the urgent mail, but ask me before sending anything.""Run my Morning Routine shortcut."

Start on macOS with Node.js 20+:

bash
npx airmcp init

Then ask your client. Works with Claude, Codex, Cursor, Raycast, Xcode agents, and any other MCP client. Nothing reads or changes a client's settings until you opt in.

More to try: Common Workflows · every tool · Quick Start

It does not act behind your back

AirMCP is the connector and control layer, not another agent. Destructive calls preview before they run, approval is per-call, and the audit chain is tamper-evident and verifiable by you — read airmcp://trust and check it yourself. Details in Safety Model.

[A real AirMCP session showing the live trust verdict, a destructive delete previewed without executing, and a verified audit chain]

Generated from a real local MCP round-trip by scripts/demo/governed-flow.mjs — real terminal output, not a staged transcript.

Multi-language project page: heznpc.github.io/AirMCP

What You Get

  • Apple workspace tools for Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, Photos, Shortcuts, system control, screen capture, Weather, Maps, Location, Bluetooth, and more.
  • Google Workspace tools for Gmail, Drive, Sheets, Calendar, Docs, Tasks, People, and raw gws CLI access.
  • Profiles and progressive exposure so clients start with a small front door instead of every loaded tool.
  • Skills DSL workflows with parallel, loop, retry, on_error, runtime inputs, and event triggers.
  • App Intent action bridge generated from the MCP manifest for macOS Shortcuts, with an iOS-only App Shortcuts provider and destructive intents gated separately.
  • Native Swift bridge for EventKit, PhotoKit, HealthKit, Vision, on-device semantic search, and FoundationModels preview builds. AirMCP.app embeds the normal bridge; it is optional for npm and MCPB users, who can build it separately when needed.
  • Dual transport: stdio for standard MCP clients, HTTP/SSE for shared local runtimes, browser clients, registries, and always-on hosts.

Apple Platform Direction

AirMCP is one governed action layer with platform-specific roles, rather than a copy of the full Mac runtime on every device.

PlatformStatusRole
macOSAvailableFull local MCP runtime and broad Apple app and system integration.
iOS / iPadOSPreviewNative Calendar, Reminders, Contacts, Health, and Location actions, plus in-process AppIntents.
visionOSRoadmapSpatial interaction and native actions, with Mac routing for Mac-only automation.
watchOSRoadmapCommands, notifications, and per-call approval through a paired iPhone runtime.

The shared Swift and AppIntents layers are the portability boundary. Platform sandboxing and lifecycle rules still determine which actions run locally and which route to a paired Mac or iPhone.

Quick Start

Claude Desktop one-click

  1. Download airmcp-<version>.mcpb from Releases.
  2. Drag it onto Claude Desktop, or use Settings -> Extensions -> Install from file....
  3. Choose modules in the install form and finish setup.

Full guide: docs/mcpb.md.

macOS app (signed + notarized)

The desktop distribution is a Developer-ID-signed, notarized, and stapled AirMCP-<version>.zip. Check the selected version's assets in Releases before choosing this path: v2.16.6 and v2.16.7 have no app ZIP. The v2.16.7 attempt stopped at Apple notarization account authentication; its app distribution is incomplete. The ZIP needs no build step: the embedded Node runtime, the Swift bridge, the menubar Trust Center, and the generated App Intents (Shortcuts actions) and widget are all included.

Choose v2.16.5 or later with an app ZIP attached. The v2.16.3 and v2.16.4 releases carry an app ZIP that signs, notarizes, and staples correctly but crashes on launch before the menubar icon appears — a resource-bundle path bug fixed in v2.16.5.

  1. Download AirMCP-<version>.zip and unzip it.
  2. Move AirMCP.app to /Applications and open it. Gatekeeper accepts it offline because the notarization ticket is stapled.
  3. Follow the consent-driven Setup window; nothing starts and no client is edited until you choose it.

CLI wizard

Install Node.js 20+, then run:

bash
npx airmcp init

The wizard selects a profile and stores preferences in ~/.config/airmcp/config.json. Client registration is a separate consent step whose default is No; no Claude, Codex, Cursor, or Windsurf setting is read or changed until you opt in.

For Codex, Claude Code, Cursor, Windsurf, and other stdio clients, use the direct runtime, or the app-owned runtime after installing the signed AirMCP-<version>.zip from a release that includes that asset:

bash
npx airmcp init --no-clientsnpx airmcp connect-clients --client-runtime direct --dry-runnpx airmcp connect-clients --client-runtime direct

The app-owned runtime is available only after installing that signed app ZIP and explicitly choosing Start Local Runtime. Releases before v2.16.5 have no app asset, or one that cannot launch; do not configure a client to wait for AirMCP.app on those.

Non-interactive examples:

bash
npx airmcp init --profile starter --yesnpx airmcp init --profile communications-safe --yesnpx airmcp init --profile productivity --yesnpx airmcp init --profile productivity --yes --connect-clientsnpx airmcp init --profile productivity --yes --connect-clients --client-runtime direct

Check the install:

bash
npx airmcp doctor

Common Workflows

Once connected, ask your MCP client in natural language:

  • "Tell me today's calendar events and overdue reminders. Do not change anything."
  • "Brief me on today's calendar, overdue reminders, unread mail, and recent notes."
  • "Turn today's meetings into a prep checklist."
  • "Draft replies for urgent mail, but ask before sending anything."
  • "For my next meeting, find related notes, contacts, files, and reminders."
  • "Search my Safari tabs for that article and save the summary to Notes."
  • "Run my Morning Routine shortcut."
  • "Take a screenshot and save it to my Desktop."

More workflow examples live in docs/workflows.md.

Runtime Model

AirMCP is designed to keep a large local capability surface usable without dumping the full catalog into every client context.

The complete generated catalog currently contains 293 tools across 32 modules. Profiles and progressive exposure keep clients from loading it all at once.

  • Profiles: starter, communications-safe, productivity, full, or custom.
  • Tool exposure: progressive, profile, or full.
  • Module packs: enable only the packs you want with npx airmcp modules or AIRMCP_MODULE_PACKS=core,productivity.
  • Task sessions: start_tool_session, discover_tools, and run_tool allow a broad runtime to behave like a narrow task-specific toolbelt.
  • Opt-in network modules: webhooks and powerautomate stay off in every profile until explicitly enabled.

Useful commands:

bash
npx airmcp modulesnpx airmcp modules enable productivity --installnpx airmcp --fullnpx airmcp workflowsnpx airmcp workflows --readinessnpx airmcp workflows today-overview --prompt

today-overview is the starter-safe first workflow: it reads only Calendar and Reminders and never writes data. Paste the printed prompt into a connected MCP client for a governed first run with client authorization and AirMCP audit coverage.

workflows <id> --preview is a separate local diagnostic. It reads Apple apps directly, bypasses the MCP governance path, and creates no AirMCP audit entry; do not use it as the first-success workflow. Broader diagnostics such as daily-briefing --preview report missing modules before reading live data.

The complete generated tool manifest is in docs/tool-manifest.json.

Current generated surfaces: 230 App Intent action types, 85 Interactive Snippet views, 15 AppEnum pickers, and an iOS-only provider with 8 read-only App Shortcuts that match the preview runtime. The sessionless discovery card uses MCP schema version 2025-11-25.

Safety Model

AirMCP treats local app access as a governed action layer, not a blind shell for agents.

The claim is verifiable, not marketing: read the first-party airmcp://trust resource for a live governed verdict composed from the tamper-evident audit chain, the active HITL level, the rate-limit / emergency-stop state, and the audit key grade — available before any tool access is widened. Preview any destructive call with preview_action to see exactly what it would record and whether it would be gated, without running it.

  • Per-call human approval for destructive and sensitive actions at the default sensitive-only HITL level.
  • HMAC-chained audit log at ~/.airmcp/audit.jsonl, with tamper detection covered by tests.
  • Native Trust Center for governed-run timelines, approval state, audit integrity, emergency controls, permission probes, and redacted local export. Audit history is never read in the background: Load or Refresh makes one explicit audit_log request, and the effective HITL policy may require approval for that call.
  • Rate limits: 60/min globally and 10 destructive/hr.
  • Emergency stop: touch ~/.config/airmcp/emergency-stop blocks destructive tools without restarting the server.
  • Inbound HTTP policy through AIRMCP_ALLOW_NETWORK: loopback-only by default, with token, origin, or OAuth modes available for wider exposure.
  • OAuth 2.1 + Resource Indicators for HTTP runtimes that need scoped access control, with RS256/ES256 JWT verification.

Environment variables are indexed in docs/environment.md. HTTP policy details are in RFC 0002, and OAuth details are in RFC 0005.

Client Setup

Releases that include the signed AirMCP.app ZIP support an app-owned desktop pattern with one local runtime behind every connected client. A per-install token is created only by an explicit action: Start Local Runtime in AirMCP.app, or an opted-in app-runtime client connection such as --connect-clients / connect-clients. It is stored at:

text
~/Library/Application Support/AirMCP/http-token

The macOS Setup window is consent-driven: it appears automatically once and resumes its last step when reopened. Merely opening or moving through Setup does not start the runtime or edit a client, and first-run Finish Later with no runtime saves the selection only. If an app-owned runtime is already running and the selection changed, Finish Setup may stop and restart that exact owned generation so the persisted and effective scopes match. Start Local Runtime creates the token and opts into automatic startup; each client is registered only after its own Connect action and a fresh scope/readiness check.

Existing Codex registrations can be inspected or disabled without deleting their settings:

bash
npx airmcp codex statusnpx airmcp codex disable

The npx airmcp codex commands follow their child Codex CLI's active user config root: AIRMCP_CODEX_CONFIG_PATH first, then $CODEX_HOME/config.toml, then ~/.codex/config.toml. The explicit override is resolved against the invoking working directory and must be named config.toml.

Stdio clients can proxy into the app-owned HTTP runtime:

bash
npx -y airmcp connect --url http://127.0.0.1:3847/mcp

Set AIRMCP_HTTP_TOKEN to the token value when using that proxy.

Examples:

bash
claude mcp add --env AIRMCP_HTTP_TOKEN=<token> airmcp -- npx -y airmcp connect --url http://127.0.0.1:3847/mcpcodex mcp add --env AIRMCP_HTTP_TOKEN=<token> airmcp -- npx -y airmcp connect --url http://127.0.0.1:3847/mcp

Direct stdio mode still works for development or isolated client-owned runtimes:

bash
npx -y airmcp

Browser-based MCP clients should use HTTP mode with token and origin checks. See docs/oauth-browser-pkce.md for the browser/OAuth path.

App Intents and Shortcuts

AirMCP generates App Intent actions from the same MCP tool manifest. On macOS, those actions are available in the Shortcuts action library; Apple does not support the AppShortcutsProvider phrase surface on macOS. iOS preview builds can additionally compile the workflow-first App Shortcuts provider.

Destructive intent source generation is opt-in at build/codegen time with AIRMCP_APPINTENTS_DESTRUCTIVE=true; setting it beside an already-built app does not expand that binary's intent surface. AskAirMCPIntent and FoundationModels-backed Apple Intelligence paths are preview-only and require explicit Swift builds.

Guide: docs/shortcuts.md. Architecture: RFC 0007.

Local Development

bash
git clone https://github.com/heznpc/AirMCP.gitcd AirMCPnpm installnpm run buildnode dist/index.js

Useful checks:

bash
npm testnpm run mcp:validatenpm run dev:test -- notesnpm run dev:test:changed

Swift bridge:

bash
npm run swift-build

FoundationModels preview builds require macOS 26+, Apple Silicon, a compatible SDK, and the explicit compile flag:

bash
cd swiftswift build -c release -Xswiftc -DAIRMCP_ENABLE_FOUNDATION_MODELS

Local build artifacts can grow after Swift or app builds. To inspect or reclaim ignored artifacts:

bash
npm run clean:localnpm run clean:local:applynpm run size:check

Testing guide: docs/testing.md.

Requirements

  • macOS for the server runtime.
  • Node.js 20 or newer.
  • macOS Automation, Accessibility, Full Disk Access, Location, Bluetooth, or Photos permissions as required by the modules you enable.
  • The self-contained AirMCP.app distribution embeds its fixed Node runtime and the normal Swift bridge. The npm package and .mcpb do not embed the Swift binary; users of those artifacts build it from source for Swift-backed tools, or install the signed AirMCP.app release asset, which embeds it.
  • FoundationModels-backed Apple Intelligence preview requires macOS 26+, Apple Silicon, and AIRMCP_ENABLE_FOUNDATION_MODELS.

The macOS runtime is the current supported release. The iOS runtime is a preview; visionOS and watchOS are roadmap targets, not released products.

Documentation

Contributing

See CONTRIBUTING.md for development setup, code style, and PR guidelines.

First-time contributors can look for good first issue.

Community

License

MIT

來源:README.md,提交 50dba5d

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:軟體包安裝失敗。

版本歷史

2
  1. v2.16.6最新Oct 21, 2026
  2. v2.16.1Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分