系列11-测试平台 MCP Server 实践:用 Kimi Code 自然语言查项目、跑 API 回归
你在 Kimi Code 里写脚本、改用例,AI 已经能读本地仓库;如果它还能 查测试平台里的失败记录、触发 API 回归、拉报告摘要,少切十几次浏览器,效率差很多。
MCP(Model Context Protocol) 就是干这个的:把 测试平台能力 封装成 AI 客户端可调用的 Tools。
演示与源码
| 地址 | |
|---|---|
| 功能演示 | http://43.142.83.156/showcase/ (MCP 相关说明见文档中心;平台 admin / BrickCore123456) |
| 开源仓库 | https://gitee.com/BanZhuanKeOrz/BrickCore |
线上路径:系统管理 → MCP 配置 ;使用者复制 JSON 在 数据看板 → 首页看板 → BrickCore MCP Server 卡片。
一、MCP 30 秒讲清
你(自然语言)
↓
AI 客户端(Kimi Code / Cursor / Claude Desktop)
↓ MCP 协议(HTTP)
测试平台 MCP Server
↓
BrickCore API(查项目 / 跑计划 / 读报告)
不是 把平台网页塞给 AI,而是 结构化工具 + 参数校验 + 写操作二次确认。
国内测开常用 Kimi Code(CLI + IDE),HTTP MCP 配置简单,下文以它为主。
二、典型测试场景
| 你在 Kimi Code 里说 | MCP 可能调用的能力 |
|---|---|
| 「BrickCore 有哪些项目?」 | 列项目 / 项目上下文 |
| 「项目 3 昨天接口计划失败几条?」 | 查执行记录、失败列表 |
| 「先 preview 接口计划 5,确认后再跑」 | preview → confirm → run_api_plan |
| 「这条失败用例请求体是什么?」 | get_test_report / 明细 |
| 「列出在线 UI Runner 设备」 | list_online_devices |
不必记英文工具名,自然语言描述即可;危险操作会自动走 preview。
三、BrickCore MCP 工具类别(概念)
| 类别 | 示例 |
|---|---|
| 上下文 | 项目概览、环境、最近失败 |
| 执行 | 触发 API/UI 计划(需 confirm) |
| 报告 | 计划结果、用例日志 |
| AI | 失败分析(若启用) |
CE 当前对外 MCP 共 58 个工具(与平台内助手「小测」共用后端);具体列表见文档中心 MCP 外部接入 。源码目录 backend/app/mcp/。
3.1 源码视角:Tool 如何注册与暴露给 AI
backend/app/mcp/server.py 用 _register 把 Python 函数挂到 HTTP 端点 /brickcore/agent-hub/:
python
_register("list_online_devices", mcp_tools.tool_list_online_devices, "列出在线 Web UI Runner 设备")
_register("preview_run_api_plan", mcp_tools.tool_preview_run_api_plan, "预览接口测试计划执行影响")
_register("run_api_plan", mcp_tools.tool_run_api_plan, "执行接口测试计划(需 confirm_token)")
写操作走 preview → confirm 两阶段(tools.py + mcp_confirm.py):
python
async def tool_preview_run_api_plan(ctx, plan_id, env_id=None):
ensure_permission(ctx, API_PLAN_EDIT)
impact = {
"plan_id": plan_id,
"plan_name": plan.name,
"item_count": item_count,
"warning": "将异步执行接口测试计划,可能触发大量 HTTP 请求",
}
confirm_token = await create_confirm_token(
"run_api_plan",
{"plan_id": plan_id, "env_id": resolved_env_id},
ctx.username,
)
return {"impact": impact, "confirm_token": confirm_token, "expires_in_seconds": 300}
真正 run_api_plan 时必须带上 confirm_token,一次性消费------防止 AI 在 IDE 里误触「跑生产计划」。
认证与业务 JWT 分离:Authorization: Bearer <MCP_API_KEY>(mcp/auth.py),便于运维轮换 Key 而不踢掉所有登录用户。
四、平台侧配置(管理员)
- 登录 BrickCore
- 系统管理 → MCP 配置
- 开启 启用 MCP Server
- 填写 平台对外地址 (如
http://43.142.83.156:8000或你的域名) - 设置 MCP API Key(足够长的随机串,勿用弱口令)
- 保存
使用者查看接入信息 :数据看板 → 首页看板 向下滚动 BrickCore MCP Server 卡片 → 复制 URL 或 一键复制 JSON。
默认路径:http://<host>:8000/brickcore/agent-hub/(末尾建议带 /)
五、Kimi Code 配置(实操)
5.1 前置:HTTP 认证写在 headers
重要 :HTTP 模式必须用 headers 传 Bearer Key ,不能写在 Environment Variables 里------env 仅用于 stdio 子进程,写在 env 里会 401 / authenticated: false。
5.2 方式 A:命令行(推荐)
bash
kimi mcp add --transport http brickcore http://43.142.83.156:8000/brickcore/agent-hub/ \
--header "Authorization: Bearer 你的MCP_API_KEY"
本地部署把地址换成 http://localhost:8000/brickcore/agent-hub/。
5.3 方式 B:编辑配置文件
路径:
- Linux / macOS:
~/.kimi/mcp.json - Windows:
C:\Users\你的用户名\.kimi\mcp.json
json
{
"mcpServers": {
"brickcore": {
"url": "http://43.142.83.156:8000/brickcore/agent-hub/",
"headers": {
"Authorization": "Bearer 你的MCP_API_KEY"
}
}
}
}
| 检查项 | 正确 |
|---|---|
| Transport | http |
| Requires OAuth | 不要勾选(用 Bearer API Key) |
| Authorization | 与平台 MCP API Key 完全一致 |
保存后 重启 Kimi Code。
5.4 连通性自检
curl(先确认端点可达):
bash
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer 你的MCP_API_KEY" \
"http://43.142.83.156:8000/brickcore/agent-hub/"
# 期望 200 或非 401
Kimi Code 对话验证:
用 BrickCore 查看 MCP 是否已连接成功
或:
用 BrickCore 列出所有项目
能返回项目列表即配置成功。
5.5 对话示例(Kimi Code)
你:列出 BrickCore 当前在线的 UI Runner 设备
AI:[list_online_devices] → device_id、在线状态
你:项目 3 有哪些接口测试计划?最近执行结果如何?
AI:[查计划列表 + 最近 record] → 汇总
你:帮我在测试环境 preview 接口计划 plan_id=5
AI:[preview_run_api_plan] → impact(计划名、条数、环境)+ confirm_token
你:确认执行
AI:[run_api_plan + confirm_token] → record_id,异步执行中
写操作 AI 必须先 preview;你口头 confirm 后才会带 token 执行。
六、安全:preview + confirm
写操作(跑计划、触发 AI 生成等)三阶段:
- preview 返回 影响范围 和 5 分钟有效 的
confirm_token - token 在 Redis 一次性消费,用后即废
- 只读查询(列项目、读报告)无 confirm
- MCP API Key 等同 API Token:HTTPS、定期轮换、RBAC
生产环境建议:内网/VPN 暴露 MCP;公网时在 Nginx 对 /brickcore/agent-hub/ 做 IP 白名单。
七、MCP vs 平台内「小测」助手
| 平台内助手「小测」 | 外部 MCP(Kimi Code) | |
|---|---|---|
| 入口 | 网页右下角 | Kimi Code / Cursor |
| 用户 | 测试在浏览器 | 测开 / 开发在 CLI |
| 场景 | 查失败、轻量触发 | 编码时顺带跑回归 |
| 协议 | 平台内部 | 标准 MCP HTTP |
两者互补:浏览器里用 小测 ,终端/IDE 里用 Kimi Code + MCP。
八、与「UI Agent MCP 思路」区别
- 外部 MCP Server (本文):Kimi Code 操控整个测试平台
- UI 录制 Agent :平台 内 用 MCP 思路驱动浏览器录步骤
名字都带 MCP,方向相反,文档别混。
九、排错
| 现象 | 处理 |
|---|---|
| 401 / authenticated: false | Key 错误;或 Authorization 误写在 env 而非 headers |
| Connection failed 但后端 200 | Windows 上 Kimi Code 偶发显示编码问题,对话能返回数据可忽略红字 |
| 连接 refused | 地址/port、Nginx 反代、防火墙 |
| 工具列表空 | MCP 未启用或未保存配置 |
| 执行无权限 | 平台账号 RBAC |
| Nginx 404 | 需反代 /brickcore/agent-hub/ 到 backend:8000,不只 /api |
十、其他客户端(Cursor / Claude Desktop)
步骤与 Kimi Code 相同:在 首页看板 MCP 卡片 一键复制 JSON,粘贴到客户端 mcpServers 配置。
Cursor 示例:
json
{
"mcpServers": {
"brickcore": {
"url": "http://your-server:8000/brickcore/agent-hub/",
"headers": {
"Authorization": "Bearer 你的MCP_API_KEY"
}
}
}
}
Claude Desktop(Windows):%APPDATA%\Claude\claude_desktop_config.json
十一、小结
- MCP = AI 客户端与测试平台之间的标准工具协议。
- Kimi Code + HTTP headers 是国内测开接入 BrickCore 的常用方式。
- 适合 CLI/IDE 里边写代码边查失败、preview 后触发回归。
- 写操作必须 confirm,API Key 当密钥管。
- 与网页助手「小测」并存,按场景选入口。
附录 A:源码文件索引(进阶读码)
backend/app/mcp/
├── server.py # /brickcore/agent-hub/ 挂载、_register
├── tools.py # 各 tool_* 实现
├── auth.py # Bearer MCP_API_KEY
└── schemas.py
| 写操作 | preview 工具 | 执行工具 |
|---|---|---|
| 跑 API 计划 | preview_run_api_plan |
run_api_plan |
| 跑 UI 计划 | preview_run_ui_task |
run_ui_task |
| 需求用例生成 | preview_trigger_generate |
trigger_generate |
Nginx :nginx-docker.conf 需把 /brickcore/agent-hub/ 反代到 backend:8000。
支持与交流
- 演示:http://43.142.83.156/showcase/ · 源码:https://gitee.com/BanZhuanKeOrz/BrickCore
- 觉得有用欢迎 Star ⭐,问题评论区留言或 Gitee Issues