关于 Protocol Conformance
Protocol Conformance 是面向开发者的命令行工具、TypeScript 库和 MCP 服务,用于验证 MCP 服务实现。它针对多个 MCP 规范版本检查协议行为,并可比较清单和报告以发现破坏性变更。
主要功能
- 01JSON-RPC 与版本检查
- 02stdio 和 HTTP 传输测试
- 03OAuth 2.1 PKCE 验证
- 04工具架构与能力检查
- 05往返冒烟测试和注释审计
- 06清单与报告比较
适用场景
- 01发布前验证 MCP 服务
- 02在 CI 中运行一致性检查
- 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,验证 JSON-RPC 2.0 线路符合性、规范版本握手、传输行为、OAuth 2.1 PKCE、工具架构、能力声明、冒烟往返测试和注解规范(实验性
tasks、结构化工具输出、默认使用 JSON Schema 2020-12、工具 title/icons)。
这是 StudioMeyer MCP Factory 的基础构建版本:Factory 的其他所有构建版本在发布前(npm 发布、提交至市场、上游 PR)都会通过此测试框架运行。
我们想说的话
过去两年,我们一直在为自己构建工具和系统。这个仓库规模小、星标少,并不是因为它很新,而是因为我们直到最近才决定分享自己的成果。这不是一次全新的尝试,而是一段漫长历程,最近才有了提交记录。
我们热爱构建和分享,但不喜欢社交媒体策略、增长技巧,也不追逐星标和关注者。所以这个仓库规模不大。代码是真实的,有人在使用,问题也会得到回复。欢迎自行判断。
如果它对你有帮助,分享、测试和反馈都能帮到我们。如果你觉得它还有改进空间,提交 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
比较两个清单
mcp-conformance compare \
--expected manifests/v1.json \
--actual manifests/v2.json
断言两个报告之间没有破坏性变更
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(mock-AS 或真实租户) |
| 5 | runToolSchemaValidation | inputSchema(以及 2025-11-25 的 outputSchema / title)是有效的 JSON-Schema |
| 6 | runCapabilityIntrospection | initialize.capabilities 与行为一致(以及 2025-11-25 的 tasks) |
| 7 | runRoundtripSmoke | 对每个已声明的工具执行一次 tools/call |
| 8 | runAnnotationsAudit | readOnlyHint / destructiveHint 规范检查 |
| 9 | runFullSuite | 所有测试套件及摘要 |
| 10 | generateReport | 生成 JUnit / JSON / 终端格式报告 |
| 11 | compareManifests | 比较两个工具清单 |
| 12 | assertNoBreakingChanges | 比较两个 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 — 版权所有 (c) 2026 Matthias Meyer (StudioMeyer)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。