让 Agent 真正用对你的服务:用 CATT 测试 MCP、网站与 API
传统测试通常验证“接口能不能返回预期 JSON”;但接入 AI Agent 后,还要回答另一个问题:Agent 有没有选对工具、遵守审批规则、正确操作服务,并如实告诉用户结果?Consumer Agent Testing Tool(CATT)把被测对象放在服务一侧:运行脚本化或模型驱动的 Agent,观察服务实际发生了什么,再检查证据与最终回答。
项目由 Coverage Cat 维护,采用 MIT 许可证。其 GitHub README 将当前能力分成 MCP connector、嵌入式 MCP app、网站浏览和 HTTP API 等测试路径;也提供报告、导出、回放和差异比较。它不是某个托管 Agent 的官方兼容性认证器,而是一个可替代模拟宿主的测试框架——通过测试只能说明在 CATT 声明的模拟范围内通过,不能推导出对真实闭源产品的完全兼容。
先从无需模型的 MCP 场景开始
CATT 的 connector lane 可连接 Streamable HTTP MCP 服务。对于确定性的回归用例,可以用脚本驱动,不需要模型账号,也不会产生推理费用。仓库提供了本地预订示例:启动 fixture 服务后,执行已记录的工具调用,测试框架再检查服务端预言结果和 Agent 的最终答复。
uv sync uv run python -m consumer_agent_testing_tool.connector_fixture --port 8765 --variant good --auth none
在另一个终端运行脚本化测试:
uv run consumer-agent-testing-tool connector-run examples/connector/fixture-booking.yaml \ --driver scripted --script examples/connector/fixture-booking.calls.json
README 描述的示例会搜索房间、获取报价并完成预订;测试端还会确认预订状态、审批卡与实际调用是否匹配,以及最终答复是否遗漏金额或确认信息。脚本化运行适合放进 CI 做稳定回归:模型不参与决策,失败更容易复现。
用 scaffold 起草场景,但不要盲信生成结果
面对已有 MCP 服务,可以先让 scaffold 读取工具目录并生成场景骨架,再用 readiness 检查静态审阅工具目录及约束:
uv run consumer-agent-testing-tool scaffold http://127.0.0.1:3001/mcp --output my-service.yaml uv run consumer-agent-testing-tool check http://127.0.0.1:3001/mcp --suite muse-guidelines
scaffold 会执行协议握手和 tools/list,不调用服务工具;生成文件中的 TODO(scaffold) 必须人工补完。静态检查同样不代表服务获得任何第三方平台的准入或认可。对工具目录之外的业务规则,仍应在场景中明确审批、允许操作和结果断言。
当需要观察模型选择工具的行为时,可切换到模型驱动运行,但这需要配置模型档案和 API 凭证,且会发送推理请求、可能产生费用。CATT 文档还提醒,不要把密钥写进场景或共享证据。可以先以脚本测试服务逻辑,再用少量模型试验检查工具选择和答复质量。
网站与 API:能力边界要一起写进测试
CATT 也包含浏览器与 HTTP API 路径,但两者都有明确边界。README 说明浏览器场景使用 Chromium,并非操作系统级隔离;API 测试需要映射、loopback 部署及私有控制适配器。若测试越权、审批或副作用,不能仅凭 Agent 的自然语言回答判定成功,应检查服务端实际状态或独立 oracle。
更重要的是,模拟器的范围必须透明。CATT 对模拟行为记录来源类别(例如 documented、unofficial、assumed 或 unknown);某个通过结果若依赖 unofficial 或 assumed 行为,应在团队报告中保留这个限制。对付款、写入和外部通知等高风险动作,优先使用本地 fixture 或隔离测试账户,避免把试验请求发往真实生产系统。
适合怎样接入团队流程
一个务实的落地顺序是:先选一个会产生可观察结果的核心用户任务;写脚本化场景和服务端断言;将 connector-run 的退出状态接入 CI;再针对容易出错的工具选择或多轮任务引入模型驱动试验。对模型试验记录配置、场景版本和运行证据,比较构建时重点关注回归,而不是把单次通过当成统计保证。
CATT 的价值不在于替代单元测试或真实产品认证,而在于把“Agent 做了什么”变成可检查的服务端结果、审批记录和答复断言。对于提供 MCP、API 或 Agent 可操作界面的团队,这能补上纯接口测试看不到的行为层;前提是测试者同时理解模拟宿主能覆盖什么、不能覆盖什么。