mcpField
E
EK Bridge

EK Bridge

ローカル
github.com生産性41 週間前に更新

EK Bridge について

EK Bridgeは、AIエージェントにApple CalendarとRemindersへの限定アクセスを許可するオープンソースのmacOSメニューバーアプリです。エージェントごとの権限、変更前の承認、操作履歴を備え、アクセスを制限・確認したいMacユーザー向けです。

主な機能

  1. 01エージェントごとのカレンダー・リスト権限
  2. 02変更前の承認リクエスト
  3. 03操作履歴とアクセスの取り消し
  4. 04イベントとリマインダー用の12個のツール
  5. 05ローカルMCPサーバー

活用シーン

  1. 01選択したカレンダーだけをエージェントに読ませる
  2. 02エージェントが提案した予定変更を確認する
  3. 03接続したエージェントごとにリマインダー権限を制限

MCP 対応

EK BridgeはローカルMCPサーバーを実行し、各エージェントに許可された範囲でカレンダーとリマインダーのツールを公開します。既定では`127.0.0.1`のみで待ち受け、実験的なリモートアクセスにはユーザーが用意するトンネルを使います。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

README の画像

EK Bridge

AI エージェントにカレンダーを使わせましょう。すべてではなく、選んだものだけ。
Claude、ChatGPT、Cursor、スクリプトから、選んだカレンダーとリマインダーリストだけを使えるようにする、無料のオープンソースの Mac メニューバーアプリです。何かを変更する前には確認を求めます。

最新リリース macOS 14 以降 Developer ID で公証済み ライセンス:Apache-2.0 io.github.bereciartua/ek-bridge として MCP Registry に掲載 mcpservers.org に掲載

Mac 版をダウンロード · 使い始める · エージェントの設定 · 変更履歴

EK Bridge の概要:EK Bridge が有効で、3 つの接続とポート 47615 の MCP が表示されています。「要確認」には、ホームへのイベント追加アクセスを求める Cursor、利用できないカレンダー、拒否されたリクエストが表示されています。「今日」には、29 件のリクエスト、4 件の変更、6 件の問題と、「オートミルクを買う」を追加、「デザインレビュー」を変更など、名前付きの最新の変更が表示されています。

  • 各エージェントが操作できる範囲を選べます。 エージェントごとに、利用を許可するカレンダーとリマインダーリスト、および読み取り、作成、編集、削除、完了のどれを許可するかを選びます。新しいエージェントには何も許可されていません。
  • 変更はすべて承認できます。 エージェントが書き込もうとしている内容を正確に示すパネルが表示されます。「許可」をクリックするまで、何も変更されません。
  • すべてを確認し、ワンクリックで停止できます。 アクティビティには、各エージェントが変更した内容と、拒否した理由がすべて表示されます。メニューバーから、エージェントを一時停止または削除したり、EK Bridge 全体を一時停止したりできます。

対応環境: Claude Code、Claude Desktop、Codex、Cursor(実機でのテスト済み)、およびその他の MCP クライアントに対応しています。VS Code(Copilot)、Gemini CLI、Zed、Cline、JetBrains AI Assistant、Devin Desktop 向けの設定も用意されています。claude.ai と ChatGPT は、実験的な リモートアクセス 経由で接続できます。

依頼できること

エージェントの接続後は、普段の言葉で依頼できます。エージェントが操作できるのは、許可したカレンダーとリストだけです。

依頼内容エージェントが使うツール
「今週の仕事用カレンダーの予定と、空いている時間を教えて」read_events
「木曜日のデザインレビューを金曜日の午後3時に移動して。同じ長さにして」read_events、続いて update_event(先に確認を求めます)
「来週月曜日の9時にパスポートの更新をリマインドして」許可したリストで create_reminder
「平日の毎日、9:30〜10:30を集中時間としてブロックして」繰り返しルールを指定した create_event

イベントとリマインダーに対応する12個のツールがあり、タイムゾーン、繰り返し、通知、場所、メモ、リンクなど、Calendar がサポートするすべてのフィールドを扱えます。各エージェントに表示されるのは、許可されたアクセス範囲で使えるツールだけです。詳しくは MCP ガイド をご覧ください。

