intents-mcp について
intents-mcpは、選択したMacのApp Intents操作をShortcutsでラップし、Claude CodeやCodexなどのMCPクライアントにstdioで公開します。操作は個別に有効化し、呼び出しをローカルに記録して、対応する場合は結果を確認します。
主な機能
- 01MacのApp Intentsを検出
- 02操作を選択して有効化
- 03Shortcuts経由でアクションを実行
- 04呼び出しをローカルに記録
- 05読み戻しによる結果確認
活用シーン
- 01エージェントからリマインダーや予定を追加
- 02MCPクライアントからMacアプリを操作
- 03有効化したツールの呼び出し記録を確認
MCP 対応
有効化したApp IntentsツールをstdioのMCPサーバーで公開し、クライアントによるツールの検出と呼び出しを可能にします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
intents-mcp
お使いの Mac には、すでに 1,000 個以上のアプリ操作が備わっています。intents-mcp は、Shortcuts を通じて公開 API のみを使用し、選んだ操作を Claude Code、Codex、または任意の MCP クライアントに提供します。
https://github.com/user-attachments/assets/3db14186-e1c6-4724-80da-f9aced0f1fb5
$ intents-mcp census
This Mac declares 1,304 App Intents actions (1,249 unique)
in 224 metadata files, across 91 apps and system components.
discoverable in Shortcuts 945
simple tier 47 background, plain inputs, returns output
need an entity (a note…) 657 not supported yet
…
作者の Mac での実際の出力です(macOS 27.0、2026-09-26)。intents-mcp census を実行すると、ご自身の環境の結果を確認できます。
アプリは、Siri と Shortcuts 向けに App Intents メタデータで操作を記述します。 intents-mcp はそのメタデータを読み取り、エージェントが使用できる操作を選べるようにし、それぞれを小さな署名済み Shortcut でラップして、stdio 経由で MCP ツールとして提供します。エージェントがツールを呼び出すと、Shortcut がアプリの操作を実行し、intents-mcp は可能な範囲で結果を読み取ります。
> Add a reminder to call the dentist tomorrow at 10.
reminders_add → {"ok": true, "output": "Call the dentist", "verified": true,
"detail": "read back through Shortcuts: due 26 Sep 2026 at 10:00"}
現在利用できる機能
実際に実行して確認済みのツール(macOS 27.0、Claude Code 2.1、Codex 0.157):
| ツール | アプリ | 結果の読み取り |
|---|---|---|
reminders.add | Reminders | はい(タイトル、期限) |
calendar.create-event | Calendar | はい(タイトル、開始時刻) |
notes.create | Notes | いいえ |
| Writing Tools: Summarize, Proofread | Writing Tools | いいえ |
シンプルな階層(バックグラウンドで実行され、入力がプレーンテキスト/数値/日付/選択肢で、出力を返す)の操作は、メタデータから有効にできます。これらのツールには、実際の実行では未確認のマークが付いています。テストでは、3 つのうち 2 つが初回で動作しました。残る 1 つ(Notes の「Create Folder」)は完了せず、無効にしました。新しいツールは、頼りにする前に確認してください。
インストール
brew install VladUZH/tap/intents-mcp # prebuilt for Apple silicon; no dependencies
Intel Mac ではソースからビルドします。Xcode が必要です。
Homebrew がまだインストールされていませんか?インストーラーはパスワードを求めた後、RETURN キーが押されるのを待ちます。ダウンロード中、数分間何も表示されないことがありますが、正常です。すでに Homebrew がある場合は、先に brew update を実行してください。
macOS 27 では、最新の Homebrew(7.0 以降)が必要です。それより古いバージョンではソースからビルドされ、Xcode 27 を求められます。クローンからビルドする場合は、swift build -c release を実行し、.build/release/intents-mcp を使用してください。
macOS 26 以降(27.0 でテスト済み)と、macOS に付属する shortcuts コマンドが必要です。
セットアップ(ツールごとに約 1 分)
intents-mcp census # what your Mac has
intents-mcp list --tier simple # checked tools first, then actions from metadata
intents-mcp enable reminders.add calendar.create-event
claude mcp add --scope user mac -- intents-mcp serve # Claude Code, in every folder
codex mcp add mac -- intents-mcp serve # Codex
実際に必要な手順:
enableを実行すると、各ラッパーが Shortcuts で開きます。Add Shortcut を一度クリックしてください。Shortcuts には、クリックなしでショートカットを追加する公開手段がありません。- ツールを初めて実行すると、Shortcuts がアクセス許可を求める場合があります。Always Allow を選択してください。テストでは、別のアプリ(Notes、CotEditor、MacWhisper)にデータを渡すたびに尋ねられましたが、Reminders と Calendar ではほとんど尋ねられませんでした。ラッパーをアップグレードした後にも再度尋ねられることがあります。アップグレードしたラッパーは新しいショートカットとして扱われるためです。
結果を読み取るツールでは、Add Shortcut をもう一度クリックする必要があります。Reminders と Calendar では、それぞれ小さな結果読み取り用ヘルパー(「intents-mcp verify.reminders」と「intents-mcp verify.calendar」)が追加され、同じアプリのすべてのツールで共有されます。追加しなくてもツールは動作しますが、「未検証」と報告します。
Claude Code は実行中のセッションで有効・無効にしたツールを認識します。他のクライアント(例:Codex)では再起動が必要な場合があります。
プライバシーと安全性
- お使いの Mac 上で動作します。公開 API のみを使用します。 アプリのメタデータファイルを読み取り、ショートカットを作成して、Apple の
shortcutsコマンドで実行します。プライベートフレームワーク、SIP や AMFI の変更、アクセシビリティを使ったクリックは行いません。 - 署名には Apple が関与します。
shortcuts signはお使いの iCloud アカウントを使用し、検証のために Apple が各ラッパーのコピーを受け取ります(Apple のショートカットガイドに記載されています)。署名済みラッパーには Apple Account の署名 ID(アカウント識別子、ハッシュ化されたメールアドレスと電話番号)も含まれるため、intents-mcp はショートカットがライブラリに追加されたことを確認すると、署名済みファイルをすぐに削除します(enableの実行後、または次回のenable、doctor、serve、あるいはそのツールの呼び出し時)。署名済みの.shortcutファイルを共有しないでください。追加したショートカットはショートカットライブラリに保存され、iCloud 経由で同期されます。 - 使用するツールはすべて自分で選べます。
enableするまでは何も公開されません。名前や説明から削除、送信、購入、共有を行うと判断されるアクションにはフラグが付けられ、--allow-riskyが必要です(幅広い単語リストを使用するため、無害なものにもフラグが付く場合があります)。エージェントにはdestructiveHintとして表示されます。 - テレメトリはなく、独自のネットワーク通信もありません。 MCP サーバーは、stdio 経由で起動元のクライアントとのみ通信します。
- すべての呼び出しはローカルに記録されます(
intents-mcp log):ツール、時刻、所要時間、成功したかどうか、検証済みかどうかを、呼び出しの開始時と終了時に記録するため、途中で中断された呼び出しも確認できます。引数と結果は記録されません。 - 読み取りアクションがある場合、結果を読み取って確認します:ヘルパーは直前に使用したタイトルで項目を検索し、呼び出し中に作成されたことを確認します。(エージェントを実行しているアプリがすでにリマインダーまたはカレンダーへの完全なアクセス権を持っている場合は、代わりに EventKit を使用します。PRIVACY.md を参照してください。)同じタイトルの古い項目や別の項目が見つかった場合は、誤って成功とせず、
verified: falseを返します。 - 結果が不明な場合は、その旨を伝えます。 実行がタイムアウトした場合や結果を返さずに終了した場合、ツールはアクションが実行された可能性があると伝えます(
outcomeUnknown)。そのため、エージェントは再試行する前に確認できます。実行が開始されなかった場合(キャンセルされた場合や、キュー内で時間切れになった場合)も、その旨を伝えます。
コマンド
intents-mcp census [--json] count the actions this Mac declares
intents-mcp list [--app <name>] [--tier simple|entity|unsupported|all] [--json]
(--json: metadata actions only, with a status
field; the checked tools are at the top of the
text output)
intents-mcp enable <tool>... [--allow-risky] make actions available to agents (alias or id)
intents-mcp disable <tool>... stop exposing them (alias or id)
intents-mcp call <tool> '<json args>' run a tool as an agent would
intents-mcp tools the enabled tools
intents-mcp log [--last <n>] what agents called
intents-mcp doctor check this Mac is ready
intents-mcp serve MCP over stdio
ターミナルでは、census、list、doctor、tools、log、enable、disable のテキスト出力が1行ずつ表示され、約40 ms 間隔で出力されます。コマンドに追加される時間は最大2秒です。300行を超える出力(たとえば list の全項目)、パイプ、ファイル、--json では一度に出力されます。
INTENTS_MCP_LINE_DELAY_MS で間隔をミリ秒単位で設定します。0 にすると無効になり、画面録画用に 120 など大きな値を指定すると遅くなります(その場合、コマンドに最大10秒追加されることがあります)。
ターミナルでは、出力にいくつかの色も使用されます(動作するものは緑、対応が必要なものは黄、失敗は赤)。色を無効にするには NO_COLOR=1 を設定してください。パイプ、ファイル、--json では色は使用されません。
制限事項
- エンティティに対するアクションにはまだ対応していません。既存のメモ、リマインダー、リストを操作するアクションが該当します。作者の Mac では、これは検出可能な945個のアクションのうち657個です。テスト中、対象を1つ選ぶはずのショートカットの「検索」ステップが誤ったメモを選んだため、安全に照合できるようになるまで無効にしています。
- 宣言されているからといって、使えるとは限りません。 宣言済みのアクションの中には、Mac 上でショートカットに拒否されるものや、宣言されたパラメーター名を無視するものがあります。リマインダーとカレンダーには、代わりにショートカットの組み込みアクションを使用します。
- CLI ではショートカットを削除できません。
disableの後、ショートカットアプリでラッパーを手動で削除してください。 - Mac をスリープさせないでください。 スリープ中はショートカットが実行されません。別のプロジェクトでは画面をロックした状態で実行できると報告されていますが、ここではまだテストしていません。
- App Intents を提供しているサードパーティ製アプリはまだほとんどありません。 作者の Mac では、50個中8個でした。
Siriではない理由
Siriで必要なことができるなら、Siriを使ってください。intents-mcpは、すでに使っているエージェント向けです。Claude Code、Codex、または任意のMCPクライアントが、作業の途中でMacを操作できます(「このPRをフォローアップするリマインダーを追加して」など)。許可する操作は自分で選べます。すべての呼び出しはMac上に記録され、可能な場合は結果が読み上げられます。使用するモデルやクライアントを問わず動作します。
仕組み
- インデックス化。
/Applicationsと/SystemにあるすべてのMetadata.appintents/extract.actionsdataを読み取ります。権限は必要ありません。各アクションを見慣れたアプリに対応付け、階層に分類します。 - ラップ。 各ツールは1つのショートカットになります。JSON入力 → 引数ごとの「辞書の値を取得」 → アプリのアクション → 「テキストを取得」 → 「停止して出力」。
shortcuts sign --mode people-who-know-meで署名します。 - 実行。
shortcuts run <UUID> --input-path … --output-path …を、標準入力に/dev/nullを指定してタイムアウト付きで実行します。ショートカットは認識しないキーを黙って無視するため、先に引数を検証します。 - 提供。 stdio経由の小さなMCPサーバーです。
initialize、tools/list、tools/callに対応しています。Claude Codeと現行のCodexで動作します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。