2024 年底 Anthropic 发布了 MCP 规范,这个词在 2025 年逐渐火了起来。但笔者看了一圈市面上的文章,要么在讲"什么是 MCP"这种概念科普,要么是"5 分钟搭建 MCP Server"的通用教程。面向测试人员、告诉你"这东西能帮我解决什么测试问题"的文章,少之又少。
笔者在日常测试工作中一直在琢磨:MCP 能不能直接拿来提升测试效率?于是花了些时间研究,找到了几个现成的工具,也自己动手搭了一个。这里把学习成果分享出来,供大家参考。
这篇不打算讲概念,直接上干货:三个现成的 MCP 工具,配置完就能用;再带你用 Python 搭一个自己的测试 MCP Server 框架;最后把 Skill 跟 MCP 的关系说清楚。
微软出的 MCP Server,让你用自然语言操控浏览器。笔者体验下来,最亮眼的是三个 Agent:
Planner Agent:自动探索你的应用,输出测试计划(Markdown 格式),省去了人工梳理测试场景的步骤。
Generator Agent:把测试计划转成可执行的 Playwright 测试代码,从计划到脚本一步到位。
Healer Agent:测试挂了自动修,定位器更新、等待调整都不需要你手动改。这个功能笔者觉得最实用,写过 UI 自动化的人都知道,定位器动不动就失效,改到头疼。
配置方式(三种任选):
- VS Code:settings.json 加一行
- Cursor:Settings → MCP → Add
- Claude Code:
claude mcp add playwright npx @playwright/mcp@latest

PyPI 上的包,6.9K 下载量。从 Swagger 到测试报告,全自动。这个工具封装了 10 个工具,形成了一条完整的工作流:
ingest_spec(加载 API 文档)
→ set_env_vars(配置认证)
→ generate_scenarios(生成场景)
→ generate_test_cases(生成代码)
→ run_api_tests(执行测试)
→ run_load_tests(还能跑负载)
配置方式很简单,在 MCP 配置文件中加上:
{
"mcpServers": {
"api-tester": {
"command": "npx",
"args": ["@kirti676/api-tester-mcp@latest"]
}
}
}
笔者拿 Petstore 的 Swagger 文档试了一下,从加载文档到生成 HTML 测试报告,全程没写一行代码。接口测试用这个确实省事。

一行命令把 OpenAPI/Swagger 文档变成 AI 可直接调用的工具:
mcp-swagger-server --openapi https://api.example.com/openapi.json
这个工具有个有意思的用法,可以用来测试你的 API 文档质量。因为很多文档结构有问题,一转换就暴露了。笔者之前遇到过一个项目,Swagger 文档看着挺规范,结果一跑 mcp-swagger-server,直接报了三个 schema 错误。所以它不光能让 AI 调用你的 API,还能顺便帮你检查文档质量。

