用于软件测试工具和质量保证的模型上下文协议(MCP)服务器集合
启用 MCP 原生IDE中的代理测试,如Cursor和GitHub Codespaces。将您的AI助手转变为智能测试代理,能够自主创建、执行和维护测试。
MCP服务器连接AI代理与测试工具。无需手动编写测试脚本,您的AI助手可以:
阅读我们的MCP在软件测试中的研究论文。
# 克隆仓库
git clone https://github.com/ElaMCB/mcp-testing-servers.git
cd mcp-testing-servers
# 安装依赖
npm install
# 安装Playwright(用于Playwright MCP服务器)
npm install playwright
对于Cursor:
{
"mcpServers": {
"playwright": {
"command": "node",
"args": ["./servers/playwright/server.js"],
"env": {
"PLAYWRIGHT_BROWSERS_PATH": "0"
}
}
}
}
对于GitHub Codespaces:
添加到.vscode/settings.json:
{
"mcp.servers": {
"playwright": {
"command": "node",
"args": ["./servers/playwright/server.js"]
}
}
}
目的: 浏览器自动化和端到端测试
工具:
launch_browser(url) - 启动浏览器并导航至URLget_page_content(session_id) - 获取当前页面DOM和状态perform_action(session_id, action, selector) - 点击、填写、选择元素execute_test_script(session_id, code) - 在实时环境中运行Playwright代码capture_screenshot(session_id) - 捕获屏幕截图以供调试run_test_file(file_path) - 执行Playwright测试文件示例用法:
// 您的AI代理现在可以:
// 1. 启动浏览器:launch_browser("https://app.example.com")
// 2. 检查页面:get_page_content(session_id)
// 3. 执行操作:perform_action(session_id, "click", "#login-button")
// 4. 根据实际UI结构生成测试
目的: 跨浏览器Selenium自动化
工具:
create_driver(browser) - 创建WebDriver实例navigate_to(url) - 导航至URLfind_elements(selector) - 查找页面元素execute_script(js_code) - 在浏览器上下文中运行JavaScript目的: 自主错误报告和问题管理
工具:
create_issue(title, description, type) - 创建Jira问题search_issues(jql_query) - 使用JQL搜索add_comment(issue_key, comment) - 向问题添加评论link_issues(issue_key_1, issue_key_2) - 链接相关问题update_issue(issue_key, fields) - 更新问题字段设置:
export JIRA_URL="https://your-org.atlassian.net"
export JIRA_EMAIL="your-email@example.com"
export JIRA_API_TOKEN="your-api-token"
目的: 工作项管理和构建集成
工具:
create_bug(title, description, project) - 创建bug工作项get_test_runs(project_id) - 获取测试运行结果get_latest_build(definition_id) - 获取最新构建状态link_work_items(work_item_id_1, work_item_id_2) - 链接工作项update_work_item(id, fields) - 更新工作项字段设置:
export AZURE_DEVOPS_ORG="your-org"
export AZURE_DEVOPS_PROJECT="your-project"
export AZURE_DEVOPS_PAT="your-personal-access-token"
目的: 汇总和分析测试执行结果
工具:
get_test_results(suite, time_range) - 获取测试结果analyze_test_coverage(coverage_file) - 分析代码覆盖率compare_test_runs(run_id_1, run_id_2) - 比较两个测试运行get_failing_tests(suite) - 列出当前失败的测试目的: Cypress端到端测试集成
工具:
run_cypress_test(spec_file) - 执行Cypress测试open_cypress() - 打开Cypress测试运行器get_cypress_results() - 获取最新的测试运行结果目的: REST API测试和验证
工具:
make_api_request(method, url, headers, body) - 执行API调用validate_api_response(response, schema) - 验证JSON模式run_api_test_suite(suite_file) - 运行API测试套件您IDE中的AI代理现在可以:
示例提示:
"为我刚刚添加到login.js的新登录功能写一个测试"
该代理将:
login.js以了解功能"运行回归套件,并为任何失败提交错误"
该代理将:
"审核我的测试套件并修复任何损坏的测试"
该代理将:
┌─────────────────────────────────────────────────────────┐
│ MCP原生IDE(Cursor、Codespaces等) │
│ ┌───────────────────────────────────────────────────┐ │
│ │ AI代理(原生MCP客户端) │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Playwright│ │ Jira │ │ ADO │ │ │
│ │ │MCP服务器 │ │MCP服务器 │ │MCP服务器 │ ... │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ │ │ │ │ │ │
│ │ └────────────┴────────────┘ │ │
│ │ (原生MCP协议) │ │
│ └───────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
// 您的AI代理会自动使用这些工具,但这里展示了发生了什么:
// 1. 启动浏览器
const session = await mcp.callTool('playwright', 'launch_browser', {
url: 'https://app.example.com'
});
// 2. 获取页面内容
const content = await mcp.callTool('playwright', 'get_page_content', {
session_id: session.id
});
// 3. 执行操作
await m
mcp.callTool('playwright', 'perform_action', {
session_id: session.id,
action: 'fill',
selector: '#email',
value: 'user@example.com'
});
// 4. 捕获证据
const screenshot = await mcp.callTool('playwright', 'capture_screenshot', {
session_id: session.id
});
// 测试失败后,代理会自动:
// 1. 捕获失败证据
const screenshot = await playwright.capture_screenshot();
const pageState = await playwright.get_page_content();
// 2. 检查重复项
const duplicates = await jira.search_issues(
`summary ~ "登录按钮不可点击" AND status != Closed`
);
// 3. 如果没有重复项则创建错误
if (duplicates.length === 0) {
await jira.create_issue({
title: '登录页面上的登录按钮不可点击',
description: `测试在${new Date()}失败\n\n截图:${screenshot}\n\n页面状态:${JSON.stringify(pageState)}`,
type: 'Bug',
priority: '高'
});
}
凭据管理:
权限范围:
网络安全:
测试数据隔离:
# 运行所有服务器测试
npm test
# 测试特定服务器
npm test -- playwright
npm test -- jira
npm test -- azure-devops
# 带覆盖率运行
npm run test:coverage
我们欢迎贡献!这是代理测试的基础架构。
git checkout -b feature/new-mcp-server)servers/your-server/ToolsMCPServer类servers/your-server/__tests__/中添加测试MIT许可证 - 详情见LICENSE文件。
Ela MCB - AI优先的质量工程师
将您的IDE转变为智能测试代理。
适用于代理测试的时代。