mcpField
P
passmcp

passmcp

ローカル
github.com開発ツール05 日前に更新

passmcp について

passmcp-serverは、MCPサーバーを評価する開発者やエージェント向けに、passmcpの診断機能を読み取り専用のMCPツールとして提供します。許可リスト内のStreamable HTTPエンドポイントを検査し、認証情報を送らずに証明をオフライン検証できます。

主な機能

  1. 01許可されたHTTPサーバーを評価
  2. 02スコア、評価、失敗項目を報告
  3. 03証明のオフライン検証
  4. 04ホスト許可リストによる対象制限
  5. 05認証情報なしで検査を実行

活用シーン

  1. 01開発中にローカルMCPサーバーを評価
  2. 02失敗項目と修正案への参照を確認
  3. 03エージェントのワークフロー内で証明を検証
  4. 04エージェントによる検査を許可済みホストに限定

MCP 対応

MCPホストとはstdioで通信し、許可リスト内のStreamable HTTPエンドポイントの評価、証明の検証、バージョンの確認に使うツールを提供します。ツールはすべて読み取り専用で、評価時に認証情報を使用しません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"com-sebastienrousseau-passmcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PASSMCP_SERVER_ALLOW",
"ghcr.io/sebastienrousseau/passmcp-server:0.0.8"
],
"env": {
"PASSMCP_SERVER_ALLOW": "<PASSMCP_SERVER_ALLOW>"
}
}
}
}
起動コマンドdocker run -i --rm -e PASSMCP_SERVER_ALLOW ghcr.io/sebastienrousseau/passmcp-server:0.0.8
設定が必要な環境変数
PASSMCP_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/sebastienrousseau/passmcp-server:0.0.8

ツール

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

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

詳細

passmcp-server のロゴ

passmcp-server

passmcp は、Model Context Protocol サーバーの診断ツールです。MCP ツールとして利用できるため、エージェントはエディター内からサーバーを評価したり、そのサーバーに関するアテステーションを確認したりできます。読み取り専用で、許可リストに基づいて動作し、認証情報を送信することはありません。

ビルド カバレッジ リリース ドキュメント OpenSSF Scorecard ライセンス:GPL-3.0-only Go 1.26.9+

passmcp の呼び出しで、stdio 経由で passmcp-server の passmcp_version ツールと passmcp_check ツールを実行。passmcp_check が、passmcp のサンプルである toxic-pair サーバーをループバック上で評価し、100 点中 97 点をスコアとして表示


目次

はじめに

  • インストール — リリースアーカイブ、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

ライブラリリファレンス

運用

インストール

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 はその登録情報です。


要件

要件最低条件適用方法
passmcpPATH に含まれているか、--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)。

コンポーネント目的ユースケース
passmcpMCP サーバーの診断ツールです。9つのフェーズでチェックし、すべての検出結果を、それが確認されたリクエストに結び付け、署名付き証明書を生成しますエージェントが信頼する前にサーバーをテストし、CIでゲートします
passmcp-reporting証明書の形式、JSON Schemaとオフライン検証ツール、グラフモデル、agentgatewayプロセッサを提供しますゲートウェイ、レジストリ、パイプラインで証明書を検証します
passmcp-server読み取り専用のMCPツールとして提供する、passmcpの診断機能ですエージェント内からサーバーを評価したり、証明書を確認したりします
passmcp-actionGitHub ActionsとGitLab CIでpassmcpを実行します。イメージはダイジェストで固定されています選択した検出結果に基づいてビルドを失敗させます
passmcp-graph証明書から構築する、エージェント、サーバー、ツール、IDのローカルグラフです継承されたリスクや過剰な権限を特定し、ポリシーに基づいてゲートします
passmcp-registryMCP 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;ping0.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_checkpassmcp 独自の計測時間(レポートに記載)対象サーバー

計測方法と全結果については、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 件の失敗を返し、結果が切り詰められたことを示します。


設定

フラグ環境変数デフォルト説明
--allowPASSMCP_SERVER_ALLOW空:ループバックのみループバック以外に passmcp_check が評価できるホスト。カンマ区切りで指定します。先頭にドットを付けるとサブドメインが許可されます
--passmcpPASSMCP_SERVER_PASSMCPPATH 上の passmcppassmcp プログラムのパス
--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 つの入り口です。

ドキュメント内容
docs/ARCHITECTURE.md呼び出しの流れ、パッケージ、すべての実行で固定される設定
docs/adr/このリポジトリの意思決定記録
docs/COMPARISON.mdpassmcp-server と、passmcp を実行するその他の方法との比較
docs/BENCHMARKS.mdサーバーが実行に追加する内容と、その測定方法
docs/publishing.mdレジストリ掲載情報の公開
docs/releases/リリースの概要。リリースごとに 1 ファイル
server.jsonMCP 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 を使用します。

トップに戻る

コメント

MCP は初めてですか?

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

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