Protocol Conformance について
Protocol Conformanceは、MCPサーバーの実装を検証するCLI、TypeScriptライブラリ、MCPサーバーです。複数のMCP仕様バージョンに対応したテストに加え、マニフェストやレポートの比較も行えます。
主な機能
- 01JSON-RPCとバージョンの検査
- 02stdio・HTTPトランスポートのテスト
- 03OAuth 2.1 PKCEの検証
- 04ツールスキーマと機能の検査
- 05スモークテストとアノテーション監査
- 06マニフェストとレポートの比較
活用シーン
- 01リリース前のMCPサーバー検証
- 02CIでの適合性テスト実行
- 03バージョン間のツールマニフェスト比較
- 04レポート間の破壊的変更の検出
MCP 対応
自らMCPサーバーとして動作し、適合性テストの実行、レポート生成、マニフェスト比較、破壊的変更の確認を行う12個の読み取り専用ツールを公開します。stdioまたはHTTP経由で他のMCPサーバーもテストできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
StudioMeyer MCP Stack の一部 — マヨルカ島で開発 🌴 · 使用したら ⭐ をお願いします
mcp-protocol-conformance
Model Context Protocol サーバー向けの適合性テストハーネスです。MCP 仕様の 2024-11-05、2025-03-26、2025-06-18、および現在の安定版リビジョン 2025-11-25(実験的な
tasks、構造化ツール出力、JSON Schema 2020-12 のデフォルト設定、ツールの title/icons)に対して、JSON-RPC 2.0 のワイヤー準拠、仕様バージョンのハンドシェイク、トランスポートの動作、OAuth 2.1 PKCE、ツールスキーマ、機能の広告、スモークテストによるラウンドトリップ、アノテーションの適切さを検証します。
これは StudioMeyer MCP Factory の Foundation ビルドです。ほかの Factory ビルドはすべて、公開前(npm への公開、マーケットプレイスへの申請、上流への PR)にこのハーネスでテストされます。
私たちからひとこと
私たちはこの 2 年間、自分たちのためにツールやシステムを作ってきました。このリポジトリが小さく、スターが少ないのは新しいからではありません。私たちが作ってきたものを、共有しようと決めたのがつい最近だからです。できたばかりの実験ではなく、最近コミットが加わった、長い物語です。
ものづくりと共有が大好きです。ソーシャルメディアの戦術や成長の裏技、スターやフォロワーを追いかけることは好きではありません。だから、このリポジトリは小規模です。コードは実際に使われており、問題には回答しています。ぜひご自身で判断してください。
役に立ったら、共有、テスト、フィードバックで応援していただけるとうれしいです。改善できそうな点があれば、Issue の報告が何より役立ちます。これを使って何か作ったら、[email protected] までお知らせください。本当にうれしいです。
パルマ・デ・マヨルカの小さなスタジオより。
インストール
npm install --save-dev mcp-protocol-conformance
このパッケージには CLI(mcp-conformance)と TypeScript ライブラリエントリー(import ... from "mcp-protocol-conformance")の両方が含まれています。
CLI の使い方
stdio サーバーに対して実行する
mcp-conformance run \
--target stdio \
--cmd node \
--cmd-arg dist/server.js \
--spec 2025-06-18 \
--suite all \
--format terminal
HTTP サーバーに対して実行する(Streamable HTTP、2025-03-26 以降)
mcp-conformance run \
--target http \
--url https://memory.studiomeyer.io/mcp \
--header "Authorization:Bearer ${TOKEN}" \
--spec 2025-06-18 \
--suite full \
--format json --out report.json
テストスイートの一部だけを実行する
mcp-conformance run --target stdio --cmd ./server --spec 2025-06-18 \
--suite jsonrpc,version,schema
2 つのマニフェストを比較する
mcp-conformance compare \
--expected manifests/v1.json \
--actual manifests/v2.json
2 つのレポート間に破壊的変更がないことを確認する
mcp-conformance assert-no-breaking \
--baseline reports/main.json \
--current reports/pr-42.json
終了コード:0 問題なし、1 失敗、2 呼び出しエラー。
ライブラリの使い方
import {
runFullSuite,
generateReport,
} from "mcp-protocol-conformance";
const report = await runFullSuite(
{ kind: "stdio", cmd: "node", args: ["dist/server.js"] },
"2025-06-18",
{ suite: "all" },
);
console.log(generateReport(report, "terminal"));
if (report.status === "fail") process.exit(1);
MCP サーバーとしての使い方
このハーネス自体が MCP サーバーです。stdio 経由で起動すると、任意の MCP クライアントから 12 個のツールを呼び出せます。
node dist/server.js
ツール(すべて読み取り専用で、すべて destructiveHint: false):
| # | ツール | 用途 |
|---|---|---|
| 1 | runJsonRpcCompliance | JSON-RPC 2.0 のエラーコードマトリックスとレスポンスエンベロープ(result と error の相互排他) |
| 2 | runSpecVersionAssertion | 広告されている protocolVersion を検証 |
| 3 | runTransportSuite | トランスポート層の ping と session-id |
| 4 | runOauthPkceFlow | OAuth 2.1 PKCE S256(モック AS または実際のテナント) |
| 5 | runToolSchemaValidation | inputSchema(および 2025-11-25 の outputSchema/title)が有効な JSON-Schema であることを検証 |
| 6 | runCapabilityIntrospection | initialize.capabilities が動作(および 2025-11-25 の tasks)と一致することを検証 |
| 7 | runRoundtripSmoke | 広告されている各ツールに対して tools/call を 1 回実行 |
| 8 | runAnnotationsAudit | readOnlyHint/destructiveHint の適切さを監査 |
| 9 | runFullSuite | すべてのテストスイートを実行して概要を表示 |
| 10 | generateReport | JUnit/JSON/ターミナル形式でレポートを生成 |
| 11 | compareManifests | 2 つのツールマニフェストの差分を表示 |
| 12 | assertNoBreakingChanges | 2 つの FullReports の差分を表示 |
互換性マトリックス
| 2024-11-05 | 2025-03-26 | 2025-06-18 | 2025-11-25 | |
|---|---|---|---|---|
| jsonrpc | yes | yes | yes | yes |
| version (handshake) | yes | yes | yes | yes |
| transport (stdio) | yes | yes | yes | yes |
| transport (http) | n/a | yes | yes | yes |
| oauth (mock) | n/a | yes | yes | yes |
| oauth (real) | n/a | yes | yes | yes |
| schema | yes | yes | yes | yes |
| capability | yes | yes | yes | yes |
| smoke | yes | yes | yes | yes |
| annotations | warn-only | warn-only | yes | yes |
| tasks (capability) | n/a | n/a | n/a | yes |
| tool title/output | n/a | n/a | n/a | warn-only |
yes = スイートが実行され、対応可能な結果が得られます。
n/a = この機能は仕様に含まれていないため、スイートは自動的にスキップします。
warn-only = スイートは実行されますが、仕様ではこの機能を正式に必須としていません。
2026-07-28 RC(ステートレスコア、SEP-2575/2567)は意図的に含めていません。 2026-07-28 に正式リリースされるため、これに対する適合性テストは、最終版 SDK を対象とする後続リリースで提供されます。
Factory ビルドへの統合
すべての Factory ビルドの package.json に次を追加します。
{
"scripts": {
"factory:conformance": "mcp-conformance run --target stdio --cmd 'node dist/server.js' --spec 2025-06-18 --suite full"
}
}
CI では次のようにします。
- run: npm run factory:conformance
仕様への参照
- JSON-RPC 2.0:https://www.jsonrpc.org/specification
- MCP 2024-11-05:https://modelcontextprotocol.io/specification/2024-11-05
- MCP 2025-03-26:https://modelcontextprotocol.io/specification/2025-03-26
- MCP 2025-06-18:https://modelcontextprotocol.io/specification/2025-06-18
- MCP 2025-11-25:https://modelcontextprotocol.io/specification/2025-11-25
- RFC 7636(PKCE):https://datatracker.ietf.org/doc/html/rfc7636
StudioMeyer について
StudioMeyer は、パルマ・デ・マヨルカを拠点に世界中のクライアントと仕事をする、AI とデザインのスタジオです。中小企業向けに、カスタムウェブサイトと AI インフラストラクチャを構築しています。Claude Agent SDK、MCP、n8n を本番環境のスタックとして採用し、可観測性には Sentry、Langfuse、LangGraph を使用するほか、社内開発のガードレイヤーを備えています。
ライセンス
MIT — Copyright (c) 2026 Matthias Meyer (StudioMeyer)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。