はじめに

  1. インストールします。 EKBridge.dmg をダウンロードして開き、EK Bridge を Applications にドラッグします。ディスクイメージや「ダウンロード」から開いた場合は、そこへ移動するかどうかを尋ねられます。または、Homebrew を使います。

    brew install --cask bereciartua/tap/ek-bridge
    
  2. アプリを開きます。 3 つの手順からなるセットアップが表示されます。以降はメニューバーから開けます。

    1. カレンダーとリマインダーへのアクセスを許可します。 エージェントが使うほうだけでかまいません。もう一方はスキップできます。
    2. エージェントを追加します。 タイル(お使いの Mac で見つかったエージェントが先頭に表示されます)と、最初に読み取りを許可する内容(すべてのカレンダーとリストを読み取る など)を選びます。エージェントに必要なものだけに「読み取り」を許可してください。読み取られた内容は、その AI プロバイダーに送信されます。
    3. 接続します。 Claude Desktop に追加…(または Cursor、Claude Code)を選ぶと、エージェントの設定に加える変更内容が正確に表示され、バックアップが作成されます。トークンが書き込まれることはありません。また、EK Bridge も有効になります。それ以外のエージェントでは、接続の 接続 タブからコマンドまたは設定をコピーしてください。エージェントから最初のリクエストが届くと、この手順は完了です。
EK Bridge のセットアップ画面:カレンダーとリマインダーへのフルアクセスが許可され、Claude Code がすべてのカレンダーとリストを読み取り、変更前に確認するよう追加されています。手順 3「Claude Code を接続」には「Claude Code に追加」ボタンがあります。下には「代わりにセットアップをコピー」、更新のチェックボックス、「コマンドライン接続を追加」が表示されています。

これで準備完了です。上記の質問のいずれかをエージェントに尋ねてみてください。各エージェントのセットアップ方法とトラブルシューティングについては、MCP ガイドをご覧ください。

EK Bridge の動作には、Apple silicon または Intel 搭載の macOS 14 以降 が必要です。Apple による公証を受けており、自動で最新の状態に保たれます(各アップデートのインストール時にはクリックが必要です)。リリースノートとチェックサムはリリースにあります。旧称 EventKit Bridge からアップグレードしますか? セットアップをご覧ください。EK Bridge は個人プロジェクトで、パブリックプレビューとして公開されており、サポートは可能な範囲で提供します。

操作の主導権を保つ

カレンダーとリマインダーへのアクセス権限を持つアプリは EK Bridge だけです。エージェントは EK Bridge とやり取りし、カレンダーに直接アクセスすることはありません。また、すべてのリクエストが許可した内容に照らして確認されます。

各エージェントに許可する内容を個別に選択

エージェントごとに独自のキーとアクセス権限が設定されます。各カレンダーに対して「読み取り」「作成」「編集」「削除」、各リマインダーリストに対して「完了」を許可できます。「仕事」は共有し、「家族」は自分だけで使うこともできます。

接続の「アクセス」タブ:「仕事」には「読み取り」「作成」「編集」、「自宅」には「読み取り」が設定され、「家族」と Google チームカレンダーには何も設定されていません。「誕生日」と「米国の祝日」は読み取り専用です。変更の確認方法は「最初に確認」に設定されています。各列見出しにはメニューがあり、各行の ⋯ ボタンからプリセットを選べます。
変更ごとに承認

デフォルトでは、エージェントが何かを書き込む前に、小さなパネルに設定しようとしているフィールドがすべて表示されます。許可または拒否をクリックするか、1 つのエージェントに 15 分間作業を許可します。45 秒以内に応答しなかったリクエストは拒否されます。信頼できるスクリプトの場合は、確認をオフにできます。

変更前の確認パネル:Claude Code が Europe/Madrid の「仕事」に毎週のイベントを追加しようとしています。「日時」「繰り返し」「場所」(地図ピン付き)、「メモ」、「リンク」(ホスト名は太字)、「通知」、「表示方法」の各行と、「拒否」「許可」ボタン、45 秒のカウントダウン、15 分間変更を許可するチェックボックスが表示されています。 ### 拒否する前に確認します

エージェントが読み取り可能なカレンダーに項目を追加、変更、完了、または削除しようとして、その操作だけが許可されていない場合、EK Bridge は同じパネルで確認します。Claude Code は「Groceries」にリマインダーを追加できません。今回のみ許可、常に許可(その操作だけを保存します)、または今は許可しないを選択できます。エージェントから見えないカレンダーについて確認することはなく、同じ操作について確認するのは最大でも1時間に1回です。

