Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "airmcp",
"displayName": "AirMCP",
"description": "Apple-native MCP server with production governance built in — HMAC-chained audit log, per-call HITL, OAuth 2.1 + Resource Indicators, scope gate, rate limit, emergency stop file. 272 tools across 29 modules: Calendar, Notes, Mail, Reminders, Contacts, Messages, Music, Finder, Safari, Photos, Maps, Podcasts, Weather, iWork, Google Workspace, Apple Intelligence, UI Automation, Shortcuts, Context Memory. Native Swift bridges into EventKit, HealthKit, PhotoKit, Vision, Foundation Models. macOS local-first, multi-client (Claude, Codex, opencode, Gemini CLI, Antigravity, Cursor, Zed, Cline, ChatGPT MCP Apps).",
"description": "Apple-native MCP server with production governance built in — HMAC-chained audit log, per-call HITL, OAuth 2.1 + Resource Indicators, scope gate, rate limit, emergency stop file. 286 tools across 29 modules: Calendar, Notes, Mail, Reminders, Contacts, Messages, Music, Finder, Safari, Photos, Maps, Podcasts, Weather, iWork, Google Workspace, Apple Intelligence, UI Automation, Shortcuts, Context Memory. Native Swift bridges into EventKit, HealthKit, PhotoKit, Vision, Foundation Models. macOS local-first, multi-client (Claude, Codex, opencode, Gemini CLI, Antigravity, Cursor, Zed, Cline, ChatGPT MCP Apps).",
"version": "2.12.1",
"author": {
"name": "heznpc",
Expand Down
2 changes: 1 addition & 1 deletion .github/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ tests/ # Script generator tests

## Stats

- **272 tools** across 27 modules (+ dynamic shortcut tools at runtime)
- **286 tools** across 27 modules (+ dynamic shortcut tools at runtime)
- **32 prompts** (per-module + cross-module + YAML skills)
- **8 MCP resources** (Notes, Calendar, Reminders, Music, Mail, System, Context Snapshot)

Expand Down
16 changes: 8 additions & 8 deletions README.md

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions docs/REGISTRY_SUBMISSIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ When the counts or headline features change, walk this list before you touch any

The 2026-03-28 Google Form submission used the v2.7 pitch ("262 tools across 27 modules"). For the resubmission:

- **Headline for current resubmission**: "MCP server for the entire Apple ecosystem — 272 tools across 29 modules with workflow skills, context memory, queryable audit log, per-call HITL, OAuth 2.1, and inbound HTTP `allowNetwork` policy."
- **Headline for current resubmission**: "MCP server for the entire Apple ecosystem — 286 tools across 29 modules with workflow skills, context memory, queryable audit log, per-call HITL, OAuth 2.1, and inbound HTTP `allowNetwork` policy."
- **Security story** (registry reviewers care): HITL approval, rate limit + emergency stop file, `allowNetwork` startup invariant (RFC 0002), PII-scrubbed audit log at `0600`.
- **Differentiator vs. apple-mcp / shortcuts**: the Skills DSL (`parallel`/`loop`/`on_error`/`retry`/inputs/triggers) + event-bus triggers + governance primitives. Keep this claim bounded: based on README-level/public-surface comparison, not full source audits of every competitor.
- **Demo asset**: point at `docs/demo.gif` (re-record with `./scripts/record-demo.sh` before the submission).
Expand All @@ -74,7 +74,7 @@ The 2026-03-28 Google Form submission used the v2.7 pitch ("262 tools across 27

Ask after the npm publish lands. Pitch the following concrete wins over the baseline `apple-mcp` listing:

- Broad tool surface plus workflow-first entry points (272 tools, 29 modules, curated workflow catalog)
- Broad tool surface plus workflow-first entry points (286 tools, 29 modules, curated workflow catalog)
- README-level Apple-native comparison: AirMCP is the only tracked listing that publicly documents the full governance stack together — HMAC audit, per-call HITL, rate limit, inbound HTTP `allowNetwork`, OAuth Resource Indicators
- Queryable audit log and Skills DSL are concrete differentiators; avoid claiming competitors have zero governance without a fresh source audit
- Documented inbound HTTP exposure policy (RFC 0002 in-tree)
Expand All @@ -85,7 +85,7 @@ The manifest is auto-synced; they shouldn't need any new asset from our side.

One-paragraph pitch for the submission form:

> AirMCP is an Apple-native MCP runtime for governed workflows across the local Apple workspace. It ships 272 tools across 29 modules (Notes, Calendar, Reminders, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence previews, TV, Screen Capture, Maps, Podcasts, Weather, Pages/Numbers/Keynote, Location, Bluetooth, HealthKit, Context Memory, Audit), plus workflow skills, per-call HITL approval, HMAC-chained audit logs, rate limiting, OAuth 2.1 + Resource Indicators, and an inbound HTTP `allowNetwork` policy (RFC 0002). In README-level Apple-native MCP comparisons, this is the full-stack governance surface to beat; re-check competitor READMEs/source before publishing any unqualified "only" claim. Open source (MIT), v2.12+ on npm. iOS sibling with auto-generated AppIntents and an opt-in Foundation Models on-device agent preview (RFC 0007) in active development.
> AirMCP is an Apple-native MCP runtime for governed workflows across the local Apple workspace. It ships 286 tools across 29 modules (Notes, Calendar, Reminders, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence previews, TV, Screen Capture, Maps, Podcasts, Weather, Pages/Numbers/Keynote, Location, Bluetooth, HealthKit, Context Memory, Audit), plus workflow skills, per-call HITL approval, HMAC-chained audit logs, rate limiting, OAuth 2.1 + Resource Indicators, and an inbound HTTP `allowNetwork` policy (RFC 0002). In README-level Apple-native MCP comparisons, this is the full-stack governance surface to beat; re-check competitor READMEs/source before publishing any unqualified "only" claim. Open source (MIT), v2.12+ on npm. iOS sibling with auto-generated AppIntents and an opt-in Foundation Models on-device agent preview (RFC 0007) in active development.

Screenshots to attach:

Expand Down
2 changes: 1 addition & 1 deletion docs/TERMS_OF_SERVICE.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ AirMCP is open-source software released under the [MIT License](../LICENSE). The

You are solely responsible for:

- **AI agent actions.** AirMCP enables AI agents to perform actions on your Mac through 272 tools across 29 modules. Any action an AI agent takes through AirMCP is performed on your behalf and at your direction. You are responsible for the outcomes of those actions.
- **AI agent actions.** AirMCP enables AI agents to perform actions on your Mac through 286 tools across 29 modules. Any action an AI agent takes through AirMCP is performed on your behalf and at your direction. You are responsible for the outcomes of those actions.
- **Safety controls.** AirMCP provides a Human-in-the-Loop (HITL) approval system with configurable levels. It is your responsibility to configure an appropriate HITL level for your use case. Running AirMCP with HITL disabled means AI agents can execute destructive actions without confirmation.
- **HTTP mode security.** If you enable HTTP mode for remote access, you are responsible for securing it. This includes configuring token-based authentication, restricting network access, and ensuring the server is not exposed to untrusted networks.
- **Legal compliance.** You must comply with all applicable local, state, national, and international laws when using AirMCP. This includes laws governing privacy, electronic communications, data protection, and computer access.
Expand Down
2 changes: 1 addition & 1 deletion docs/direction.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ WWDC 6/8 overhang 대응: "Apple-native MCP server"가 아닌 **runtime layer**
| Surface | 톤 | 누구에게 | 카피 예시 |
|---------|----|----|----------|
| 랜딩·소개 (`docs/index.html`) | 프로슈머 메이커 + 애플 미니멀 | Siri에 매일 실망하는 파워 유저 | "More than Siri. Open to every agent." + 행동체인 use-case |
| GitHub README·개발자 문서 (`docs/site/`) | 건조·정확·런타임 레이어 강조 | MCP 서버를 포크·확장할 개발자 | "Apple-native agent runtime for any MCP client. 272 tools / 29 modules + Skills DSL + semantic memory + OAuth 2.1 + HMAC audit log." (PR #216 hero) |
| GitHub README·개발자 문서 (`docs/site/`) | 건조·정확·런타임 레이어 강조 | MCP 서버를 포크·확장할 개발자 | "Apple-native agent runtime for any MCP client. 286 tools / 29 modules + Skills DSL + semantic memory + OAuth 2.1 + HMAC audit log." (PR #216 hero) |
| Skills 가이드·블로그·릴리즈 노트 | 오픈소스 커뮤널 (투명성) | 공통 | 실사용 예시, 로드맵 공개, 기여 초대 |

한 문서가 두 청중을 동시에 설득하려 하지 않는다. 랜딩은 감정, docs는 스펙·레이어, 블로그는 투명성 — 각 표면이 자기 일만 한다.
Expand Down
2 changes: 1 addition & 1 deletion docs/environment.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ If a variable accepts a path, `~` expands to `$HOME`. Booleans are `"true"` / `"
| Bind HTTP server to all interfaces with token auth | `AIRMCP_ALLOW_NETWORK=with-token` + `AIRMCP_HTTP_TOKEN=…` |
| Bind HTTP server with OAuth 2.1 | `AIRMCP_ALLOW_NETWORK=with-oauth` + `AIRMCP_OAUTH_ISSUER=…` + `AIRMCP_OAUTH_AUDIENCE=…` |
| Disable a flaky module without removing config | `AIRMCP_DEBUG_MODULES=notes,calendar` (whitelist) |
| Send all 272 tools without compactDescription | `AIRMCP_COMPACT_TOOLS=false` |
| Send all 286 tools without compactDescription | `AIRMCP_COMPACT_TOOLS=false` |
| Increase audit-log signing strength for cross-host integrity | `AIRMCP_AUDIT_HMAC_KEY=<32+ random bytes>` |
| Block every destructive tool on a panic | `touch ~/.config/airmcp/emergency-stop` |

Expand Down
10 changes: 5 additions & 5 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title data-i18n="meta_title">AirMCP — More than Siri</title>
<meta name="description" data-i18n-attr="content" data-i18n="meta_description" content="Pull action items from last week's meeting notes, drop them into Reminders, get pinged when they're done. AirMCP is the open-source tool that connects your Apple ecosystem to any AI client — 29 modules, 272 tools.">
<meta name="description" data-i18n-attr="content" data-i18n="meta_description" content="Pull action items from last week's meeting notes, drop them into Reminders, get pinged when they're done. AirMCP is the open-source tool that connects your Apple ecosystem to any AI client — 29 modules, 286 tools.">
<meta name="theme-color" content="#0e1117">
<link rel="icon" type="image/x-icon" href="airmcp-icon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="airmcp-icon-32.png">
Expand All @@ -19,7 +19,7 @@
<!-- Twitter Card -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="AirMCP — More than Siri">
<meta name="twitter:description" content="Pull action items from last week's meeting notes, drop them into Reminders, get pinged when they're done. 29 Apple modules, 272 tools, any MCP client.">
<meta name="twitter:description" content="Pull action items from last week's meeting notes, drop them into Reminders, get pinged when they're done. 29 Apple modules, 286 tools, any MCP client.">
<meta name="twitter:image" content="https://heznpc.github.io/AirMCP/airmcp-icon-512.png">
<!-- Structured Data -->
<script type="application/ld+json">
Expand All @@ -29,7 +29,7 @@
"name": "AirMCP",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "macOS",
"description": "More than Siri. Open to every agent. The tool that connects your Apple ecosystem to any AI — 29 modules, 272 tools.",
"description": "More than Siri. Open to every agent. The tool that connects your Apple ecosystem to any AI — 29 modules, 286 tools.",
"url": "https://heznpc.github.io/AirMCP/",
"author": { "@type": "Person", "name": "heznpc" },
"license": "https://opensource.org/licenses/MIT",
Expand Down Expand Up @@ -499,7 +499,7 @@ <h2 class="text-[clamp(2rem,5vw,3rem)] font-bold tracking-tight mt-2 reveal" dat
<span class="term-prompt-text" data-i18n="tryit_6">"Today's meetings → related notes → prep checklist"</span>
</button>
</div>
<p class="text-center mt-6 text-sm opacity-25 reveal" data-delay="200" data-i18n="tryit_footer">272 tools. Endless combinations.</p>
<p class="text-center mt-6 text-sm opacity-25 reveal" data-delay="200" data-i18n="tryit_footer">286 tools. Endless combinations.</p>
</div>
</section>

Expand Down Expand Up @@ -788,7 +788,7 @@ <h2 class="text-[clamp(2rem,5vw,3rem)] font-bold tracking-tight mt-2 reveal" dat
<div class="glass-content flex-row items-start gap-4" style="flex-direction:row">
<div class="step-num shrink-0 text-lg" style="width:44px;height:44px;font-size:1.1rem">1</div>
<div>
<h3 class="card-title" data-i18n="why_1_title">272 tools across 29 modules</h3>
<h3 class="card-title" data-i18n="why_1_title">286 tools across 29 modules</h3>
<p class="card-desc mt-1" data-i18n="why_1_desc">Others offer 10-15 tools and stop updating. AirMCP covers every major Apple app — and keeps growing.</p>
</div>
</div>
Expand Down
6 changes: 3 additions & 3 deletions docs/locales/en.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"meta_title": "AirMCP — More than Siri",
"meta_description": "Pull action items from last week's meeting notes, drop them into Reminders, get pinged when they're done. AirMCP is the open-source tool that connects your Apple ecosystem to any AI client — 29 modules, 262 tools.",
"meta_description": "Pull action items from last week's meeting notes, drop them into Reminders, get pinged when they're done. AirMCP is the open-source tool that connects your Apple ecosystem to any AI client — 29 modules, 286 tools.",
"nav_modules": "Modules",
"nav_beyond": "Beyond Siri",
"nav_workflows": "Workflows",
Expand Down Expand Up @@ -137,7 +137,7 @@
"why_label": "Why AirMCP?",
"why_title": "The most complete Apple MCP server.",
"why_sub": "See how AirMCP compares to the alternatives.",
"why_1_title": "262 tools across 29 modules",
"why_1_title": "286 tools across 29 modules",
"why_1_desc": "Others offer 10-15 tools and stop updating. AirMCP covers every major Apple app — and keeps growing.",
"why_2_title": "Security by default",
"why_2_desc": "Human-in-the-loop confirmation, audit logging, and input validation. No silent writes.",
Expand Down Expand Up @@ -188,6 +188,6 @@
"tryit_5": "\"Get my current location and show the weather here\"",
"tryit_6_cat": "Cross-App",
"tryit_6": "\"Check today's meetings, find related notes, and create a prep checklist in Reminders\"",
"tryit_footer": "262 tools. Endless combinations.",
"tryit_footer": "286 tools. Endless combinations.",
"footer_tagline": "Built for Claude Code, Codex, and every MCP client."
}
2 changes: 1 addition & 1 deletion docs/rfc/0002-http-allow-network.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ Managed Agents·디스커버리 클라이언트가 정책을 사전에 확인
## 5. Open Questions

1. **`unauthenticated` 모드를 제공할 가치가 있는가?** CI 환경·로컬 fuzz 테스트에서는 편하지만, 잘못 사용될 위험. 제안: stdout/stderr에 큰 경고 + `.well-known/mcp.json` `security: insecure` 공개 + audit 로그 매 요청 기록.
2. **`allowNetwork=with-token+origin`에서 `Origin` 헤더가 없는 요청(예: curl)은?** 기본 거부. MCP 클라이언트는 Origin을 보내므로 영향 없음. 단, 스모크 테스트 스크립트가 영향받을 수 있어 `AIRMCP_TRUST_NO_ORIGIN=true` 환경변수로 우회 제공.
2. **`Origin` 헤더가 없는 요청(예: curl, 네이티브 MCP 클라이언트)은?** **기본 허용 — 해결됨.** 브라우저는 cross-origin 요청에 항상 `Origin`을 붙이므로 `Origin` 부재는 브라우저발 CSRF/DNS-rebinding이 아니라 비-브라우저 클라이언트를 뜻하며, 이들은 활성 정책으로 게이트된다(기본 `loopback-only`는 127.0.0.1 바인딩, `with-token*`/`with-oauth*`는 Bearer/JWT 인증 미들웨어). 기본 거부는 정당한 로컬 클라이언트를 보안 이득 없이 깨므로 채택하지 않았다. 브라우저 전용 배포를 위한 엄격 모드는 `AIRMCP_DENY_NO_ORIGIN=1`로 opt-in. (이 문서 초안이 적었던 `AIRMCP_TRUST_NO_ORIGIN`(기본 거부 전제)은 구현된 적이 없고, 실제 기본값은 허용이다 — `src/server/http-transport.ts: isOriginAllowed`.)
3. **CIDR allow-list까지 가야 하는가?** 필요 시 v2.9.0 `trustedNetworks: ["10.0.0.0/8"]` 형태로 추가. 초기 스코프 아님.
4. **`--bind-all`의 IPv6 대응**: 현재 IPv4만 고려. `::` 바인딩도 동일 정책 적용해야 함. 구현 시점에 확인.

Expand Down
2 changes: 1 addition & 1 deletion docs/site/src/content/docs/architecture/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ ok(data) // { content: [{ type: "text", text: JSON.stringify(data) }] }
err(msg) // { content: [{ type: "text", text: msg }], isError: true }
```

This ensures consistent error handling across all 262 tools.
This ensures consistent error handling across all 286 tools.

## Directory Structure

Expand Down
4 changes: 2 additions & 2 deletions docs/site/src/content/docs/index.mdx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: AirMCP Documentation
description: More than Siri. Open to every agent. The MCP server that connects your Apple ecosystem to any AI client — 29 modules, 272 tools.
description: More than Siri. Open to every agent. The MCP server that connects your Apple ecosystem to any AI client — 29 modules, 286 tools.
template: splash
hero:
tagline: More than Siri. Open to every agent. The MCP server that connects your Apple ecosystem to any AI client — 29 modules, 272 tools, from Notes to Health.
tagline: More than Siri. Open to every agent. The MCP server that connects your Apple ecosystem to any AI client — 29 modules, 286 tools, from Notes to Health.
actions:
- text: Get Started
link: /getting-started/installation/
Expand Down
2 changes: 1 addition & 1 deletion docs/site/src/content/docs/modules/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Module Overview
description: All 25 AirMCP modules with tool counts and capabilities.
---

AirMCP ships 29 modules that cover the Apple ecosystem. Each module registers a set of MCP tools that AI assistants can call. The total tool count varies slightly depending on dynamic shortcut registration, but the base set contains approximately 262 tools.
AirMCP ships 29 modules that cover the Apple ecosystem. Each module registers a set of MCP tools that AI assistants can call. The total tool count varies slightly depending on dynamic shortcut registration, but the base set contains approximately 286 tools.

## Module Table

Expand Down
2 changes: 1 addition & 1 deletion docs/skills.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# AirMCP Skills Guide

A practical guide for AI agents to effectively use AirMCP's 272 tools across 29 modules to orchestrate the Apple ecosystem via MCP.
A practical guide for AI agents to effectively use AirMCP's 286 tools across 29 modules to orchestrate the Apple ecosystem via MCP.

## Overview

Expand Down
Loading