passmcp について
passmcp-serverは、MCPサーバーを評価する開発者やエージェント向けに、passmcpの診断機能を読み取り専用のMCPツールとして提供します。許可リスト内のStreamable HTTPエンドポイントを検査し、認証情報を送らずに証明をオフライン検証できます。
主な機能
- 01許可されたHTTPサーバーを評価
- 02スコア、評価、失敗項目を報告
- 03証明のオフライン検証
- 04ホスト許可リストによる対象制限
- 05認証情報なしで検査を実行
活用シーン
- 01開発中にローカルMCPサーバーを評価
- 02失敗項目と修正案への参照を確認
- 03エージェントのワークフロー内で証明を検証
- 04エージェントによる検査を許可済みホストに限定
MCP 対応
MCPホストとはstdioで通信し、許可リスト内のStreamable HTTPエンドポイントの評価、証明の検証、バージョンの確認に使うツールを提供します。ツールはすべて読み取り専用で、評価時に認証情報を使用しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e PASSMCP_SERVER_ALLOW ghcr.io/sebastienrousseau/passmcp-server:0.0.8PASSMCP_SERVER_ALLOWHosts passmcp_check may evaluate besides loopback, comma-separated; a leading dot allows subdomains. Inside the container, loopback is the container itself.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/sebastienrousseau/passmcp-server:0.0.8stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
passmcp-server
passmcp は、Model Context Protocol サーバーの診断ツールです。MCP ツールとして利用できるため、エージェントはエディター内からサーバーを評価したり、そのサーバーに関するアテステーションを確認したりできます。読み取り専用で、許可リストに基づいて動作し、認証情報を送信することはありません。
目次
はじめに
- インストール — リリースアーカイブ、
go install、make install、コンテナイメージ、MCP ホストの設定 - 要件 — passmcp 自体、およびソースからビルドするために必要な Go の最低バージョン
- クイックスタート — エージェントにローカルサーバーの評価を依頼
passmcp-server エコシステム
- passmcp-server エコシステム —
passmcp、passmcp-reporting、passmcp-server、passmcp-action、passmcp-graph、passmcp-registry、passmcp-lsp、passmcp-census、satellion.com
ライブラリリファレンス
- 機能一覧 — 現在の機能をテーマ別に紹介
- エコシステムの比較 — 簡易マトリックス。全表は
docs/COMPARISON.mdを参照 - ベンチマーク — 主な数値。全表は
docs/BENCHMARKS.mdを参照 - 機能 — 許可リスト、認証情報なし、読み取り専用
- 設定 — 2 つのフラグと、それぞれの環境変数
- 例 — ツールの呼び出しと結果
運用
- passmcp-server を使用すべきでない場合 — 制限事項
- 開発 — make ターゲット、インストール契約、CI
- セキュリティ — エージェントが実行できることと、実行できないこと
- ドキュメント — すべてのリファレンスドキュメント
- 安定性の保証 — ツール名、引数、結果
- ライセンス
インストール
passmcp_check は passmcp プログラムを実行します。このツールを動作させるには、passmcp がインストールされて PATH に含まれているか、--passmcp で指定されている必要があります。コンテナーイメージには passmcp が含まれています。passmcp_verify_attestation に必要なのは passmcp-server だけです。
Go プログラムとして
go install satellion.com/passmcp-server/cmd/[email protected]
go install satellion.com/passmcp/cmd/[email protected]
Linux、macOS、Windows 用の amd64 および arm64 のリリースバイナリは、署名付きチェックサムと SLSA provenance とともにリリースページで提供されています。
ソースから make install でインストール
git clone https://github.com/sebastienrousseau/passmcp-server
cd passmcp-server
make install PREFIX="$HOME/.local"
make install はバイナリと bash、zsh、fish の補完をビルドし、PREFIX(デフォルトは /usr/local)の下にインストールします。パッケージ作成者が設定した場合は、DESTDIR の下にステージングされます。make uninstall で削除できます。GNUmakefile に仕様が記載されており、CI ではプッシュのたびにステージングされたツリーをチェックします。
コンテナーイメージとして
docker pull ghcr.io/sebastienrousseau/passmcp-server:0.0.8
このイメージは passmcp 自身のリリースイメージに passmcp-server を追加したもので、distroless、非 root、linux/amd64 および linux/arm64 です。passmcp は /usr/local/bin/passmcp に配置され、passmcp-server は --passmcp でそのパスを指定して起動します。
MCP ホストで使用する
passmcp-server は stdio 経由で MCP を使用するため、ホストは子プロセスとして起動します。Claude Desktop(claude_desktop_config.json)、Claude Code(.mcp.json)、および mcpServers ブロックを読み込むその他のホストの場合:
{
"mcpServers": {
"passmcp": {
"command": "passmcp-server",
"args": ["--allow", ".internal.example.com"]
}
}
}
代わりにコンテナーイメージを使う場合:
{
"mcpServers": {
"passmcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "ghcr.io/sebastienrousseau/passmcp-server:0.0.8"]
}
}
}
コンテナー内では、ループバックはコンテナー自体を指します。ホスト上のサーバーを評価するには、Linux ではコンテナーを --network host で実行するか、host.docker.internal を指定して引数に -e PASSMCP_SERVER_ALLOW=host.docker.internal を追加します。
このサーバーは公式 MCP Registry に com.sebastienrousseau/passmcp-server として登録されています。 server.json はその登録情報です。
要件
| 要件 | 最低条件 | 適用方法 |
|---|---|---|
| passmcp | PATH に含まれているか、--passmcp で指定されていること。このサーバーがロックステップで連携するバージョン | CI はそのタグで passmcp をビルドし、それを使ってこのサーバーを評価します |
| Go(ソースからビルドする場合) | go.mod の go ディレクティブ | CI は Linux、macOS、Windows で、そのバージョンと最新の安定版をテストします |
| MCP ホスト | stdio サーバーを起動でき、リビジョン 2025-03-26 以降に対応しているもの | ハンドシェイクでは 2025-11-25、2025-06-18、2025-03-26、または server/discover 経由の 2026-07-28 をネゴシエートします |
| テスト対象のサーバー | 許可リストに登録された Streamable HTTP エンドポイント | passmcp_check は passmcp の実行前に、それ以外の URL を拒否します |
Go の最低バージョンを引き上げるのは、リリースに言語機能が必要な場合に限ります。1.0 より前のほかの変更と同様、パッチリリースで引き上げ、変更履歴に記載します。
クイックスタート
go install satellion.com/passmcp-server/cmd/[email protected]
go install satellion.com/passmcp/cmd/[email protected]
claude mcp add passmcp -- passmcp-server
次に、自分の MCP サーバーを http://127.0.0.1:3000/mcp で起動し、エージェントに次のように依頼します:
passmcp で自分の MCP サーバーを評価し、失敗した項目を修正してください。http://127.0.0.1:3000/mcp
エージェントは passmcp_check を呼び出します。このツールは passmcp check http://127.0.0.1:3000/mcp --auth none --output json を実行し、スコア、評価、失敗したチェック項目すべての詳細と修正方法へのリンクを返します。ループバックには設定は不要です。それ以外のホストは、事前に --allow で指定する必要があります。
passmcp-server エコシステム
各コンポーネントは 0.0.8 でリリースされ、同じバージョンで一斉にリリースされます(docs/ecosystem.md)。
| コンポーネント | 目的 | ユースケース |
|---|---|---|
| passmcp | MCP サーバーの診断ツールです。9つのフェーズでチェックし、すべての検出結果を、それが確認されたリクエストに結び付け、署名付き証明書を生成します | エージェントが信頼する前にサーバーをテストし、CIでゲートします |
| passmcp-reporting | 証明書の形式、JSON Schemaとオフライン検証ツール、グラフモデル、agentgatewayプロセッサを提供します | ゲートウェイ、レジストリ、パイプラインで証明書を検証します |
| passmcp-server | 読み取り専用のMCPツールとして提供する、passmcpの診断機能です | エージェント内からサーバーを評価したり、証明書を確認したりします |
| passmcp-action | GitHub ActionsとGitLab CIでpassmcpを実行します。イメージはダイジェストで固定されています | 選択した検出結果に基づいてビルドを失敗させます |
| passmcp-graph | 証明書から構築する、エージェント、サーバー、ツール、IDのローカルグラフです | 継承されたリスクや過剰な権限を特定し、ポリシーに基づいてゲートします |
| passmcp-registry | MCP Registryのリモートサーバーを対象とする、署名付きの公開スコアカードです | 接続する前に公開サーバーの評価を確認します |
| passmcp-lsp | ガイダンスカタログのチェックIDをホバー表示する、MCPアーティファクト向け言語サーバーです | 編集中にserver.json、ツールスキーマ、クライアント設定の誤りを検出します |
| passmcp-census | 公開されている信頼性調査です。データセット、方法論、開示ログ、再現用コマンドを含みます | エコシステム全体の信頼性指標を引用し、再現します |
| satellion.com | ウェブサイト、Goモジュールのパス、フォーマットURIを提供します | マニュアルを読み、satellion.com/... インポートを解決します |
このリポジトリは配布の窓口です。成果物はレジストリ掲載情報であり、エージェントがツールを探す場所はpassmcpです。passmcpのリリースをラップしているため、バージョンは常にpassmcpの最新バージョンと完全に一致します。make lockstep はこれを確認し、make family はファミリーマニフェスト内のこのリポジトリの行を確認し、make versions はバージョンが記載されたすべてのファイルと、go.mod 内のpassmcp-reportingモジュールのバージョンが一致していることを確認します。
機能の概要
| 領域 | 機能 | ステータス |
|---|---|---|
| 評価 | passmcp_check:許可リストに登録された Streamable HTTP エンドポイントのスコア、評価、件数、および最大25件の失敗したチェック。必要に応じて、passmcp の9つのフェーズの一部に絞り込めます | 0.0.1でリリース |
| 検証 | passmcp_verify_attestation:passmcp アテステーションの構造、サブジェクトダイジェスト、対象をオフラインで検証します | 0.0.1でリリース |
| 識別 | passmcp_version:passmcp-server のバージョンと、実行対象の passmcp を確認します | 0.0.1でリリース |
| 結果 | エージェント向けのテキストに加え、各ツールの outputSchema に一致する structuredContent を返します | 0.0.1でリリース |
| プロトコル | stdio;ハンドシェイクは 2025-11-25、2025-06-18、2025-03-26;2026-07-28 用の server/discover;ping | 0.0.1でリリース |
プログラムとして動作するサーバー(--stdio) | ツール経由ではありません。自分で passmcp check --stdio を実行してください | 対象外 |
| 認証情報 | 送信されません。すべての実行で --auth none が指定されます | 設計上、対象外 |
エコシステムの比較
代替手段は、ターミナルで passmcp を実行してレポートを会話に貼り付けるか、インスペクターでサーバーを手動で調べることです。passmcp-server は、エージェントに任せるべきではない判断を担います。つまり、アクセス可能なホストの選定、認証情報を送信しないこと、コンテキストウィンドウに収まるサイズの結果を返すことです。
| 方法 | エージェントから呼び出せる | オペレーターが対象を制限できる | スコアと修正リンクを提供 |
|---|---|---|---|
| passmcp-server | はい | はい — --allow を指定しない場合はループバックのみ | はい |
ターミナルで passmcp check を実行 | いいえ | オペレーターが URL を入力します | はい |
| MCP Inspector | いいえ — 人が操作するための UI です | オペレーターが URL を入力します | いいえ |
根拠と完全な比較表については、docs/COMPARISON.md を参照してください。
ベンチマーク
サーバーの起動と JSON の往復により、実行時間が加算されます。評価そのものは passmcp が行い、最大5分で終了します。hyperfine を使い、このツリーと passmcp 0.0.1 からビルドしたバイナリを計測しました。計測時には同じマシンでほかのビルドも実行されていたため、ばらつきが大きくなっています。目安としては最小値が適しています。
| シナリオ | 結果 | 環境 |
|---|---|---|
起動、initialize、tools/list、passmcp_version、終了 | 平均 27.2 ms ± 22.2 ms、最小 6.2 ms(50回実行) | Apple A18 Pro、Go 1.27.1、2026-09-29、ロードアベレージ 19 |
| passmcp-server に対する passmcp の完全な stdio 評価 | 平均 242.3 ms ± 80.5 ms、最小 148.5 ms(30回実行) | 同上 |
サーバーに対する passmcp_check | passmcp 独自の計測時間(レポートに記載) | 対象サーバー |
計測方法と全結果については、docs/BENCHMARKS.md を参照してください。
機能
デフォルトで有効な、範囲の狭い許可リストです。 設定がない場合、
passmcp_check が評価するのはループバックアドレスのみです。対象は localhost、任意の
*.localhost 名、ループバック IP です。--allow でホストを追加できます。ホスト名をそのまま指定するか、.example.com のように指定すると、そのサブドメインすべてが対象になります(apex ドメインは対象外です)。passmcp は指定されたエンドポイントに実際にリクエストを送信します。エージェントがプロンプトからそのエンドポイントを選ぶ状況では、オペレーターが指定していない場所にリクエストを送信すべきではありません。http または https 以外の URL、および認証情報を含む URL は、passmcp を実行する前に拒否されます。
認証情報は使用しません。 毎回 passmcp check <endpoint> --auth none を実行し、PASSMCP_CONFIG には空の設定ファイルを指定します。そのため、オペレーターが自身の用途で記述したプロファイルやデフォルト設定ブロックによって、認証情報が追加されたり、変更が有効になったり、レポートの送信先が変更されたりすることはありません。オペレーターの秘密情報が、エージェントの指定する場所に passmcp を介して送られることはありません。
読み取り専用を二重に徹底します。 すべてのツールには readOnlyHint: true が注釈されています。また、変更を行うツールを許可するフラグを passmcp に渡すことはありません。そのため、passmcp が呼び出すのは、評価対象のサーバーが readOnlyHint を宣言しているツールだけです。
passmcp 自体を使い、その複製は使いません。 passmcp-server は passmcp プログラムを実行して、そのプログラムが出力する JSON レポートを読み取ります。passmcp のエンジンをリンクしているわけではありません。passmcp_version が報告するバージョンは passmcp version の出力そのものであり、passmcp のすべての安全性が保たれます。サーバーが要求できるのは、passmcp 自身のフラグで許可される範囲に限られるためです。
エージェントが対応に活用できる回答を返します。 チェックに失敗すると、ID、重大度、詳細、ドキュメントへのリンクが返されます。検証できない内容は、ツールエラーではなく、その理由を示す結果になります。すべてのチェックに失敗したサーバーは、最初の 25 件の失敗を返し、結果が切り詰められたことを示します。
設定
| フラグ | 環境変数 | デフォルト | 説明 |
|---|---|---|---|
--allow | PASSMCP_SERVER_ALLOW | 空:ループバックのみ | ループバック以外に passmcp_check が評価できるホスト。カンマ区切りで指定します。先頭にドットを付けるとサブドメインが許可されます |
--passmcp | PASSMCP_SERVER_PASSMCP | PATH 上の passmcp | passmcp プログラムのパス |
--version | — | — | バージョンを表示して終了します |
--completion | — | — | bash、zsh または fish 用の補完スクリプトを表示して終了します |
フラグは対応する環境変数より優先されます。それ以外は読み込まれません。オペレーター自身の passmcp 設定にかかわらず、passmcp 自体は空の設定ファイルで実行されます。
シェル補完にはフラグのセットが使用されるため、すべてのフラグが一覧表示されます。
passmcp-server --completion bash > /etc/bash_completion.d/passmcp-server
passmcp-server --completion zsh > "${fpath[1]}/_passmcp-server"
passmcp-server --completion fish > ~/.config/fish/completions/passmcp-server.fish
使用例
passmcp_check を呼び出す tools/call:
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"passmcp_check","arguments":{"endpoint":"http://127.0.0.1:3000/mcp","phases":["handshake","catalog"]}}}
ほかの 2 つの arguments:
{"statement": "<the attestation's JSON text>", "endpoint": "https://mcp.example.com/mcp"}
{}
1 つ目は passmcp_verify_attestation で、endpoint は省略可能です。2 つ目は引数を取らない passmcp_version です。不明な引数は無視されず拒否されるため、入力ミスがあれば報告されます。
ホストを指定せずにハンドシェイクとツール一覧を確認するには、次のようにします。
make smoke
passmcp-server を使用しないケース
- プログラムであるサーバーの場合。
passmcp_checkが受け付けるのは Streamable HTTP URL です。エージェントが任意のプログラムを起動することは、別の信頼性判断になります。ご自身でpassmcp check --stdio -- <command>を実行してください。 - 認証情報が必要なサーバーの場合。 毎回
--auth noneを指定するため、評価結果が示すのは認証されていないクライアントから見える状態です。それ以外の確認には、渡された認証情報を使ってターミナルで passmcp を実行してください。 - CI のゲートとして使う場合。 レポートを保持し、ジョブを失敗させる passmcp-action を使用してください。
- 誰がアテステーションに署名したかを確認する場合。
passmcp_verify_attestationは構造と整合性をチェックします。署名はエンベロープの署名であり、署名の検証にはcosignまたはgh attestation verifyを使用します。 - 複数の評価を一度に行う場合。 リクエストは順番に処理されます。2 件を同時に実行する必要があるホストでは、サーバーを 2 つ起動してください。
開発
make # format, vet, lint, headers, tests, stdio smoke test
make test-race # race detector, randomised order
make image # the container image for this machine, without goreleaser
make family # this repository's row in passmcp's family manifest
make lockstep # the version is passmcp's latest release
make versions # every version-bearing file, and go.mod, name that release
make coverage-json # build/coverage.json, the document behind the badge
make install-smoke # install and uninstall under a staged DESTDIR
CI で実行されるすべてのゲートにはローカルで実行する方法があります。DEVELOPMENT.md にその対応関係が記載されています。
CI ではロックステップバージョンの passmcp もビルドし、stdio 経由でこのサーバーを評価します。スコアが 90 未満の場合、または
supply.provenance 以外のチェックに失敗した場合は、CI が失敗します。
セキュリティ
エージェントが渡すエンドポイントは passmcp の実行前に許可リストと照合され、拒否されたエンドポイントが passmcp に渡ることはありません。passmcp は
--auth none と空の設定ファイルを指定して実行され、変更を加えるツールを許可するフラグは指定されません。これらはそれぞれ
internal/runner と
internal/server のテスト項目です。エージェントに渡る内容には上限があり、結果ごとの失敗は最大 25 件、passmcp のエラー出力は末尾 400 文字に制限されます。CI ではプッシュのたびに govulncheck を実行し、リリースには cosign keyless で署名し、SLSA ビルド来歴を付与します。
脆弱性は SECURITY.md に従って報告してください。
ドキュメント
ファミリー内のすべてのリポジトリで共通する、4 つの入り口です。
- ユーザーマニュアル — passmcp のレンダリング済みマニュアル:フェーズ、チェック、レポート
- API リファレンス — このモジュールのパッケージ
- 開発者向けドキュメント — ツールチェーン、タスク一覧、すべての CI ゲートをローカルで再現する方法
- エコシステムマップ — ファミリー、公開済み成果物、ロックステップバージョンのルール
| ドキュメント | 内容 |
|---|---|
docs/ARCHITECTURE.md | 呼び出しの流れ、パッケージ、すべての実行で固定される設定 |
docs/adr/ | このリポジトリの意思決定記録 |
docs/COMPARISON.md | passmcp-server と、passmcp を実行するその他の方法との比較 |
docs/BENCHMARKS.md | サーバーが実行に追加する内容と、その測定方法 |
docs/publishing.md | レジストリ掲載情報の公開 |
docs/releases/ | リリースの概要。リリースごとに 1 ファイル |
server.json | MCP Registry の掲載情報 |
SECURITY.md | 脆弱性開示ポリシー、サポート対象バージョン、保証内容 |
CONTRIBUTING.md | 署名付きコミットと DCO のポリシー、変更に必要なもの |
CHANGELOG.md | リリースごとの変更点とロックステップバージョンのルール |
SUPPORT.md | 質問先と、期待できる対応 |
安定性の保証
passmcp-server は 1.0 未満で、passmcp と同じバージョンを使用し、1.0 まではパッチ番号を更新する SemVer に従います。
破壊的変更の基準は、エージェントまたはホストが依存する内容です。 以下は破壊的変更に該当します。
- ツール、引数、または構造化された結果フィールドの削除や名称変更
- 任意の引数を必須にすること
- デフォルトの許可リストを拡大すること、認証情報を送信すること、または変更を加えるツールを許可するフラグを passmcp に渡すこと
- フラグまたは環境変数の意味を変更すること
ツール、任意の引数や結果フィールドの追加、および内部で使用する passmcp の新しいリリースは、破壊的変更ではありません。実行結果の内容は passmcp が決定し、その安定性ルールは passmcp 自身のものが適用されます。
非推奨化の期間。 非推奨となったツールや引数は、それを告知したリリースの後、少なくとも 1 リリースの間は引き続き動作します。
ライセンス
GNU General Public License v3.0 only の下でライセンスされています。
passmcp-server は、実行対象のプログラムである passmcp と同様に GPL-3.0-only です。証明の検証には、Apache-2.0 の passmcp-reporting を使用します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。