アクセスリクエストパネル:「Claude Code は『Groceries』にリマインダーを追加できません」と表示されています。Read 権限があり、claude-code 2.4.1 から、木曜日9:00が期限の「Buy oat milk」の追加リクエストが報告されています。「今は許可しない」「今回のみ許可」「常に許可」ボタンと、45秒の待機時間があります。
すべて確認でき、いつでも停止できます

アクティビティには、各エージェントが変更した内容が名前付きで表示され(「Design review」を移動)、拒否した理由も平易な言葉で説明されます。EK Bridge が保存するのは項目のIDだけで、行を開いたときに名前を取得します。カレンダーで表示もできます。エージェントの接続を一時停止すると、設定を保持したままリクエストを拒否できます。エージェントを削除すると、接続を完全に切断できます。メニューバーから EK Bridge 全体を一時停止することもできます。誰も応答しなかったため変更が行われなかった場合に通知する機能も、必要に応じて有効にできます。

「今日」と「昨日」にグループ化されたアクティビティ:時刻、接続、変更内容(リマインダーを追加、イベントを変更、リマインダーを削除)、カレンダーの色付きの項目(Buy oat milk、Design review)、結果(承認済み、許可済み、あなたが拒否)。選択した行の詳細には、「Work」にある「Design review」、移動前と移動後の時刻、「カレンダーで表示」、項目のIDのみが保存されることが表示されています。
内部の仕組み
  • デフォルトではローカル。 有効にするまでは、すべての機能がオフです。MCP サーバーは 127.0.0.1 のみでリッスンします。アカウントも、分析機能も、当社のサーバーもありません。
  • エージェントごとにキーを発行。 各エージェントには固有の256ビットトークンがあり、ハッシュのみが保存されます。スクリプトはそれぞれ独自の Ed25519 キーでリクエストに署名します。
  • 安全な書き込み。 編集と削除には、項目の最新バージョンが必要です。書き込まれたすべてのフィールドを読み戻し、不一致があればロールバックします。
  • クラウドへの接続はトンネル経由のみ。 クラウドエージェントが EK Bridge に接続できるのは、Remote Access と、あなたが実行するトンネルを経由する場合に限られます。許可したエージェントのみが対象で、Mac がスリープ中、オフライン、またはログアウト中は接続できません。
  • 署名付きアップデート。 アップデートは GitHub から取得され、開発者による署名が付与され、インストール前に検証されます。
  • オープンソース。 コード、脅威モデル、テスト記録を確認できます。

保護されないもの: macOS ユーザーとして実行中の別のプログラムは、同じキーファイルを読み取ることができます。アクセス設定は接続したエージェントを分離するものであり、Mac にすでに存在するマルウェアへの対策ではありません。詳しくはセキュリティ境界をご覧ください。

FAQ

無料で使えますか?

はい。EK Bridge は Apache License 2.0 のもとで公開されているオープンソースで、アカウント登録や試用期間は必要ありません。

カレンダーのデータが Mac の外に送信されますか?

EK Bridge 自体がデータを外部に送信することはありません。プライバシーには、EK Bridge が行うすべての通信を記載しています。エージェントが EK Bridge を通じて読み取ったデータは、そのエージェントと AI プロバイダーに送信され、それぞれの利用規約が適用されます。そのため、エージェントに必要な場合にのみ読み取りアクセスを許可してください。

変更の前に毎回確認されますか?

AI エージェントの場合、デフォルトでは確認されます。信頼できるスクリプトなど、接続ごとに確認を無効にすることも、エージェントによる変更を一度に 15 分間許可することもできます。変更前の確認をご覧ください。

どのカレンダーに対応していますか?

カレンダーアプリやリマインダーアプリに表示されるアカウントに対応しています。iCloud、Google、Exchange、CalDAV、「この Mac 内」などが含まれます。これまでの実機テストは iCloud で行っています。テストをご覧ください。

ChatGPT や claude.ai と一緒に使えますか?

はい。リモートアクセスを使うと、Tailscale Funnel などのトンネルを介して、クラウド上のエージェントを Mac に接続できます。デフォルトでは無効で、実験的な機能です。また、Mac の電源が入っていて、オンラインである必要があります。クラウド上のエージェントから接続するをご覧ください。

自分のスクリプトから使えますか?

