SuperAPI AI 工具集

mcp-qa

测试与质量

查看项目

更新于 10-20 09:05

技能介绍

用途

mcp-qa 用于在提交代码或创建 PR 之前,对 MCP 工具变更进行端到端 QA。它强调优先使用可通过 agent 调用的路径,而不是浏览器或 inspector 工作流。

主要能力

  1. 质量门禁:运行 pnpm run tsc && pnpm run lint && pnpm run test,先修复所有失败。
  2. Stdio CLI 验证:这是验证工具行为的主要路径。Stdio 使用本地 MCP 服务器访问生产 Sentry,不依赖 Cloudflare worker、本地 /mcp 路由或 Cloudflare OAuth 配置。
  3. 真实 agent 客户端验证:用于验证 Claude Code、Codex,或仅在真实 agent 客户端中复现的行为。
  4. Cloudflare HTTP 验证:仅在变更涉及 Cloudflare、HTTP 传输、/mcp 路由、OAuth、Web UI 或托管服务器兼容性时执行。
  5. 源码构建 Stdio 验证:仅在需要检查构建后的本地 stdio 服务器而非开发期源码执行时使用。

使用方式

Stdio CLI

验证代码或工具变更时需先构建,因为测试客户端会启动 packages/mcp-server/dist/index.js:

pnpm -w run build

先检查认证状态:

pnpm --filter @sentry/mcp-server start auth status

若无缓存,预热设备码缓存:

pnpm --filter @sentry/mcp-server start auth login

设备码认证使用内置 stdio 公共客户端 ID,无需客户端密钥,独立于 Cloudflare OAuth 应用,令牌缓存在 ~/.sentry/mcp.json。

先证明启动与认证:

pnpm -w run cli --transport stdio --list-tools
pnpm -w run cli --transport stdio "who am I?"

再用真实的生产提示词证明变更行为,提示词需覆盖新增或修改的工具路径、使用真实组织/项目/资源输入,并要求足够细节以证明端点响应可用:

pnpm -w run cli --transport stdio \
  "<prompt that exercises the changed MCP behavior against prod data>"

通过 QA 的标准:本地 CLI 输出 Connected to MCP server (stdio),使用预期的 MCP 工具路径,并返回展示该行为的真实生产数据。对应目录型工具,应看到 search_sentry_tools 后跟 execute_sentry_tool(name: <changed_tool>);对应直接工具,转录中应出现该工具名。仅运行 --list-tools 不算通过 QA。

对于仅目录型且有变更副作用的工具,除非准备了可丢弃资源用于测试,避免改动生产数据。可添加或运行带 MSW 覆盖的服务端级 execute_sentry_tool 分发测试,以证明目录发现、生成的 schema 暴露、约束注入和工具分发。

对于输出格式变更,还应尽可能检查原始 MCP 工具结果,而不只是 LLM 最终答案。最终答案可能附加模型特定文本,不属于工具响应。对照 docs/contributing/tool-responses.md 审查原始工具输出:应面向用户、结构化,且不含原始 API JSON、内部实现 ID、空占位符和不相关指令。

真实 agent 客户端

用于验证 Claude Code、Codex 或仅在真实 agent 客户端中复现的行为时,先构建:

pnpm -w run build

该验证检查:CLI 已安装且能看到指定的 MCP 服务器;提供方可以针对 Sentry MCP 运行连通性提示词;最终答案包含来自 whoami 的已认证邮箱。

对于 agent 客户端特定行为,将默认 harness 提示词替换为 Stdio QA 所用的同一真实生产提示词。通过 QA 同样需要变更工具的转录证据,而不仅是 whoami。

真实客户端不会为 stdio 子进程提供 TTY,因此运行 harness 前需预热缓存。它同样运行构建后的 packages/mcp-server/dist/index.js,因此需先构建以避免过期代码。

Cloudflare HTTP(仅在相关时)

仅当变更涉及 Cloudflare、HTTP 传输、/mcp 路由、OAuth、Web UI 或托管服务器兼容性时运行;普通工具处理器变更不需要。

在单独终端或后台进程启动开发服务器:

pnpm dev

验证可访问:

curl -s -o /dev/null -w "%{http_code}" http://localhost:5173/

若 pnpm dev 因本地 Cloudflare/Wrangler 未配置而失败,记录该失败并继续用 Stdio QA 验证工具行为。

pnpm -w run cli "who am I?"
pnpm -w run cli "list all available tools"
pnpm -w run cli "<same realistic prod prompt used for stdio QA>"
pnpm -w run cli --mcp-host=http://localhost:5173/mcp/<org> \
  "<same realistic prod prompt used for stdio QA>"
pnpm -w run cli --mcp-host=http://localhost:5173/mcp/<org>/<project> \
  "<same realistic prod prompt used for stdio QA>"

查找 Connected to MCP server (<resolved MCP URL>) 以确认 HTTP 传输,并取得与 Stdio QA 相同的变更工具转录证据。验证路由、OAuth 或资源范围行为时,使用带作用域的 /mcp/<org> 或 /mcp/<org>/<project> URL。使用 --setup repo --server sentry 测试托管服务器。

源码构建 Stdio(仅在相关时)

用于专门检查构建后的本地 stdio 服务器而非开发期源码执行:

pnpm -w run build
pnpm --filter @sentry/mcp-server start auth status
pnpm -w run cli --transport stdio "who am I?"

查找 Connected to MCP server (stdio) 以确认 stdio 传输。

适用场景

适用于 MCP 工具的端到端变更验证,包括工具行为、输出格式、目录型工具分发,以及在 Claude Code、Codex 等真实 agent 客户端中的表现。也适用于涉及 Cloudflare HTTP 传输、路由、OAuth 或托管服务器兼容性的场景。

限制

仅运行 --list-tools 不构成 QA。目录型变更工具若涉及生产数据修改,需可丢弃资源或改用 MSW 测试。Cloudflare HTTP 验证仅在相关变更时必要,且本地 Cloudflare/Wrangler 未配置时可能无法运行。运行真实 agent 客户端前需预热缓存,且需先构建以避免过期代码。