| 工具 | 适合场景 | 安装复杂度 | 关键亮点 |
|---|---|---|---|
| Playwright MCP | UI 自动化 | ★☆☆☆☆ | Healer 自动修测试 |
| api-tester-mcp | 接口测试 | ★☆☆☆☆ | Swagger→报告全自动 |
| mcp-swagger-server | API 文档活用 | ★☆☆☆☆ | 一行命令 |
现成的工具固然好,但总有场景需要定制。一是你的公司用内部测试平台,没有公开 API;二是你想把一些运维脚本、数据查询封装成 AI 能调用的工具;三是你想搞清楚 MCP 到底是怎么工作的。笔者自己搭了一个之后,才真正理解了 MCP 的运行机制,这个认知上的收获比工具本身更有价值。
场景:让 AI 帮你查当前迭代的测试统计数据。
输入:自然语言"当前迭代的测试情况怎么样?"
输出:AI 自动调用 MCP 工具查询数据并返回结果。
这个场景很常见,每天站会前都要查测试状态,手动查费时费力,交给 AI 一句话搞定。
下面是一个可运行的 MCP Server 框架。函数体里是示例数据,你需要替换成自己实际的查询逻辑(比如对接 JIRA API、禅道 API、内部测试平台等),但框架本身是完整的,跑起来就能被 AI 调用。
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Test Stats")
@mcp.tool()
def get_test_stats(sprint: str) -> str:
"""获取指定迭代的测试统计数据,包括用例执行情况和缺陷分布"""
# 替换成你实际的查询逻辑,比如调用 JIRA/禅道 API
import requests
# resp = requests.get(f"https://your-jira/api/sprint/{sprint}/stats",
# headers={"Authorization": "Bearer xxx"})
# data = resp.json()
# 下面是示例数据,实际使用时替换为上面的查询结果
return f"{sprint} 迭代:用例通过 156 个,失败 8 个,关闭率 95.1%"
@mcp.tool()
def get_recent_failures(days: int = 7) -> str:
"""获取最近N天测试失败的用例列表及失败原因"""
# 同理,替换成你实际的查询逻辑
return f"最近 {days} 天共有 15 个用例失败,其中 12 个已确认修复,3 个待排查"
if __name__ == "__main__":
mcp.run()
几个关键点说一下:
FastMCP 是 Python SDK 的简易封装,几行就能起一个 Server,不需要从零搭建通信层。
@mcp.tool() 装饰器把函数变成 AI 可调用的工具,不需要额外写接口定义。
函数的参数和 docstring 会被自动解析为 AI 理解的工具描述,所以 docstring 一定要写清楚,AI 靠它来决定什么时候调用这个工具。
{
"mcpServers": {
"test-stats": {
"command": "python",
"args": ["path/to/your/server.py"]
}
}
}
配置完直接问 AI:"当前迭代测试情况怎么样?"AI 会自动调用 get_test_stats 工具,不需要你写任何胶水代码。笔者第一次跑通的时候,确实有种"原来就这么简单"的感觉。
搭通一个之后,能封装的东西就多了:
封装性能测试结果查询:get_perf_report(test_id),跑完压测不用再去 Grafana 翻面板,直接问 AI。
封装 CI 流水线状态:check_pipeline_status(pipeline_name),不用切到 Jenkins/GitLab CI 看构建状态了。
封装测试环境状态:get_env_status(env_name),环境挂了 AI 直接告诉你,不用等开发反馈。
很多人问 MCP 和 Skill 的区别,这里统一说明。
一个类比:MCP 是螺丝刀,Skill 是安装说明书。螺丝刀管"能不能做",安装说明书管"怎么做"。
| MCP | Skill | |
|---|---|---|
| 本质 | 通信协议 | 行为指令 |
| 定义 | 工具的输入/输出格式 | 怎么做任务的步骤 |
| 例子 | api-tester-mcp 暴露了 10 个工具 | "先读 Swagger,再生成代码,再执行" |
| 复用范围 | 任何 MCP 客户端 | Claude Code / Cursor 等特定工具 |
MCP 给 AI 提供了"能做什么",Skill 告诉 AI"应该怎么做"。两者结合才是完整的测试自动化方案。
至于怎么用 Skill 把测试流程标准化、怎么保证 Skill 的质量,那是下一期的内容了。
这篇给了三个现成的 MCP 工具,Playwright MCP 测 UI、api-tester-mcp 测接口、mcp-swagger-server 活用 API 文档,配置完就能上手。然后带各位了解了如何搭建 MCP Server 的框架,代码量不大,核心是搞清楚 @mcp.tool() 装饰器和 docstring 的作用,替换成你自己的查询逻辑就能用。笔者希望各位读完之后能真正动手跑一下,光看不练等于没看。最后把 MCP 和 Skill 的区别理清了,MCP 是工具协议,Skill 是行为指令,别再混为一谈。
下期预告:Skill 深度实战——如何把一套测试流程封装成可复用的 Skill。
君子性非异也,善假于物也。