はい。コマンドラインツールの bridge-client を使います。エージェントと同様に、各スクリプトには個別のキーとアクセス権が割り当てられます。スクリプトから接続するをご覧ください。

ほかの Mac 向け MCP サーバーとの違いは何ですか?

多くの MCP サーバーは、アプリやサービスごとに 1 つのスイッチで、エージェントに幅広いアクセスを許可します。EK Bridge が対応するのはカレンダーとリマインダーのみですが、カレンダーごと、エージェントごとにアクセスを設定でき、承認、アクティビティログ、アクセス権の取り消しにも対応しています。エージェントにすべてのアクセスを許可して問題ない場合は、EK Bridge は必要ないかもしれません。

Apple が開発したものですか?

いいえ。EK Bridge は、Apple が公開している EventKit フレームワークを基盤として開発された、独立したオープンソースプロジェクトです。Apple とは提携しておらず、Apple による推奨も受けていません。

ほかに質問がありますか?ディスカッションでお尋ねください。

ほかの接続方法

スクリプトから接続する

MCP を使わないスクリプトやツールでは、接続ごとのキーを使って各リクエストに署名する bridge-client を使用します。

  1. 接続元 ▸ コマンドラインから接続を追加し、アクセス権を選んで保存します。

  2. 設定 ▸ 詳細 ▸ コマンドラインツールをインストールからツールをインストールします。bridge-client が ~/.local/bin にリンクされます。シェルから見つからない場合は、そのフォルダーを PATH に追加してください。(Homebrew ではすでに独自の bin にリンクされています。)

  3. テストリクエストを送信します。接続ページに、コピーして使えるコマンドが用意されています。

    bridge-client scope_status --client "Morning briefing"
    

ツールをインストールするまでは、コピーしたコマンドにはアプリのフルパス /Applications/EKBridge.app/Contents/MacOS/bridge-client が使われるため、そのまま貼り付けて実行できます。bridge-client --help には、すべてのコマンドと必要なアクセス権が記載されています。エラーには、問題の内容と修正方法が示されます。また、問題の種類ごとに異なる終了コードが返されます。安全な最初の CLI チェックとAPI および CLI リファレンスをご覧ください。

クラウドエージェントから(実験的)

クラウドエージェントはベンダーのサーバー上で実行されるため、127.0.0.1 にアクセスできません。リモートアクセス(サイドバーに専用ページがあり、ガイドに沿って設定できます。デフォルトではオフです)を有効にすると、Tailscale Funnel などのトンネルを実行するための 2 つ目のループバックポート 47616 が開きます。アプリにはコマンドが表示され、接続結果がテストされます。各接続では、クラウドアクセスを許可する必要もあります。

  • ヘッダーを送信するエージェント(Anthropic API と OpenAI API、Claude Code on the web、Cursor と Copilot のクラウドエージェント、Devin)では、接続専用のリモートトークンを使用します。
  • claude.ai、ChatGPT、Gemini Enterprise は OAuth でサインインします。Mac 上で 6 桁のコードを照合して承認します。

リモートアクセスにはオフラインテストがありますが、すべてのクラウドエージェントとトンネルで実際にテストされたわけではありません。必要な間だけ有効にし、URL は非公開にしてください。パスが秘密情報です。クラウドエージェントからの利用を参照してください。

ガイド

目的ガイド
インストール、ソースからのビルド、署名、macOS のアクセスセットアップ
接続を追加してアプリを使用するユーザーガイド
MCP 経由で AI エージェントに接続する、またはリモートアクセス経由でクラウドエージェントに接続する。ツールリファレンスMCP ガイド
CLI の呼び出しとコマンドパラメーターを理解するAPI と CLI のリファレンス
プロセス、ファイルストレージ、セキュリティ上の制限を理解するアーキテクチャと脅威モデル
テスト内容の確認と問題の診断テストとトラブルシューティング
コントリビュート、またはメンテナンスとリリースコントリビュート、メンテナンス

プライバシー

このアプリには、分析、テレメトリー、クラッシュレポート機能はなく、アカウントもありません。カレンダー、リマインダー、接続、アクティビティはMac上に保存されます。アプリが行うすべてのネットワーク接続は次のとおりです。

