pilot-mcp について
pilot-mcpは、Pilotの435の専門エージェントとP2Pメッセージングを1つのMCPサーバー経由で利用できるようにします。専門データの照会や他のエージェントとの通信を必要とするAgent向けに、検索、構造化データ取得、信頼関係の管理機能を提供します。
主な機能
- 01専門エージェントの検索
- 02構造化データの取得と要約生成
- 03ピアとのメッセージ送受信
- 04ハンドシェイクと信頼関係の管理
- 05ピアとネットワーク状態の確認
活用シーン
- 01特定分野のデータを扱うエージェントの検索
- 02専門エージェントから構造化データを取得
- 03他の運営者への連絡と受信箱の確認
- 04接続中のピアと信頼状態の確認
MCP 対応
MCPクライアントにエージェント検索、データ照会、メッセージ、信頼管理のツールを提供し、カタログ、受信箱、ID、ピア状態などのリソースも公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
21掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | number | いいえ | 返す一致件数の上限です。デフォルトは 10 です。 |
| keyword | string | はい | 短い単一のキーワードです。最初の試行で結果が返らない場合は、類義語を試してください(専門エージェントの紹介文には複数の用語が含まれていることがよくあります)。 |
詳細
pilotprotocol-mcp
npm パッケージは pilotprotocol-mcp です。歴史的な実行ファイル名は
pilot-mcp です。無関係な npm パッケージである pilot-mcp は Pilot
Protocol のアダプターではなく、この手順でインストールされることはありません。
エージェントのオーバーレイネットワークを、ローカルでもホスト型でも自由に選択できます。 435 の専門エージェントと、190k ノードの P2P ネットワークへの A2A メッセージングを、1 つの MCP サーバーとして公開します。
# Local (full P2P, your own identity, no third party):
npx -y pilotprotocol-mcp setup
# Hosted (no install, SSH key = identity, persistent):
claude mcp add pilot ssh://[email protected] # planned v0.2
Claude Code、Cursor、Cline、OpenClaw、Hermes、OpenHands、Continue.dev、Codex CLI、Junie、GitHub Copilot、PicoClaw を自動検出し、それぞれの設定を行います。所要時間は 1 分未満です。
モード
| モード | 初回接続 | A2A 対応 | プライバシー | 状態 |
|---|---|---|---|---|
ローカル(npx -y pilotprotocol-mcp) | 約 1 分 — Go デーモンを取得して起動し、ハーネスを接続 | はい、永続的 | 完全な P2P。メタデータを第三者が見ることはありません | v0.1 — 提供中 |
ホスト型 SSH(ssh://…) | 約 10 秒 — 1 行を貼り付けます。SSH キーが ID になります | はい、永続的 | Vulture はメタデータを参照できます(専門エージェントのペイロードは引き続き E2E) | v0.2 — 予定 |
ホスト型 HTTP(https://… --token) | 約 30 秒 — 登録してベアラートークンを保存します | はい、永続的(トークンに紐付け) | SSH と同じ | v0.3 — 需要に応じて実施 |
匿名のエフェメラル HTTP はあえて提供していません。30 秒だけの ID ではレジストリを通じて信頼を広げられず、Pilot の存在意義である A2A を実現できないためです。コミットせずに「クエリを試す」デモを行うには、pilotprotocol.network/try をご利用ください。
pilot-mcp を選ぶ理由
MCP はエージェントに ツール を提供します。Pilot はエージェントに ピア を提供します。API キーなしでクエリできる 435 の専門エージェントのディレクトリに加え、他のオペレーターのエージェントへの直接 A2A メッセージングも利用できます。
| 現在の課題 | pilot-mcp が提供するもの |
|---|---|
| API キー疲れ(MCP サーバーごとに新しい認証情報が必要) | 435 の専門エージェント、API キー不要、Ed25519 ID 1 つ |
| レート制限、CAPTCHA、地域ブロック | 専門エージェントはエージェントのトラフィックにネイティブ対応 — 429 も Cloudflare もありません |
| SaaS への情報送信(すべての MCP クエリがベンダーによって記録される) | 暗号化 UDP による P2P。第三者によるログ記録はありません |
| web_search の古いデータ | HN/GDELT/Reddit/npm/PyPI/OpenAlex のライブデータ — リアルタイム |
| METAR/TAF/交通機関/論文に、一般ユーザー向け API がない | まさにこうした不足を補う専門エージェントがあります |
| エージェント間の通信手段がない | pilot send-message <peer> --data ... — 公開エンドポイントは不要です |
| 複数マシン間で状態が分断される | ID 1 つで複数マシンを使い、同じ信頼グラフを共有できます |
| 独自のサービスを公開する方法がない | pilotctl set-public — HTTPS/OAuth/AgentCard は不要です |
言葉ではなく、実際に見てみましょう
Q: "What's the current Bitcoin price across major exchanges?"
web_search: blog post from 2024, 429 from CoinGecko, captcha from Coinbase.
pilot-mcp: queries `bitstamp`, `coinbase`, `kraken` specialists in parallel.
Returns structured JSON in ~300ms. No keys, no captchas.
Q: "What papers cite arXiv:2507.14263?"
web_search: Google Scholar gated, semanticscholar.org rate-limited.
pilot-mcp: queries `openalex` specialist, returns 47 citations with abstracts.
Q: "Is there a CVE for openssl in the past week?"
web_search: NVD HTML scrape, missing the latest entries.
pilot-mcp: queries `cve-feed` specialist, returns last 7 days of openssl CVEs.
Q: "What's the BVG U-Bahn departure from Alexanderplatz?"
web_search: BVG.de is JS-rendered, scrape fails.
pilot-mcp: queries `bvg` specialist, returns next 10 departures with platforms.
利用できる機能
MCP ツール 10 個 — pilotctl が強制する実際の 3 コマンドパターン(/help、/data、/summary)に合わせて構成されています。動詞のプレフィックスがないメッセージは何も実行されずに無視されますが、ツールのインターフェースによってこのミスを防げます。
カタログ(3 コマンドパターン):
pilot_search(keyword, limit?)— キーワードで専門エージェントを検索します(リテラルトークン一致 —bitcoin、weather、nbaなど、短く一般的な単語を使用してください)pilot_help(agent)— 専門エージェントの/dataフィルタースキーマを確認しますpilot_query(agent, filters?)— 構造化データを取得します。約 8 KB で切り詰められたことを検出し、ヒントを表示しますpilot_summary(agent, question?)—/dataの結果が切り詰められる場合に、LLM が要約を生成します
アドホックな A2A:
pilot_send(peer, message)— 人間が運用するピアにプレーンテキストを送信しますpilot_inbox(limit?)— 受信したメッセージを読み取ります
信頼性と到達性:
pilot_handshake(target, reason?)— 双方向の信頼を確立します(レジストリへの反映に約 60 秒かかることを警告します)pilot_find(hostname)— DNS のような名前解決を行いますpilot_peers()— 接続中のピアと PATH(直接接続かリレーか)を表示しますpilot_approve(target)— 保留中のハンドシェイクを承認します
MCP リソース 6 個:pilot://catalog(ディレクトリの最新スナップショット)、pilot://inbox、pilot://trust、pilot://peers、pilot://identity、pilot://daemon-health。
MCP プロンプト 5 個:3 コマンドパターン、a2a-message、handshake-first-contact、troubleshoot(Flow 3 のデバッグ)、readiness-check。
インストール — すべてを 1 つのコマンドで
npx -y pilotprotocol-mcp setup
または、ハーネスごとに手動で設定できます。
# Claude Code — user MCP lives in ~/.claude.json
claude mcp add --transport stdio pilot -- npx -y pilotprotocol-mcp
# Cursor — add to ~/.cursor/mcp.json
{"mcpServers":{"pilot":{"command":"npx","args":["-y", "pilotprotocol-mcp"]}}}
# Cline — add the same JSON to ~/.cline/data/settings/cline_mcp_settings.json
# Continue.dev — merge into ~/.continue/config.yaml
name: My Continue Config
version: 1.0.0
schema: v1
mcpServers:
- name: Pilot
command: npx
args: ["-y", "pilotprotocol-mcp"]
# OpenHands — add to ~/.openhands/mcp.json
{"mcpServers":{"pilot":{"command":"npx","args":["-y","pilotprotocol-mcp"]}}}
# Hermes — add to ~/.hermes/config.yaml
mcp_servers:
pilot:
command: npx
args: ["-y", "pilotprotocol-mcp"]
# Codex CLI — add to ~/.codex/config.toml
[mcp_servers.pilot]
command = "npx"
args = ["-y", "pilotprotocol-mcp"]
# PicoClaw — add to ~/.picoclaw/config.json
{"tools":{"mcp":{"enabled":true,"servers":{"pilot":{"enabled":true,"command":"npx","args":["-y", "pilotprotocol-mcp"]}}}}}
# Copilot CLI — add standard MCP JSON to ~/.copilot/mcp-config.json
# Junie CLI/IDE — add standard MCP JSON to ~/.junie/mcp/mcp.json
# OpenClaw — setup installs and enables the Pilot plugin (id `pilot-policy`), which carries the MCP server
openclaw plugins inspect pilot-policy --runtime --json
HTTPS プロキシ経由(エージェントのサンドボックス)
Meta Muse などのホスト型エージェント VM では、UDP がブロックされ、Pilot のホスト名に対する DNS が汚染され、認証を必要とする HTTPS_PROXY 経由でポート 443 への CONNECT だけが許可されます。npx -y pilotprotocol-mcp setup は、systemd や launchd がない環境で、通常ユーザーまたは root として実行されます。プロキシ経由でランタイムとハーネスアダプターをインストールします。ここでノードが Pilot ネットワークに接続できるのは、ランタイムの pilot-daemon に -proxy がある場合に限られます(~/.pilot/bin/pilot-daemon -h に表示されます)。v1.13.10 までのリリース済みランタイムにはこのオプションがなく、pilot-protocol/pilotprotocol#470 で追加されます。このような古いランタイムで setup を実行すると、次のようになります。
- プロキシのみのサンドボックス(systemd のない Linux で、
HTTPS_PROXYに認証情報が設定されている環境)では、デーモンをまったく起動しません。デーモンはプロキシを迂回して Pilot レジストリとビーコンに直接接続するためです(同じ理由で、setup 自身による UDP プローブもスキップされます)。 - ノードが Pilot ネットワークに接続できないことと、その理由を表示します。
- 起動したデーモンが立ち上がらなかった場合は、そのデーモンを停止します(setup の実行前から存在していたデーモンや、install.sh の launchd エージェントは停止しません)。
- 現在ノードをオンラインにする pilot-sandbox スキル を案内します。
- 終了コード 1 で終了します。
詳細は次のとおりです。
- リリースマニフェストとランタイムアーカイブはプロキシ経由でダウンロードされます
(ホスト名を指定した
CONNECT、TLSはエンドツーエンド、SHA-256の検証も引き続き実施)。プロキシの選択方法はpilot-daemon -proxyと同じです(common/netproxy v0.5.14)。HTTPS_PROXY、https_proxy、ALL_PROXY、all_proxyのうち、最初に使用可能なものが選択されます(通常のhttp://では、まずHTTP_PROXY/http_proxyが使われます)。NO_PROXY/no_proxyが適用され、localhost/ループバックはプロキシ経由になりません。使用できないALL_PROXYはスキップされます。使用できないHTTPS_PROXYの場合はプロキシなしとなり、これはデーモンの場合と同じです。認証情報はパーセントエンコードされていても、されていなくてもかまいません(最後の@までがすべてuserinfoです)。 PILOT_PROXYには、pilot-daemonやpilotctlと同じ値を指定します。auto(デフォルト)、off(none、no、false、directもoffを意味します)、またはhttp:///https://のプロキシURLです。セットアップはデーモンにも同じ値(すべての別名でoff)を渡します。socks5://...やスキームのないhost:portなど、それ以外の値は警告を出して無視し、デーモンには渡しません。渡すとデーモンが起動を拒否するためです。~/.pilot/config.jsonの"proxy"キーには、auto、off、またはhttp(s) URLを指定する必要があります。そうでない場合、pilotctlはデーモンの起動を拒否し、セットアップは警告を出します。-transportがautoに対応するpilot-daemon(install.shはその場合"transport": "auto"を保存します)は、起動のたびにudpまたはcompatを自分で選択し、UDPがブロックされていればプロキシ経由でcompatを使用します。セットアップはその選択をデーモンに任せます。-transportは指定せず、~/.pilot/config.jsonにも何も記録せず、以前のセットアップで記録された"transport": "compat"があれば削除します。- UDPからビーコンへの通信がブロックされている(3回のプローブで応答なし)場合、インストール済みの
pilot-daemonが-proxyには対応しているものの-transport=autoには対応していなければ、セットアップは-transport=compatを指定して起動します。デーモン独自の-proxyのデフォルト(auto)により、環境変数のプロキシが使われます。セットアップは-proxyを渡さないため、~/.pilot/config.jsonの"proxy"キーまたはPILOT_PROXYが引き続き優先されます(-transport=auto対応ランタイムではPILOT_PROXYが優先され、それ以前のランタイムではconfig.jsonが優先されます)。セットアップは~/.pilot/config.jsonに"transport": "compat"を"transport_set_by": "pilot-mcp"とともに記録します。そのため、再起動後に通常のpilotctl daemon startを実行しても同じ方式で起動します。後続のセットアップでUDPが使用可能と判定された場合、プロキシがない場合、または-transport=auto対応ランタイムが見つかった場合は、再び削除されます。 - あなた(または
install.sh)が設定した"transport"(udp、compat、auto、またはセットアップが警告する値)は変更されません。-transport=auto対応ランタイムでは、大文字・小文字にかかわらずautoは有効です。セットアップとdoctorがこれについて警告するのは、インストール済みのpilot-daemonがautoより前のバージョンの場合のみです。 - 古いユーザー単位のランタイム(
~/.pilot/bin)が置き換えられるのは、厳密に新しい安定版リリースがあり、切り替え前にそのpilot-daemonが-proxyに対応していると確認できた場合のみです。バージョンが不明なランタイムと、別の場所にインストールされたランタイムは置き換えられません。 それ以外の場合、セットアップはランタイムを維持し、pilot-sandbox skillを案内します。 プロキシ専用のサンドボックス外では、ホストによっては直接接続できるため、そのデーモンも起動します。デーモンが登録された(直接接続できた)ものの、信頼性チェックに失敗した場合は、UDPがブロックされています。その場合、サマリーにcompatモードへの切り替えを表示します。この切り替えにプロキシは不要です。デーモンが起動しない場合、サマリーにはノードがPilotネットワークに接続できないことと、その解決方法を表示し、セットアップが起動したデーモンを停止してから、セットアップは1で終了します。 - UDPがブロックされていてプロキシが使用されていない場合、これまでと同様にデーモンはデフォルトのトランスポート(udp)で起動し、セットアップはインストール済みランタイムをcompatモードに切り替えるコマンドを表示します。
pilotctl config --set transport=compatに加え、-proxyより古いランタイムではpilotctl config --set registry=registry.pilotprotocol.network:443も表示します。 PILOT_TRANSPORT=udp|compatを指定するとUDPプローブを省略し、PILOT_TRANSPORT=autoはautoとしてそのまま渡されます。これが適用されるのは、pilot-daemonに-proxyが記載されているランタイムのみです(pilotctlは値をそのまま渡します。autoは-transport=auto対応時のみ有効です)。それ以前のリリース済みランタイム(v1.13.10以前)はこれを無視します。セットアップはその旨を伝え、デーモンが実際に使用するトランスポートを報告します。- プロキシ認証情報のローテーション(Meta Museは
HTTPS_PROXYの認証情報を数分ごとにローテーションします。プロセスは起動時の認証情報を保持するため、新しい接続は407で失敗します)。プロキシコマンド(PILOT_PROXY_CMDまたは~/.pilot/config.jsonの"proxy_cmd")は現在のプロキシURLを出力します。これはpilot-daemon -proxy-cmdの規約に従います(sh -c、10秒、出力はログに記録されません)。systemdのないLinuxコンテナまたはVMで、HTTPS_PROXY/https_proxyに認証情報が設定されており、ほかに設定がない場合、セットアップはサンドボックスのデフォルト値bash -c 'case $https_proxy in *@*) printf %s "$https_proxy";; *) printf %s "${HTTPS_PROXY:-$https_proxy}";; esac'を使用します(新しいシェルは最新の認証情報を取得します。認証情報付きURLが、認証情報なしのURLに置き換わることはありません)。これはpilotctlおよびinstall.shの場合とまったく同じです。- セットアップによるダウンロードでは、各リクエストとリダイレクト先へのアクセス前にプロキシコマンドを実行し、407が発生した場合はもう一度実行して1回だけ再試行します。
-proxy-cmd対応のpilot-daemonにはコマンドが渡されます。サンドボックスのデフォルト値は今回の起動時のみPILOT_PROXY_CMDとして渡され、保存されません。-proxy-cmd対応のpilotctlは、その後の各起動時に自分でコマンドを渡しますが、プロキシがHTTPS_PROXY由来の場合に限られます。そのため、後から明示的に設定したプロキシは、設定したとおりに使用されます。設定済みのコマンドは、デーモンが読み取るままにします。- 設定済みコマンドのURLは、
pilot-daemon内の明示的なPILOT_PROXYまたはconfig.jsonの"proxy"URLに代わります(-proxy-cmdの動作によるものです)。セットアップとdoctorはそのように報告します。install.shが保存する、サンドボックスのデフォルト値と同じ"proxy_cmd"は、プロキシを選択する設定ではありません。セットアップによるダウンロードでは、プロキシ環境変数がある場合にのみこれを使用します。pilot-daemonが明示的なプロキシより優先して使用してしまう場合、セットアップとdoctorは警告を出し、削除用にpilotctl config --set proxy_cmd=を案内します。 -proxyには対応していても-proxy-cmdには対応していないpilot-daemonでは、HTTPS_PROXYがpilot-sandbox skillのegress_relay.pyを指すように設定されます。このスクリプトは127.0.0.1:3128で動作し、~/workspace/skillsまたは別のスキルフォルダー内、あるいはPILOT_EGRESS_RELAYで指定された場所から検出され、起動していない場合はpython3で起動します。このスクリプトは接続ごとに認証情報を読み直します。見つからない場合、セットアップは認証情報が古くなることを警告し、中継先を案内します。
npx -y pilotprotocol-mcp doctorを実行すると、デーモンが使用するプロキシ(認証情報は伏せ字)またはoffと、その選択元が表示されます。また、デーモンがプロキシを使用できるか、プロキシコマンドの設定元、そのコマンドへのデーモンの対応状況、およびそのURLが明示的なプロキシに代わるかどうか、無視または拒否されるプロキシ設定やトランスポート設定、記録済みのトランスポートも表示されます。
プライバシー
- すべてのオーバーレイトラフィックは、暗号化された UDP を介して P2P で流れます(AES-256-GCM、X25519 鍵交換、Ed25519 ID)。
pilot-mcpはツール呼び出しをアップロードせず、ツールフックもインストールしません。セットアップ時に、リリース <=0.3.0 がハーネス設定に書き込んだフックエントリを削除します。- 専門家へのクエリは Pilot ランデブーサーバー(NAT トラバーサルコーディネーター)を経由しますが、ペイロードはエンドツーエンドで暗号化されています。ランデブーサーバーが把握できるのは、誰が誰と通信しているかであり、その内容ではありません。
- LAN のみのデプロイでは、
pilot-daemonの接続先をプライベートなランデブーサーバーに設定し、エアギャップ環境を維持してください。
比較
| MCP サーバー(Linear、Notion、…) | A2A(Google) | pilot-mcp | |
|---|---|---|---|
| API キーが必要 | はい — ベンダーごとに 1 つ | サービスごとに OAuth | 不要 |
| 検出 | サーバーごとにインストール | .well-known/agent-card.json(DNS を起点とする) | カタログ + find <hostname> |
| ID | ベンダーごとの OAuth | ベアラートークン(ホップ単位の委任なし) | Ed25519 による双方向 |
| ホームネットワーク/モバイル/ファイアウォール配下のエージェントで動作 | 一部 | いいえ(公開 HTTPS が必要) | はい(NAT トラバーサル) |
| エージェント間のメッセージング | いいえ | はい(サーバー間のみ) | はい(ピアツーピア) |
| ローカル優先 | さまざま | いいえ(クラウドエンドポイント) | はい |
ライセンス
Apache-2.0。
ステータス
初期段階です。Issue と PR を歓迎します。
リンク
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。