返回市场
MCP测试服务器

MCP测试服务器

作者:ElaMCB2 星标更新:2025-10-29

项目介绍

MCP 测试服务器

用于软件测试工具和质量保证的模型上下文协议(MCP)服务器集合

MCP 协议 MIT 许可证 Node.js CI

启用 MCP 原生IDE中的代理测试,如Cursor和GitHub Codespaces。将您的AI助手转变为智能测试代理,能够自主创建、执行和维护测试。

什么是MCP测试服务器?

MCP服务器连接AI代理与测试工具。无需手动编写测试脚本,您的AI助手可以:

  • 实时执行Playwright测试
  • 根据应用程序状态生成测试用例
  • 通过检查DOM和日志调试失败
  • 从测试结果直接在Jira/ADO中提交错误
  • 当UI更改破坏选择器时自我修复测试

阅读我们的MCP在软件测试中的研究论文

快速开始

先决条件

  • Node.js 16+
  • 一个MCP原生IDE(Cursor、Codespaces或兼容)
  • 安装测试框架(Playwright、Selenium等)

安装

# 克隆仓库
git clone https://github.com/ElaMCB/mcp-testing-servers.git
cd mcp-testing-servers

# 安装依赖
npm install

# 安装Playwright(用于Playwright MCP服务器)
npm install playwright

在IDE中配置

对于Cursor:

  1. 打开设置 → MCP服务器
  2. 添加新的服务器配置
  3. Playwright服务器示例:
{
  "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"]
    }
  }
}

可用的MCP服务器

Playwright服务器

目的: 浏览器自动化和端到端测试

工具:

  • launch_browser(url) - 启动浏览器并导航至URL
  • get_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服务器

目的: 跨浏览器Selenium自动化

工具:

  • create_driver(browser) - 创建WebDriver实例
  • navigate_to(url) - 导航至URL
  • find_elements(selector) - 查找页面元素
  • execute_script(js_code) - 在浏览器上下文中运行JavaScript

Jira服务器

目的: 自主错误报告和问题管理

工具:

  • 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"

Azure DevOps (ADO)服务器

目的: 工作项管理和构建集成

工具:

  • 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服务器

目的: Cypress端到端测试集成

工具:

  • run_cypress_test(spec_file) - 执行Cypress测试
  • open_cypress() - 打开Cypress测试运行器
  • get_cypress_results() - 获取最新的测试运行结果

API测试服务器

目的: REST API测试和验证

工具:

  • make_api_request(method, url, headers, body) - 执行API调用
  • validate_api_response(response, schema) - 验证JSON模式
  • run_api_test_suite(suite_file) - 运行API测试套件

代理测试工作流

模式1:上下文测试生成

您IDE中的AI代理现在可以:

  1. 检测代码更改 通过MCP文件系统资源
  2. 分析相关的测试文件 以理解模式
  3. 探索应用程序UI 使用Playwright MCP服务器
  4. 直接生成测试 到您的项目中
  5. 自动执行和验证

示例提示:

"为我刚刚添加到login.js的新登录功能写一个测试"

该代理将:

  • 读取login.js以了解功能
  • 检查项目中的现有测试模式
  • 启动浏览器并探索登录UI
  • 生成上下文相关的Playwright测试
  • 将其写入正确的测试文件

模式2:自主回归测试

"运行回归套件,并为任何失败提交错误"

该代理将:

  1. 执行所有Playwright测试
  2. 在失败时:捕获屏幕截图,检查DOM,查看日志
  3. 在Jira中搜索重复的问题
  4. 创建带有详细重现步骤的新错误
  5. 如果选择器更改,则更新测试代码(自我修复)

模式3:智能测试维护

"审核我的测试套件并修复任何损坏的测试"

该代理将:

  1. 分析测试文件中的不稳定测试和过时的选择器
  2. 验证选择器是否符合当前应用程序状态
  3. 自动重构或删除过时的测试
  4. 提交改进的PR

架构

┌─────────────────────────────────────────────────────────┐
│         MCP原生IDE(Cursor、Codespaces等)                │
│  ┌───────────────────────────────────────────────────┐  │
│  │         AI代理(原生MCP客户端)                       │  │
│  │                                                    │  │
│  │  ┌──────────┐  ┌──────────┐  ┌──────────┐         │  │
│  │  │ Playwright│  │  Jira    │  │   ADO    │         │  │
│  │  │MCP服务器  │  │MCP服务器 │  │MCP服务器 │  ...    │  │
│  │  └──────────┘  └──────────┘  └──────────┘         │  │
│  │       │            │            │                   │  │
│  │       └────────────┴────────────┘                   │  │
│  │              (原生MCP协议)                        │  │
│  └───────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────┘

使用示例

基本Playwright工作流

// 您的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: '高'
  });
}

安全最佳实践

  1. 凭据管理:

    • 不要提交API密钥或令牌
    • 使用环境变量或IDE秘密
    • 定期轮换凭据
  2. 权限范围:

    • 为MCP服务器授予最低必需权限
    • 当可能时使用只读凭据
    • 审计MCP工具使用日志
  3. 网络安全:

    • 在开发中将MCP服务器运行在localhost上
    • 对远程MCP服务器使用TLS
    • 在CI/CD中限制网络访问
  4. 测试数据隔离:

    • 使用单独的测试环境
    • 测试运行后清理测试数据
    • 从不访问生产数据

测试服务器

# 运行所有服务器测试
npm test

# 测试特定服务器
npm test -- playwright
npm test -- jira
npm test -- azure-devops

# 带覆盖率运行
npm run test:coverage

文档

贡献

我们欢迎贡献!这是代理测试的基础架构。

  1. 分叉仓库
  2. 创建特性分支(git checkout -b feature/new-mcp-server
  3. 按照现有模式实现您的MCP服务器
  4. 添加测试和文档
  5. 提交拉取请求

添加新的MCP服务器

  1. 创建目录:servers/your-server/
  2. 按照MCP协议实现服务器
  3. 导出ToolsMCPServer
  4. servers/your-server/__tests__/中添加测试
  5. 在README中记录工具

路线图

  • Playwright MCP服务器
  • Jira MCP服务器
  • Azure DevOps MCP服务器
  • Selenium MCP服务器
  • Cypress MCP服务器
  • API测试MCP服务器
  • 测试结果聚合服务器
  • 性能测试服务器
  • 安全扫描服务器
  • 数据库测试服务器

📄 许可证

MIT许可证 - 详情见LICENSE文件。

作者

Ela MCB - AI优先的质量工程师

致谢


将您的IDE转变为智能测试代理。

适用于代理测试的时代。