接続タイミング
MCP サーバー。127.0.0.1:47615 で待ち受けますEK Bridge がオンで、MCP へのアクセス権を持つ接続がある間のみです(Settings ▸ Advanced ▸ Local MCP server でオフにできます)。ループバックのみです。他のコンピューターからは接続できません。
リモートアクセス。127.0.0.1:47616 で待ち受けますRemote Access がオンの間のみです(デフォルトではオフです)。ループバックのみです。実行したトンネルが、クラウドエージェントからの接続をここに転送します。
Remote Access アドレスへの HTTPS リクエスト 1 件Remote Access ガイドでトンネルをテストするとき、または Remote Access ページで Test をクリックしたときのみです。
クラウドエージェントのクライアントメタデータを取得する HTTPS リクエスト 1 件OAuth クラウドエージェント(claude.ai、ChatGPT)をペアリングするときのみです。接続先はそのエージェントが指定するアドレスです。プライベートアドレスとローカルアドレスは拒否されます。
bridge-mcp による 127.0.0.1 への接続Mac上のエージェントが起動したときに、MCP サーバーに接続するために行われます。
最新バージョンの一覧である appcast.xml を取得する GitHub への HTTPS リクエスト 1 件Settings ▸ General ▸ Check for updates automatically がオンの間は1日1回(ダウンロードしたコピーではオンです。ソースからビルドしたコピーでは確認しません)、また Check for Updates… を選択したときに行われます。GitHubにはIPアドレスとアプリのバージョンが伝わります。それ以外は送信されません。
GitHubからのアップデートのダウンロードアップデートウィンドウで Install Update をクリックした後のみです。アプリはダウンロードのEdDSA署名と、同じ開発者によって署名されていることを確認してからインストールします。

接続情報とアクティビティのほかに、EK Bridge はディスク上に、アクセスを許可したカレンダーやリストの名前、アカウント、色(collection-labels.json)を保存します。これにより、利用できなくなった項目にも引き続き名前を表示できます。アクティビティは変更ごとに項目の EventKit ID を保存します(タイトルではありません)。行を開くと項目を検索します。EK Bridge が項目のタイトルや内容を保存することはありません。

通知はmacOSによって表示されます。変更を行っていないことを知らせる通知には項目のタイトルが含まれる場合があり、設定によってはmacOSのロック画面に表示されることがあります。Settings ▸ General ▸ Notifications で種類ごとにオンまたはオフにできます。

エージェントがEK Bridge経由で読み取った情報は、そのエージェントおよびAIプロバイダーに送信され、それぞれのプライバシー規約が適用されます。そのため、各エージェントに必要なアクセスのみを許可してください。Tailscale Funnel以外のトンネルでは、トンネルの接続地点でRemote Accessのトラフィックを読み取れる可能性があります。

セキュリティ境界

  • スクリプトキー。 EK Bridge は、各コマンドライン接続の Ed25519 署名用クレデンシャルを、Application Support ディレクトリ内のアクセス権限が 0600 に制限されたファイルに保存します。レジストリに保存されるのは、公開検証キーと許可情報のみです。
  • MCP サーバー。 EK Bridge が起動しており、接続に MCP アクセス権がある場合にのみ実行されます。127.0.0.1:47615 のみで待ち受け、ネットワークインターフェースでは待ち受けません。すべてのリクエストには、接続ごとに発行され、アクセス権限が 0600 に制限されたファイルに保存されている、256 ビットのトークンが必要です。レジストリに保存されるのは、その SHA-256 ハッシュのみです。また、推奨されるエージェントの設定では、トークンをエージェントの設定に記述せず、ファイルから読み取ります。異なる Host、任意の Origin(ウェブページ)、またはトンネル転送ヘッダーを含むリクエストは拒否され、サインインの失敗が繰り返された場合はロックアウトされます。脅威レビューを参照してください。
  • リモートアクセス。 これもデフォルトではオフです。有効時は、お客様が実行するトンネル用に 127.0.0.1:47616 で待ち受けます。128 ビットのシークレットパス以外のすべてのパスには 404 を返し、クラウドアクセスを許可が有効な接続のみが、専用のリモートトークン、または Mac 上で承認した OAuth 接続を使ってアクセスできます。ローカルトークンはこの経路では使えず、リモート用のクレデンシャルもローカルポートでは使えません。リモートアクセスの脅威レビューを参照してください。
  • リクエストファイルの所有者はお客様であり、アクセス権限は制限されています。

