项目简介
Test Runner MCP 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在为 LLM 应用提供统一的测试执行和结果解析能力。它支持多种流行的测试框架,包括 Bats, Pytest, Flutter, Jest 和 Go,允许 LLM 客户端通过标准化的 MCP 协议调用和管理测试任务。
主要功能点
- 统一测试接口: 提供 'run_tests' 工具,LLM 客户端可以使用相同的接口运行不同框架的测试。
- 多框架支持: 支持 Bats, Pytest, Flutter, Jest, Go 等多种测试框架。
- 结构化输出: 解析各种测试框架的输出,提供结构化的 JSON 结果,方便 LLM 理解和处理测试结果。
- 详细日志: 保存原始测试输出和错误日志,方便问题排查。
- 灵活配置: 允许配置测试命令、工作目录、超时时间和环境变量。
- Flutter 增强支持: 针对 Flutter 测试进行了特殊优化,包括环境配置、错误处理和详细输出处理。
安装步骤
- 克隆仓库 (如果需要修改或开发,本项目本身是npm包,客户端无需克隆此仓库)
- 安装 npm 包 (对于希望直接使用该 MCP 服务器的用户,通常是安装到 MCP 客户端环境,例如 Claude 客户端):
npm install test-runner-mcp - 安装测试框架 (根据需要测试的框架,安装相应的测试工具,确保这些工具在运行 MCP 服务器的环境中可用):
- Bats: 'apt-get install bats' 或 'brew install bats'
- Pytest: 'pip install pytest'
- Flutter: 参考 Flutter 安装指南
- Jest: 'npm install --save-dev jest'
- Go: 参考 Go 安装指南
服务器配置
要将 Test Runner MCP 服务器添加到 MCP 客户端配置中,您需要配置 'mcpServers' 部分。以下是一个示例配置,通常在 'claude_desktop_config.json' 或 'cline_mcp_settings.json' 文件中配置:
{ "mcpServers": { "test-runner": { // 服务器名称,客户端用此名称引用 "command": "node", // 启动服务器的命令,这里使用 node 运行 JavaScript 文件 "args": ["/path/to/test-runner-mcp/build/index.js"], // 启动命令的参数,指向编译后的 index.js 文件路径 "env": { // 环境变量配置 (可选) "NODE_PATH": "/path/to/test-runner-mcp/node_modules" // Node.js 模块路径 (如果需要) // "FLUTTER_ROOT": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter", // Flutter 根目录 (如果需要 Flutter 测试) // "PUB_CACHE": "/Users/username/.pub-cache", // Pub 缓存路径 (如果需要 Flutter 测试) // "PATH": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter/bin:/usr/local/bin:/usr/bin:/bin" // 包含 Flutter 命令的 PATH (如果需要 Flutter 测试) } } } }
注意:
- 请将 '/path/to/test-runner-mcp' 替换为 'test-runner-mcp' 包的实际安装路径。通常,如果您全局安装了 'test-runner-mcp',可以尝试使用 'which test-runner-mcp' 或 'where test-runner-mcp' 查找安装路径,然后根据相对路径调整 'args' 中的路径。如果是在项目内部安装,则路径可能类似于 './node_modules/test-runner-mcp/build/index.js'。
- 如果您需要运行 Flutter 测试,请根据您的 Flutter 安装路径配置 'FLUTTER_ROOT', 'PUB_CACHE' 和 'PATH' 环境变量。您可以使用 'flutter --version', 'echo $PUB_CACHE', 'which flutter' 命令获取这些值。
基本使用方法
配置完成后,LLM 客户端可以通过 MCP 协议调用 'run_tests' 工具来执行测试。以下是一个调用示例 (JSON 格式,通常由 MCP 客户端自动构建和发送):
{ "tool_call": { "name": "run_tests", "arguments": { "command": "pytest test_file.py -v", // 要执行的测试命令,例如 "pytest test_file.py -v" 或 "bats test/*.bats" "workingDir": "/path/to/your/project", // 测试项目的工作目录 "framework": "pytest", // 使用的测试框架,可选值: "bats", "pytest", "flutter", "jest", "go" "outputDir": "test_reports", // (可选) 测试结果输出目录,默认为 "test_reports" "timeout": 600000, // (可选) 测试执行超时时间,单位毫秒,默认为 300000 (5分钟) "env": { // (可选) 额外的环境变量 // "CUSTOM_VAR": "custom_value" } } } }
参数说明:
- 'command': 要执行的测试命令,根据不同的测试框架和项目进行调整。
- 'workingDir': 测试项目所在的绝对路径。
- 'framework': 指定测试框架,必须是 "bats", "pytest", "flutter", "jest", "go" 之一。
- 'outputDir' (可选): 用于存放测试结果文件的目录名,相对于 'workingDir'。
- 'timeout' (可选): 测试执行的最大时长,单位毫秒。
- 'env' (可选): 额外的环境变量,用于传递测试所需的配置信息。
LLM 客户端发送上述请求后,Test Runner MCP 服务器将执行指定的测试命令,解析测试结果,并将结果以文本形式返回给客户端。详细的测试报告 (JSON, 日志文件等) 将保存在 'workingDir' 下的 'outputDir' 目录中。
信息
分类
开发者工具