Apple Tools (Unified) について
Apple Tools (Unified) は、Apple アプリを横断するワークフローを構築する人向けの macOS 用統合 MCP サーバーです。単一のエントリーポイントから、委譲されたアプリツール、共有設定、操作プレビュー、取り消し可能な操作の監査を利用できます。
主な機能
- 01Apple アプリ横断のツール
- 02アプリ横断ワークフローとブリーフィング
- 03通信ルーティング設定の保存
- 04操作のプレビューと取り消し
- 05Files、System、Maps のワークフロー
- 06ツール検索とスキーマ参照
活用シーン
- 01Calendar と Reminders のタスク連携
- 02連絡先の設定に基づく通信ルーティング
- 03日次・週次ブリーフィングの作成
- 04取り消し可能な操作のプレビューと取り消し
MCP 対応
Mail、Calendar、Reminders、Messages、Contacts、Notes、Shortcuts、Files、System、Maps のツールを委譲する統合 MCP インターフェースを提供します。リソース、プロンプト、ツール検索機能も備え、MCP クライアントから設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
184掲載時のツール一覧 · 1 日前に更新
このツールにパラメーターはありません。
詳細
Apple-Tools-MCP
macOS 上の Apple アプリ向けの統合 MCP サーバーです。
Mail、Calendar、Reminders、Messages、Contacts、Notes、Shortcuts、Files、System、Maps を利用するための単一のエントリーポイントです。このサーバーは単独のサーバー群をラップし、統合された MCP インターフェースを提供します。
機能
- 複数の Apple アプリにまたがるコンテキストの読み取り
- すべてのアプリで統一された操作
- 1 日の計画、コミュニケーションの整理、会議準備のためのプロンプト
- メール、カレンダー、リマインダー、メモ、コミュニケーションの振り分けに関する永続的な既定値
- 特定の方法で常に振り分ける連絡先ごとの設定
- コミュニケーションの振り分け、メールのアーカイブ、フォローアップの記録、コラボレーションの要約のためのヘルパーワークフロー
- メールスレッドのヘルパーと連絡先の方法編集を一元化
- 元に戻せる操作のプレビュー、監査、取り消し
- スコープを設定したルート内での、Files を利用した添付ファイルおよびドキュメントのワークフロー
- 最前面のアプリ、クリップボード、通知、実行中のアプリ、アシスタントに関連する macOS 設定を利用する、System を活用したワークフロー
- 正確な Focus コンテキストと、ブリーフィングや振り分けに使える統合システムスナップショット
- 外観、Finder、Dock、主要なアクセシビリティ設定を明示的に変更する macOS 設定機能
- ネイティブのアプリドメイン MCP ではタスクを直接完了できない場合に使える、制限付き GUI フォールバックツール
- Finder を活用したファイルワークフロー、Finder タグ、最近使った場所、Apple Files 経由の iCloud Drive 認識
- Apple Maps を使った場所検索やルートの見積もりなど、移動を考慮したワークフロー
- 毎日のブリーフィング、週次ブリーフィング、コミュニケーション整理のツール
apple_list_promptsとapple_get_promptによるプロンプトのフォールバック- 個別に 10 個設定する代わりに、インストール先を 1 つに集約
使用する場面
- 複数の Apple アプリをまたいだパーソナルアシスタントのワークフロー
- アプリ間の操作(例:Calendar と Reminders の連携)
- 単独の MCP を個別に接続する必要のない、より簡単なセットアップ
ツールの検出
Apple-Tools-MCP は tools/list を通じて、readOnlyHint/destructiveHint の注釈と構造化出力スキーマを含む、すべてのツールを公開します。最新のクライアントは、大規模なツール群を必要に応じて自身で遅延ロードします。コンテキストに制約のあるクライアント向けの機能は次のとおりです。
search_toolsは、名前、別名、ドメインタグからツールを検索しますget_tool_infoは、必要に応じて単一のツールの完全なスキーマと使用例を読み込みます- 生成されたコードモードのラッパーは
generated/tool_wrappers/pythonにエクスポートされます
この Mac にインストール
クローンからインストール
git clone https://github.com/JonathanRReed/Apple-MCPs.git
cd Apple-MCPs
uv sync --all-packages
これにより、統合エントリーポイント .venv/bin/apple-tools-mcp と、すべての単独サーバーのコンソールスクリプトを含む uv ワークスペース環境が 1 つ構築されます(bash scripts/install_all.sh も同じ処理を行いますが、uv がないマシンでは仮想環境にフォールバックします)。MCP クライアントの接続先として Apple-Tools-MCP/start.sh を指定することもできます。このスクリプトは uv run を優先し、利用できない場合は通常の仮想環境のブートストラップにフォールバックします(Python 3.11 以降が必要です)。
AI エージェントにインストール
汎用 MCP クライアントの設定
{
"mcpServers": {
"apple-tools": {
"command": "uvx",
"args": ["apple-tools-mcp"],
"env": {
"APPLE_MAIL_MCP_SAFETY_PROFILE": "safe_manage",
"APPLE_CALENDAR_MCP_SAFETY_MODE": "safe_manage",
"APPLE_REMINDERS_MCP_SAFETY_MODE": "safe_manage",
"APPLE_FILES_MCP_ALLOWED_ROOTS": "/Users/you/Desktop,/Users/you/Documents,/Users/you/Downloads,/Users/you/Library/Mobile Documents/com~apple~CloudDocs",
"APPLE_FILES_MCP_SAFETY_MODE": "safe_manage",
"APPLE_SYSTEM_MCP_SAFETY_MODE": "safe_manage",
"APPLE_CONTACTS_MCP_SAFETY_MODE": "safe_manage",
"APPLE_NOTES_MCP_SAFETY_MODE": "full_access",
"APPLE_MESSAGES_MCP_SAFETY_MODE": "full_access",
"APPLE_SHORTCUTS_MCP_SAFETY_MODE": "full_access"
}
}
}
}
これらの値は uvx と pip によるインストール時の既定値なので、変更したい行だけを指定してください。アシスタントが新しいメールを送信できるようにするには(返信や転送だけでなく)、APPLE_MAIL_MCP_SAFETY_PROFILE を full_access に設定します。Claude Desktop バンドルでは、以前のバンドルと同様に、Mail の既定値は full_access です。変更するには、Settings > Extensions > Apple Tools > Configure を開いてください。env を変更した後は、クライアントを再起動してください。
クローンから実行する場合は、コマンドに /path/to/Apple-MCPs/Apple-Tools-MCP/start.sh を指定し、args は空にしてください。
Claude Code の例
claude mcp add --transport stdio --scope user apple-tools -- uvx apple-tools-mcp
--scope user を指定すると、すべてのプロジェクトでサーバーを利用できます。代わりに .mcp.json を使って 1 つのリポジトリで共有するには、--scope project を指定してください。
- すべてのアプリに対応するヘルスチェックおよび概要ツール
- アプリ横断のプロンプト
- Mail、Calendar、Reminders、Messages、Contacts、Notes、Shortcuts、Files、System、Maps の委譲ツール
- 提案と権限ガイド
- Files、System、Maps のリソースとプロンプト
- Focus、システムコンテキスト、Finder での表示、ファイルを開く操作、ファイルのタグ付けに対応する統合ラッパー
- 設定ツール:デフォルト設定と連絡先設定の取得、検出、更新
- コミュニケーションツール:準備、送信、プレビュー
- ワークフローツール:アーカイブ、デフォルト設定を使用したリマインダーとメモの作成、デフォルトを適用した書き込みのプレビュー、フォローアップの記録、フォローアップ記録のプレビュー、イベントでの共同作業の要約
- 起動の堅牢化ツール:Maps の厳格なラッパー、重複する連絡先の検出、ダイジェストフォルダーのヘルパー、Shortcut ブリッジのルーティング
- 監査ツール:最近の操作の一覧表示と取り消し
- ブリーフィング:日次、週次、コミュニケーションのトリアージ
- プロンプトのフォールバック:
apple_list_promptsとapple_get_prompt - Mail スレッドツール:取得、返信、アーカイブ
- Contacts の変更:ラベル付きメソッドによる作成、更新、削除
- Calendar と Messages の権限診断
- Messages 上の連絡先名:Contacts へのアクセスがすでに許可されている場合、参加者と送信者に
display_name/contact_idが付与されます。また、すべての Messages レスポンスで、contact_names_status(ok、permission_denied、unavailable)に名前がない理由が示されます。名前が割り当てられるのは完全に一致する所有者のみです。異なる市外局番の電話番号に連絡先名が流用されることはありません。 - 起動と復旧:
apple_health、apple_permission_guide、apple_recheck_permissions
アシスタントのデフォルト設定
Apple-Tools-MCP は、次のデフォルト設定を含む軽量なアシスタント状態ファイルを保存できます。
- デフォルトのメールアカウント
- デフォルトのアーカイブメールボックス
- デフォルトのカレンダー
- デフォルトのリマインダーリスト
- デフォルトのメモフォルダー
- 優先するコミュニケーションチャネル(
messages、mail、auto) - 優先するメッセージの宛先タイプ(
phone、email、auto) - 特定の相手に対する、連絡先ごとの優先チャネルと宛先の上書き設定
apple_detect_defaults() は、保存済みの設定を probe_status: "not_probed" として返し、状態ファイルには書き込みません。未設定の宛先を検出して保存するには、ユーザーが検出を求めた後に apple_detect_defaults(probe_apps=true) を呼び出してください。この明示的なプローブでは、Mail または Notes が開き、macOS のアクセス許可を求める場合があります。このツールは、設定を書き込めることを明示しています。デフォルト設定の確認には apple_get_preferences を、直接設定するには apple_update_preferences を使用してください。
apple_health、apple_recheck_permissions、apple_overview、apple://overview は、アプリに Apple Events を送信せず、新しいアクセス許可も要求しません。概要ではリソースキーは維持されますが、アクセス許可が必要なアプリのデータについては、ok: false および status: "not_probed" が返されます。ユーザーがデータを求めた場合は、該当するドメインのリソースまたはツールを読み取ってください。保護されたフォルダーではアクセス許可が必要になる場合があるため、最近使ったファイルのスキャンも保留されます。ショートカットライブラリの列挙も保留されます。明示的に指定された shortcuts://all リソースは、コマンドごとにデフォルトで 300 秒のタイムアウトを設定して、複数の CLI コマンドを実行できます。マップの利用可否に関するメタデータは引き続き含まれます。明示的なアプリ操作では、引き続きアクセス許可が確認され、要求されたアプリが起動する場合があります。
リマインダーまたはメモの操作で宛先が未設定の場合、そのドメインのデフォルト設定のみを検出します。
デフォルトでは、状態ファイルは ~/.apple-tools-mcp/preferences.json に保存されます。APPLE_AGENT_MCP_STATE_FILE を使って保存先を変更できます。
Apple-Tools-MCP は、監査履歴と取り消し可能な操作の取り消しを統合サーバーで提供できるよう、最近のアシスタント操作も ~/.apple-tools-mcp/actions.json に保存します。
アーカイブ、リマインダー、メモ、Mail のフォローアッププレビューでは、デフォルト設定の検出が必要な場合や宛先を解決できない場合も含め、保存済みの設定と操作履歴は変更されません。リマインダーリストまたはメモフォルダーの ID が明示的に指定されている場合、保存済みのラベルはその ID がデフォルトと一致するときにのみ使用されます。それ以外の ID はプレビューにそのまま表示されます。
アーカイブの検出は、選択したアカウント内に限定されます。アカウントを明示的に上書きした場合、別のアカウントに保存されたアーカイブメールボックスは再利用されず、保存済みのデフォルト設定も置き換えられません。そのアカウントでアーカイブを検出できない場合は、メールボックスを明示的に指定してください。
使用方法
- まず連絡先で相手を特定し、保存済みの既定値に基づいてメッセージとメールのどちらを使うか判断します。
- 特定のチャネルを常に希望する相手には、連絡先ごとの設定を行います。
- クライアントが確認を求めている場合は、リスクのある操作や既定値を使う作成フローをプレビューします。
- ユーザーが単一のメッセージではなく会話に言及している場合は、メールのスレッド用ヘルパーを使用します。
- アシスタントが繰り返し確認を求めないよう、既定値(アーカイブ用メールボックス、カレンダー、リマインダーリスト、メモのフォルダー)を早めに設定します。
- 通信先を確実に判断できるよう、連絡先情報を最新の状態に保ちます。
- ローカルの書類に関するリクエストでは、メール、メッセージ、メモ、ショートカットより先にファイルを使用します。
- 割り込みを伴う操作、特に最前面のアプリ、クリップボード、バッテリーの状態が重要な場合は、事前にシステムのコンテキストを確認します。
- 集中モードのサポートは、正確性を重視したベストエフォートとして扱います。利用可能な場合は使用し、ローカル環境で MCP が未対応と報告している場合に、現在の集中モードをでっち上げないでください。
- macOS の設定を変更するには
apple_update_system_settingを使用し、ネイティブのアプリドメインツールでタスクを完了できない場合に限りapple_control_frontmost_appを使用します。 - リクエストが実際には macOS の設定変更である場合は、汎用 GUI 自動化よりも専用のシステム設定ツールを優先します。
- GUI フォールバックツールは、ネイティブのドメイン MCP ではタスクを完了できず、クライアントにアクセシビリティへのアクセスが許可されている場合にのみ使用します。対象アプリは
applicationまたはbundle_idで指定してください。そのアプリはAPPLE_SYSTEM_MCP_GUI_ALLOWED_APPSに記載されている必要があります(GUI 入力を参照)。 - マップ検索と経路案内には、ネイティブのマップ MCP ツールを使用します。マップの対応機能を検証する際に、シェル、ウェブ、外部のマッププロバイダーで代用しないでください。
- ネイティブのドメインサポートがない場合は、その場しのぎのシェル操作や GUI 操作ではなく、明示的な橋渡しとしてショートカットを使用します。
- 日次または週次のブリーフィングをメモに保存する前に、専用のダイジェストフォルダーヘルパーを使用します。
- 経路や所要時間がスケジュールやコミュニケーションに影響する場合は、マップを使用します。
- 元に戻せる操作には
apple_list_recent_actionsとapple_undo_actionを使用します。 - メールで特定の送信者 ID を使う必要がある場合は、アカウントのニックネームだけでなく、正確な送信者のメールアドレスを
from_accountに渡します。
macOS のアクセス許可
- メールには、メールへのオートメーションアクセスが必要です
- カレンダーには、カレンダーへのアクセスが必要です
- リマインダーには、リマインダーへのアクセスが必要です
- メッセージには、メッセージへのオートメーションアクセスと、履歴へのフルディスクアクセスが必要です
- 連絡先には、連絡先へのアクセスが必要です
- メッセージの応答で連絡先名を表示するには、先に連絡先ツールを明示的に実行する必要があります(連絡先ヘルパーを構築し、アクセスを要求します)。メッセージの読み取りではヘルパーの構築もアクセスの要求も行わず、代わりに
contact_names_statusを報告します - メモには、メモへのオートメーションアクセスが必要です
- ショートカットは通常、別途プライバシーの許可を求めずに動作します
- ファイルへのアクセスは macOS のプライバシー許可ではなく、
APPLE_FILES_MCP_ALLOWED_ROOTSによって制御されます - ホストアプリに応じて、システム操作によってシステムイベント、アクセシビリティ、またはオートメーションの許可が求められることがあります
- 署名されていないローカルインストールでの集中モードの状態確認は、正確性を重視したベストエフォートです
- macOS で明確に取得できない通知センターの履歴については、取得できると主張しません
- マップにプライバシーの許可は不要ですが、検索と経路案内にはローカルの Swift ヘルパーのコンパイルが必要です
起動チェックリスト
uvx apple-tools-mcp(またはクローンのApple-Tools-MCP/start.sh/インストール済みの.venv/bin/apple-tools-mcpエントリーポイント)を MCP クライアントに追加します- クライアントを再読み込みまたは再接続し、Apple-Tools-MCP のツール群をコンテキストに読み込みます
- まず
apple_healthを呼び出して、すべてのドメインを確認します - ドメインがブロックされている場合は、
apple_permission_guideを呼び出します - macOS のアクセス許可を変更した後、
apple_recheck_permissionsを呼び出します
トランスポートとプロトコルの検証
stdio が既定かつ推奨のトランスポートです。代わりに Streamable HTTP を提供するには、APPLE_AGENT_MCP_TRANSPORT=streamable-http を設定します(必要に応じて APPLE_AGENT_MCP_HOST と APPLE_AGENT_MCP_PORT も設定します)。以下ではプロトコルの検証に使用します。
公式 MCP 適合性テスト
適合性テストモードで Apple-Tools-MCP を起動します。
cd /path/to/Apple-MCPs/Apple-Tools-MCP
APPLE_AGENT_MCP_TRANSPORT=streamable-http \
APPLE_AGENT_MCP_PORT=8765 \
APPLE_AGENT_MCP_CONFORMANCE_MODE=1 \
./start.sh
次に、公式のアクティブスイートを実行します。
npx -y @modelcontextprotocol/conformance server \
--url http://127.0.0.1:8765/mcp \
--suite active
APPLE_AGENT_MCP_CONFORMANCE_MODE=1 を設定すると、コンテンツタイプ、リソース、リソーステンプレート、プロンプト、進捗、補完を対象とするオプトイン方式の MCP 適合性テスト機能が追加されます(spec 2026-07-28 で削除された機能のフィクスチャは意図的に含まれていません)。これは CI とプロトコルテストを目的としており、通常のアシスタント利用を想定したものではありません。
ブリーフィングおよびトリアージツール(apple_generate_daily_briefing、apple_generate_weekly_briefing、apple_triage_communications_task)は、標準的な同期ツールです。以前これらのツールが使用していた実験的な MCP tasks API は、spec(SEP-1686)および SDK から削除されましたが、ツール名と結果は変わりません。
起動ドキュメント
Inspector CLI のスモークチェック
このサーバーディレクトリから実行します。
npx -y @modelcontextprotocol/inspector --cli bash ./start.sh --method tools/list
npx -y @modelcontextprotocol/inspector --cli bash ./start.sh --method prompts/list
npx -y @modelcontextprotocol/inspector --cli bash ./start.sh --method resources/list
リポジトリ全体のスモークテストを実行するには、次を実行します。
cd /path/to/Apple-MCPs
bash scripts/inspector_smoke.sh
エージェントのルーティングプロンプト
<apple_tools>
`tools/list` returns the full tool surface. If context is constrained, use `search_tools` first, then `get_tool_info` only for the tools you plan to call.
<routing>
<imessage trigger="text, message, msg, iMessage">
Resolve recipient via Contacts first. Confirm if multiple matches.
Omit service_name parameter entirely.
</imessage>
<contacts trigger="lookup, phone number, email, contact">
Run before any iMessage or Mail action.
</contacts>
<mail trigger="email, mail, inbox, draft, reply">
Search requires a query string (sender, subject, or "*" as wildcard). No list-all endpoint.
If text vs. email is ambiguous, ask once.
</mail>
<calendar trigger="calendar, event, schedule, appointment, meeting, block time">
Confirm date, time, duration, and title before writing.
</calendar>
<reminders trigger="remind me, task, to-do, don't forget">
Reminders are organized into lists. Identify available lists on first use and set a default.
due_date requires timezone offset: yyyy-MM-ddTHH:mm:ss-HH:00
</reminders>
<notes trigger="note, jot down, write this down, save this">
Multiple accounts may have a "Notes" folder. Identify them on first use and set a default.
Use for reference only. Time-sensitive items go to Reminders or Calendar.
</notes>
<shortcuts trigger="shortcut, automation, run shortcut">
List available shortcuts before running if request is vague.
</shortcuts>
<files trigger="file, folder, attachment, document, download, desktop">
Use Files before Mail, Messages, Notes, or Shortcuts when the request references local paths or attachments.
Confirm the exact path before mutation or send actions.
</files>
<system trigger="clipboard, frontmost app, battery, notification, open app">
Use System when local desktop context affects the next action.
Keep writes scoped unless the user clearly asked for a notification, clipboard update, or app launch.
</system>
<maps trigger="map, directions, route, commute, eta, address, place">
Use Maps when place lookup or travel time affects scheduling or communication.
Confirm origin, destination, and transport mode for time-sensitive plans.
</maps>
</routing>
<disambiguation>
1. Has due date/time -> Reminders
2. Reference material, no action -> Notes
3. Involves another person -> iMessage or Mail (Contacts first)
4. Text vs. email unclear -> ask once
</disambiguation>
<known_gotchas>
- service_name on iMessage calls causes error (-1728). Omit it.
- Bare timestamps without timezone offset fail on Reminders.
- Mail has no "list recent" endpoint. Always pass a search query.
- Use `search_tools` plus `get_tool_info` to inspect tools without loading every schema into context.
- Multiple Notes folders exist across accounts. Pick one default.
- Files access is limited to APPLE_FILES_MCP_ALLOWED_ROOTS.
- Some System actions depend on host app automation approval.
- GUI input needs application or bundle_id, and the app must be in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS. Terminals and script editors are always refused.
- Maps search and directions depend on the local Swift helper and Xcode command line tools.
</known_gotchas>
</apple_tools>
関連サーバー
- Apple Files MCP
- Apple System MCP
- Apple Maps MCP
- Apple Mail MCP
- Apple Calendar
- Apple Reminders MCP
- Apple Messages MCP
- Apple Contacts MCP
- Apple Notes MCP
- Apple Shortcuts MCP
GUI 入力
apple_control_frontmost_app と委譲先の system_gui_* 入力ツールは、APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS に記載されたアプリにのみ入力を送信します。デフォルトでは空のため、設定するまで GUI 入力は無効です。メニューバー項目の一覧表示(list_menu_bar_items)は読み取りのみで、許可リストは不要です。
- 形式:カンマ区切りのバンドル ID。例:
com.apple.TextEdit,com.apple.Safari。アプリのバンドル ID を調べるには、osascript -e 'id of app "TextEdit"'を実行します。 - 設定場所:MCP クライアント設定にある、このサーバーの
envブロックです。例:"APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS": "com.apple.TextEdit,com.apple.Safari"。Claude Desktop では、「設定」>「拡張機能」を開き、Apple Tools を設定して「GUI 入力を受け付けるアプリ」に入力します。その後、クライアントを再起動してください。 - すべての入力アクション(
click_menu_path、press_keys、type_text、click_button、choose_popup_value)では、applicationまたはbundle_idが必須です。最前面にあるアプリに入力が送信されることはありません。 - ターミナル、スクリプトエディター、自動化アプリ(Terminal、iTerm2、Ghostty、Warp、Script Editor、Automator、Shortcuts、Xcode、VS Code、Cursor、JetBrains IDE、Raycast、Alfred など)は、許可リストに追加されていても常に拒否されます。
メールの添付ファイル
下書きまたは送信メールにローカルファイルを添付する前に、APPLE_MAIL_MCP_ALLOWED_ATTACHMENT_ROOT を専用のディレクトリに設定してください。この変数が未設定の場合、添付ファイルは無効になります。同じディレクトリ制限は、スタンドアロンの Mail サーバーと統合型の Apple Tools サーバーにも適用されます。
calendar_list_calendars で表示名とソースを指定してカレンダーを選択し、返された calendar_id を変更せずに渡してください。Calendar の権限を変更して MCP サーバーを再起動した後は、カレンダーを再度一覧表示してください。アラームを完全に編集するには、ネイティブのカレンダー ID を使ってイベントを一覧表示し、返されたネイティブのイベント ID を使用してください。既存の applescript:: ID は引き続きオートメーションを使用します。カレンダーとイベントの識別子の選択を参照してください。
カレンダーのアラーム編集は、スタンドアロンサーバーの仕様に従います。完全な編集と、明示的なアラームとフィールドの同時更新には、ネイティブの EventKit が必要です。オートメーションのフォールバックでは、通常のフィールド編集時にアラームを省略してください。アラームのみの初期アラートと空リストでの何もしない処理には、すべてのアラートコレクションが読み取り可能で、かつ空であることが必要です。挿入の失敗や中断された変更処理は、結果が不明な場合があります。再試行する前にイベントを確認してください。カレンダーのアラーム対応を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。