これらの制御では、同じ macOS ユーザーとして実行される別のプロセスを隔離できません。 そのようなプロセスは、クレデンシャル、トークン、またはポリシーファイルにアクセスできます。したがって、許可情報は、このアプリのプロトコルにおける接続間の境界であり、侵害されたユーザーアカウントに対する防御ではありません。

脆弱性は、SECURITY.mdの説明に従って非公開で報告してください。

現在できること

概要は上記のとおりです。EventKitでできないことも含めた完全な一覧は次のとおりです。

一覧をすべて表示
  • 接続ごとに、ユーザーがコレクションと、Read、Create、Edit、Delete、またはリマインダーのCompleteの権限を選択します。新しい接続には権限が一切ありません。保存した権限は編集または接続の削除まで保持されます。EK Bridge自体は、ローカルで有効にするまでオフです。接続は一時停止できます。一時停止中はリクエストを拒否しますが、認証情報とアクセス権は保持されるため、後から再開できます。
  • Mac上のAIエージェントは、ISO 8601形式の時刻を使う12個のMCPツール(list_collections、read_events、get_event、create_event、update_event、delete_event、read_reminders、get_reminder、create_reminder、update_reminder、complete_reminder、delete_reminder)を使用します。各エージェントに表示されるのは、権限で許可されたツールのみです。Ask before changesを有効にすると、接続ごとにすべての書き込みについて承認を求めるように設定でき、変更される各フィールドが表示されます。
  • 読み取りで返されるのは、範囲が制限されたイベントまたはリマインダーの行であり、ユーザーのEventKitストアに無制限にアクセスすることはできません。他のコレクションの読み取りは拒否されます。書き込みには冪等性キーを使用します。編集と削除には、最新の項目バージョンが必要です。
  • イベントでは、EventKitが公開するすべてのフィールドに対応しています。選択したタイムゾーン(指定がない場合はMacのタイムゾーン。デフォルトでUTCにはなりません)での時刻の保存、最大1年間の終日イベント、メモ、地図上のピン付きの場所、URL、アラーム(場所への到着時または出発時を含む)、予定あり/なし、繰り返しルールに対応します。繰り返しイベントは、1件ずつ、特定の回以降、またはシリーズ全体を変更または削除できます。参加者、主催者、自分の返信状況は読み取れます。変更するとすべての参加者に通知される可能性があるため、招待状は読み取り専用です。
  • リマインダーでは、タイトル、期限日と開始日、メモ、URL、優先度、複数のアラーム(場所に基づくアラームを含む)、繰り返しルール、完了と再開、リスト間の移動、繰り返しリマインダーのシリーズ全体の削除に対応します。繰り返しリマインダーの1回分の完了は、監視下のプローブで検証済みの形式とアカウントタイプで可能です(現在は、期限時刻が設定されたiCloudの毎日繰り返すリマインダーに対応)。
  • 更新では送信されたフィールドのみを変更し、書き込まれた各フィールドをすべて読み戻します。不一致がある場合、新しい項目は削除し、編集済みの項目は元に戻します。EventKitでは、人の招待、招待への返信、添付ファイル、移動時間、リマインダーアプリのタグとサブタスクには対応していません。
  • クラウドエージェントは、Remote Accessを使って同じツールを使用できます。これには、自分で実行するトンネル、接続ごとのAllow cloud accessスイッチ、接続ごとの個別のリモートトークン、またはMacで承認するOAuth接続が必要です。Remote Accessはデフォルトでオフで、タイマーによる自動オフを設定でき、メニューバーからワンクリックでオフにできます。
  • エージェントが、すでに読み取り可能なカレンダーまたはリストに対するアクションを1つ許可されていない場合、すぐに拒否する代わりにEK Bridgeがユーザーに確認します(Allow Once、Always Allow、Not Now)。書き込みのみが対象で、頻度は制限されており、接続ごとに切り替えられます。
  • 1つのウィンドウに、概要、アクティビティ(何が変更されたか、保存済みのEventKit IDを使って項目名をその場で検索して表示。変更と問題は90日間保持。各リクエストがMCP、Remote Access、コマンドラインのどれを経由したか)、各接続、設定が表示されます。メニューバーアイコンではEK Bridgeのオン、一時停止中、要対応の状態がわかり、Remote Accessがオンの場合は地球儀が表示されます。通知は任意で、有効化できます。初回起動時にはチェックリストが表示されます。
  • 有効にすると、ログイン時にアプリを起動できます。

