MCP Server Testing 已碎片化。我为 Record、Replay、Mock、Audit 和 CI 构建了一个 CLI

发布: (2026年3月8日 GMT+8 02:10)
6 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的完整文本(除代码块、URL 和上述来源链接外),我将按照要求把内容翻译成简体中文并保留原有的 Markdown 格式。

Source:

MCP 服务器测试的问题

构建 MCP 服务器相对简单,但端到端的测试却很零散。

  • 你可以手动测试或编写少量脚本,部署服务器后再更改某些内容(输入模式、响应格式、依赖项),却没有任何回归安全网。
  • 同事们需要 API 密钥和正在运行的实例才能针对你的服务器进行开发。
  • CI 流水线往往没有验证服务器是否真的可用。
  • 对恶意内容的审计工具描述几乎没有自动化。

这些痛点各有对应的解决方案,但将它们拼接在一起往往需要大量粘合代码,而这些代码很少能进入生产环境。

现有工具(快速调查)

工具优势限制
MCP Inspector (Anthropic)交互式调试和探索不适用于 CI 或自动化测试
MCP‑Scan (Invariant Labs / Snyk)安全扫描(工具投毒、拉地毯检测)仅专注于安全
PromptfooLLM 红队测试,近期支持 MCP主要是提示层面的测试,而非完整服务器工作流
MCP Protocol Validator规范合规性检查范围狭窄
Ad‑hoc SDK scripts完全自定义无法扩展;所有内容都需自行维护

这些工具都未覆盖完整的循环:record → replay → mock → audit → score → CI.

介绍 MCPSpec

MCPSpec 是一个开源 CLI,旨在通过在单一工具中处理整个测试生命周期来弥合这一差距。

核心特性

  • 记录 与服务器的真实交互会话。
  • 回放 会话到新版本服务器,并获取每个响应的差异。
  • Mock 生成:生成可在 CI 中使用的独立 JavaScript Mock 服务器,无需 API 密钥或真实实例。
  • 审计 安全问题,如工具投毒、过度代理、路径遍历、注入等。
  • 评分 服务器在文档、模式质量、错误处理、响应速度和安全性方面的表现。
  • CI 集成:自动生成 GitHub Actions、GitLab CI 或 Shell 脚本,运行记录/回放、审计和评分检查。
  • 可选的基于 YAML 的测试集合,支持 10 种断言类型、环境变量、标签和并行执行。

记录和重放会话

# Record a session against the current server
mcpspec record start "npx my-server"
# ...interactively call tools, then save the session
mcpspec record save my-session
# Replay the recorded session against a new version
mcpspec record replay my-session "npx my-server-v2"

示例输出

Replaying 3 steps...

  1/3 get_user (id=1)...       [OK] 42ms
  2/3 list_items...            [CHANGED] 38ms
  3/3 create_item (name=test) [OK] 51ms

Summary: 2 matched, 1 changed, 0 added, 0 removed

生成模拟服务器

mcpspec mock my-session --generate ./mocks/server.js

生成的 server.js 仅依赖 @modelcontextprotocol/sdk。将其提交到你的仓库,并在 CI 或本地开发中使用,无需任何外部依赖。

安全问题审计

# Passive mode (metadata only, safe for production)
mcpspec audit "npx my-server"

# Active mode (sends test payloads, skips destructive tools)
mcpspec audit "npx my-server" --mode active

审计运行八条规则,检测真实问题,包括:

  • 工具投毒 – 隐藏的指令,LLM 可能会盲目执行。
  • 过度自主 – 工具可以在未确认的情况下执行破坏性操作。
  • 路径遍历、注入、输入验证、信息泄露、资源耗尽、身份验证绕过

为服务器评分

# 在五个类别中获取 0‑100 分数
mcpspec score "npx my-server"

# 强制最低分数(例如,如果低于 80 则使 CI 失败)
mcpspec score "npx my-server" --min-score 80

该分数可以在你的 README 中显示为徽章,或用于控制合并。

CI 集成

mcpspec ci-init

此命令会搭建 GitHub Actions 工作流、GitLab CI 配置或通用 shell 脚本,以自动运行记录/回放、审计和评分步骤。

安装与快速开始

npm install -g mcpspec

运行预构建的测试集合,无需任何设置:

mcpspec test examples/collections/servers/filesystem.yaml

MCPSpec 附带 70 个可直接运行的测试,覆盖七个流行的 MCP 服务器(filesystem、memory、time、fetch、everything、GitHub、Chrome DevTools)。

同时提供网页仪表盘:

mcpspec ui

所有这些 免费、快速、可重复且遵循 MIT 许可证

接下来是什么?

未来的工作包括:

  • 合同快照 – 自动检测破坏性的模式更改。
  • 模式漂移检测 用于 CI 流水线。

欢迎提供想法和反馈!

0 浏览
Back to Blog

相关文章

阅读更多 »