mcp-proof
🧾 mcp-proof
領収書付きでMCPサーバーを出荷する。
1つのコマンドで任意のMCPサーバーを監査します — ツール、リソース、プロンプト、プロトコル時代を問わず、stdioまたはStreamable HTTPに対応 — そしてクライアントにフィンガープリント付きの再現可能な納品レポートと、そのまま使い続けられるCIリグレッションスイートを渡します。
公式MCP filesystemサーバーの実際の監査結果: 適合性チェック25件、MSSS準拠テーブル、リグレッションfixture 34件 — すべてグリーン。
✨ 得られるもの
🔍 全サーフェス・両時代にわたるワイヤーレベルのプロトコルチェック — mcp-proofはサーバーと生のJSON-RPCで通信し、その時代を自動検出します: 2026-07-28モダン時代向けチェック30件(
server/discover、_metaエンベロープ強制、resultType、全キャッシュ可能な結果へのttlMs/cacheScope、-32022バージョン拒否、HTTPルーティングヘッダー強制)、initializeハンドシェイク時代向けチェック25件 — 正確なエラーコード、スキーマ妥当性、構造化出力、stdoutの衛生状態、ページネーション安全性、専用のリソース&プロンプトレーン、そして検証済みネガティブプローブ: TOOL-07は宣言されたinputSchemaに確実に違反する入力を送信し、サーバーがそれを通常どおり応答した場合に警告し、最小限の再現コードを引用します。双方向で機能認識型: サーバーが宣伝していないサーフェスはスキップされ、宣伝しているサーフェスは動作しなければなりません。🛡️ 公開標準に紐づいたセキュリティ監査 — 決定的チェック6件(ツール説明のポイズニング、不可視/双方向文字、認証情報の漏洩、無制限のインジェクションサーフェス、宣伝されたシェル実行)、それぞれが24コントロールのMCP Server Security Standardの標準コントロールIDにマッピングされ、全レポートに完全な準拠テーブルとして表示されます。
📼 クライアントが使い続けるリグレッションスイート — どちらのプロトコル時代でも記録可能。SHA-256 provenance付きのゴールデンfixtureがサーバーの動作を固定し、リプレイはすべてのドリフトを(
BREAKING/VALUE/COSMETIC/LATENCYで)等級付けし、構造化出力を理解し、ステートフルな呼び出し順序を保持し、コピペですぐ使えるGitHub Actionsゲートが同梱されています。📄 人間と機械の両方のためのレポート — 自己完結型HTML、スティッキーナビゲーション、チェックごとのアンカー(
report.html#SEC-03)、注意/合格フィルター、折りたたみ可能なMSSSマトリクス付き。--pdfで印刷可能。同じバージョン管理されたモデルが--json(スキーマv1)、任意のCI向け--junit、GitHub Securityタブ向け--sarifとしても出力されます。🔁 設計上再現可能 — LLM呼び出しゼロ、APIキーゼロ。すべてのハッシュは動作のみから計算されます — タイムスタンプとレイテンシは別のハッシュ対象外の観測レイヤーに格納されるため、同一のサーバー動作は同一のレポートフィンガープリントを生成し、受け入れは検証であって信頼ではありません。
🧯 アノテーション優先の呼び出し計画 — MCPツールアノテーションは双方向で名前ヒューリスティックより優先されます:
readOnlyHintは正規表現が過剰にブロックする読み取り専用ツールを救い、destructiveHintは見逃すミューテーターを捕捉します。アノテーションのないツールは保守的なヒューリスティックにフォールバックします。mcp-proof planは本番に触れる前に、自動ベースラインが何をどの根拠で呼び出すかを正確に示します。--include-destructiveと--edge-casesでさらに多くのケースにオプトインできます。📋 CI向けコントラクト差分 —
mcp-proof inspectは提供中のサーフェス(機能+ツール+リソース+プロンプト、完全にページネーション処理済み)をフィンガープリント付きマニフェストに固定します。mcp-proof diffはすべての変更をBREAKING/ADDITIVE/METADATAに分類し、破壊的変更では非ゼロで終了します — スキーマの厳格化、enumの絞り込み、必須フラグの反転、出力フィールドの削除、安全性アノテーションの弱体化がすべて対象です。
Related MCP server: MCProbe
🚀 クイックスタート
pip install git+https://github.com/YuCPbit/mcp-proof
mcp-proof run python my_server.py --fixtures fixtures/ --out report.html代わりに実行中のHTTPサーバーを監査しますか? mcp-proof run --url http://localhost:8000/mcp --out report.html
終了コード0は以下を意味します: すべてのMUSTチェック合格、セキュリティ指摘ゼロ、動作ドリフトゼロ — 1行のCIゲートです。
mcp-proof plan python my_server.py # what would auto-baselining call, and why
mcp-proof record python my_server.py --fixtures fixtures/ # freeze the behavioural contract
mcp-proof replay --fixtures fixtures/ -- python my_server.py # fail on any drift
mcp-proof inspect python my_server.py --out baseline.json # freeze the contract surface
mcp-proof diff baseline.json current.json # BREAKING / ADDITIVE / METADATA, exit 1 on breaking組み込みのデモペア — クリーンなサーバーと9つの仕掛けられた違反を持つサーバー — で60秒で違いを確認できます:
mcp-proof run python demo/good_server.py --fixtures demo/fixtures-good --out report-good.html # → SHIP-READY
mcp-proof run python demo/bad_server.py --out report-bad.html # → 5 MUST failures, 3 security findings📊 実際の監査、実際のレポート
ターゲット | 判定 | レポート |
公式MCP filesystemサーバー ( | ✅ SHIP-READY — MUSTチェック11/11、リプレイ34/34クリーン、書き込みツール4件は自動スキップ | |
2026-07-28モダン時代サーバー (依存ゼロ、公式v2 SDKと相互検証済み) | ✅ SHIP-READY — | |
9つの仕掛けられた違反を持つデモサーバー | ❌ NOT SHIP-READY — MUST失敗5件+セキュリティ指摘3件、すべて証拠付きで捕捉 | |
正常に動作するデモサーバー | ✅ SHIP-READY — MUST 16/16、3レーン完全合格(リグレッションベースライン含む) |
🔬 3つのレーン
レーン | 証明すること | 方法 |
プロトコル適合性 | サーバーがワイヤーレベルでMCPを正しく実装している — 時代ネゴシエーション、JSON-RPCエラーセマンティクス、ツール/リソース/プロンプトサーフェス、出力スキーマ、機能の一貫性、ページネーション、stdoutの衛生状態 | 自作のJSON-RPCプローブが生のバイトストリームを観測するため、何も平滑化されない |
セキュリティ&衛生 | ツールメタデータがクリーン: 注入された命令、隠しUnicode、漏洩した秘密情報、無制限の実行サーフェスがない | 決定的な静的解析、すべての指摘にMSSSコントロールIDが付与される |
動作リグレッション | サーバーが納品時とまったく同じ動作をしている | provenanceフィンガープリント付きゴールデンfixtureの記録/リプレイ、ドリフトは重大度で等級付け |
すべてのレーンが1つのレポートに集約されます — そしてレポートは優先順位付けされた修正リストで締めくくられるため、是正計画書としても機能します。
📡 プロトコルサポート
トランスポート | stdio ✅ · Streamable HTTP ✅ |
サーフェス | tools ✅ · resources ✅ · prompts ✅ — 双方向で機能認識型 |
モダン時代 | ✅ 適合性レーン、自動検出 — |
レガシー時代 (initializeハンドシェイク、 | ✅ 全レーン |
リグレッションレーン | ✅ 両時代 — SDKセッション(レガシー) · プローブベースセッション(モダン) |
モダンレーンは公式v2 SDKに対して双方向で検証されています: 公式クライアントはserver/discover経由でmcp-proofの自作モダンテストサーバーを採用し、mcp-proofは公式v2 SDKサーバーに対して両トランスポート — stdioとSSEレスポンス付きStreamable HTTP — で全3レーンを完全グリーンで実行します(scripts/crosscheck_modern_server.py)。
任意の言語のサーバーで動作します — mcp-proofはプロセス(またはURL)と通信するのであって、コードベースとは通信しません。
⚙️ CIを1ステップで
- uses: YuCPbit/mcp-proof@v0.5.0
with:
server-command: python my_server.py
fixtures: fixtures/ジョブはサーバーがship-readyでない限り失敗し、アップロード用にmcp-proof-report.html / .json / .junit.xml / .sarifを残します。生のコマンドがお好みですか? mcp-proof run … --junit r.xml --sarif r.sarifにmcp-proof diffを加えたものが同じゲートです。
🏗️ 監査クリーンなテンプレートで構築
サーバーを監査するのではなく構築しますか? templates/server-starter/はこの監査をそのまま合格するfastmcpサーバーです — 制約付き入力スキーマ、適切なエラーセマンティクス、構造化出力、すべてのプラクティスにそれが満たすチェックIDが注釈されています。コピーして、ツールを実装し、監査し、レポート付きで出荷します。
🖥️ プラットフォーム
macOS | ✅ 開発・完全検証済み |
Linux | ✅ CIで実行済み |
Windows | ✅ CIで実行済み |
🗺️ ロードマップ
リリース | 焦点 |
v0.3 | ✅ 二時代プロトコルサポート、mainで出荷 — 時代自動検出、モダン時代チェック19件、二時代リグレッションセッション、両トランスポートで公式v2 SDKに対して検証済み |
v0.4 | ✅ 機能認識型リソース&プロンプトレーン · コントラクトマニフェスト |
v0.5 | ✅ バージョン管理されたJSONレポートモデル · JUnit & SARIF出力 · 再利用可能なGitHub Action( |
v0.6 | ✅ 二段階引数合成( |
今後 | オプトインのセマンティックレーン(LLM評価アサーション) — 決定的コアが完成するまで保留 |
🔍 制限事項
mcp-proofは決定的に証明できることを証明し、どれがどれであるかを明示します:
セキュリティチェックは、観測可能なプロトコルとメタデータの表面を対象とします。デプロイ、ソース、またはプロセスの証拠を必要とするMSSSコントロールは、常に手動レビューとして報告され、合格として報告されることはありません。
自動ベースライン化は、保守的な名前/説明のヒューリスティックによってツールを分類します。本番環境に対して記録されたベースラインを信頼する前に、フィクスチャマニフェストのスキップリストを確認してください。
意味的正しさ(回答が正しい意味を持っているか?)は、設計上、決定論的コアの範囲外です。
📄 ライセンス
MIT — MSSSコンプライアンスセクションの分類法は、MCP Server Security Standard(CC BY-SA 4.0)に従っています。
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP Spec Compliance MCP — audits any MCP server.json against the official Model Context Protocol
Scans remote MCP servers for protocol, security, and TLS issues; exposes scan tools via MCP.
MEOK MCP Test MCP — golden-file + schema-drift + tool-failure tests for any MCP server. Drop-in
Grade MCP servers A to F with the open behavioral litmus. npm: full toolset; hosted: lookups only.
Related MCP Servers
- AlicenseAqualityAmaintenanceA stdio MCP server that audits other MCP servers over the live protocol. It connects to any MCP target (stdio or HTTP), lints every tool's schema for agent-usability, then actually calls the tools with deliberately broken inputs to see how the server handles them, and returns a 0–100 conformance score with a per-dimension breakdown rendered as Markdown.66MIT
- AlicenseAqualityCmaintenanceA stdio MCP server that audits other MCP servers by linting their tool schemas and calling tools with malformed inputs to produce a 0–100 conformance score and Markdown report.6353 npmMIT
- AlicenseNot gradedqualityCmaintenanceAudits any MCP server against the official spec, providing HMAC-signed conformity reports.24 PyPIMIT
- AlicenseNot gradedqualityAmaintenanceAudits MCP server configurations for security risks including capability inventory, SSRF, prompt injection, and drift detection. Works in read-only mode and can also be used as an MCP server to let AI agents audit their own attack surface.411 PyPI4MIT