サポート対象マトリックスとテスト記録では、実装済みの動作、プロバイダー固有の観察結果、未テストのケースを区別しています。

## ソースからビルドする

macOS 14 以降、Xcode または Xcode Command Line Tools、Python 3 が必要です。ビルドとオフラインテストでは、アプリはインストールされず、アクセス許可も求められません。

sh test.sh
sh build.sh

ビルドすると build/EKBridge.app が作成されます。アプリ内には MCP ランチャー bridge-mcp とコマンドラインクライアント bridge-client が含まれます(build/bridge-client はアプリ内のものへのリンクです)。デフォルトではアプリを アドホック署名 します。この場合、macOS は起動のたびに別の新しいアプリとして扱います。カレンダーとリマインダーへのアクセスを継続させるには、セットアップの説明に従い、安定した ID で署名してください。

  • EVENTKIT_ARCHS="arm64 x86_64" sh build.sh でユニバーサルアプリをビルドします。
  • sh ui_test.sh でウィンドウと動作のテストを実行し、sh ui_snapshots.sh ですべての画面のスクリーンショットを保存します。どちらもテスト用データを使用します。
  • リリースは release.sh(Developer ID 署名、公証、DMG と zip の作成)を使って手動、またはリリースワークフローでビルドします。メンテナンスを参照してください。

貢献する場合は、貢献方法を参照してください。

アンインストール

  1. メニューバーのメニューからアプリを終了します。

  2. カレンダーとリマインダーへのアクセス許可を取り消します。最初のコマンドはアプリのバンドル ID を読み取るため、アプリを削除する前に実行してください。

    bundle_id=$(defaults read /Applications/EKBridge.app/Contents/Info CFBundleIdentifier)
    tccutil reset Calendar "$bundle_id"
    tccutil reset Reminders "$bundle_id"
    
  3. アプリケーションからアプリを削除し、データ ~/Library/Application Support/EKBridge(接続、キー、トークン、アクティビティ、書き込みジャーナル)も削除します。EventKit Bridge からアップグレードした場合は、その隣にある EventKitBridge リンクも削除してください。設定とアップデーターのダウンロードは、~/Library/Preferences/io.github.bereciartua.ekbridge.plist と ~/Library/Caches/io.github.bereciartua.ekbridge にあります。

  4. コマンドラインツールをインストールした場合は、~/.local/bin/bridge-client を削除します。

  5. エージェントの設定からサーバーを削除し(たとえば claude mcp remove ek-bridge)、リモートアクセス用に起動したトンネルがあれば停止します。

Homebrew でインストールしましたか? 手順 1、2、5 を実行してください。brew uninstall --cask ek-bridge を実行すると、アプリと bridge-client のリンクが削除されます。--zap を付けると、手順 3 のデータと設定もゴミ箱に移動します。

プロジェクトの状況

EK Bridge はパブリックプレビュー段階で、可能な範囲でサポートを提供しています。

  • オフラインでテスト済み: ローカルブリッジと UI、MCP サーバー、ランチャー、エージェントのセットアップ、リモートアクセスとその OAuth サーバーを、実際のループバックソケットとローカルの HTTPS フィクスチャを使ってテストしました。
  • 実環境でテスト済み: 合成した EventKit 項目での範囲を限定したテスト、スコープを限定した読み取りが引き続き機能することを確認した Mac の完全な再起動とログイン、Claude Code、Claude Desktop、Codex、Cursor での初回確認(接続、読み取り、承認された書き込み、拒否されたリクエスト)。iCloud を使用する Apple シリコン搭載 Mac の macOS 27.0.1 でテストしました。
  • 未実施: 実環境でのエージェントの全組み合わせのテストと、クラウド環境での全組み合わせのテスト。通知とプロバイダーの同期動作は、すべての繰り返しパターンについて確認できていません。

テストと未確認事項と変更履歴を参照してください。

ライセンス

EK Bridge は Apache License 2.0 の下でライセンスされています。NOTICEを参照してください。このライセンスは、プロジェクト名やアイコンの使用権を付与するものではありません。Apple、Mac、macOS は Apple Inc. の商標です。このプロジェクトは Apple と提携しておらず、Apple の承認も受けていません。

EK Bridge は Martin Bereciartua が開発しています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。