这是一个用于运行并解析来自多个测试框架的测试结果的模型上下文协议(MCP)服务器。该服务器提供了一个统一的接口来执行测试并处理其输出,支持以下测试框架:
<a href="https://glama.ai/mcp/servers/q001c11ec3"><img width="380" height="200" src="https://gips3.baidu.com/it/u=2393252675,242487780&fm=3081&app=3081&f=PNG?w=760&h=400" alt="测试执行器 MCP 服务器" /></a>
npm install test-runner-mcp
需要安装以下测试框架以支持各自的测试类型:
apt-get install bats 或 brew install batspip install pytestnpm install --save-dev jest在您的 MCP 设置中添加测试执行器(例如,在 claude_desktop_config.json 或 cline_mcp_settings.json 中):
{
"mcpServers": {
"test-runner": {
"command": "node",
"args": ["/path/to/test-runner-mcp/build/index.js"],
"env": {
"NODE_PATH": "/path/to/test-runner-mcp/node_modules",
// 与 Flutter 相关的环境变量(用于 Flutter 测试)
"FLUTTER_ROOT": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter",
"PUB_CACHE": "/Users/username/.pub-cache",
"PATH": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter/bin:/usr/local/bin:/usr/bin:/bin"
}
}
}
}
注意:对于 Flutter 测试,请确保替换以下内容:
/opt/homebrew/Caskroom/flutter/3.27.2/flutter 为您实际的 Flutter 安装路径/Users/username/.pub-cache 为您实际的 pub 缓存路径您可以通过运行以下命令找到这些值:
# 获取 Flutter 根目录
flutter --version
# 获取 pub 缓存路径
echo $PUB_CACHE # 或默认为 $HOME/.pub-cache
# 获取 Flutter 二进制路径
which flutter
使用 run_tests 工具,并传入以下参数:
{
"command": "要执行的测试命令",
"workingDir": "测试执行的工作目录",
"framework": "bats|pytest|flutter|jest|go|rust|generic",
"outputDir": "测试结果存放的目录",
"timeout": "测试执行超时时间(毫秒,默认:300000)",
"env": "可选的环境变量",
"securityOptions": "可选的安全选项,用于命令执行"
}
每个框架的示例:
// Bats
{
"command": "bats test/*.bats",
"workingDir": "/path/to/project",
"framework": "bats",
"outputDir": "test_reports"
}
// Pytest
{
"command": "pytest test_file.py -v",
"workingDir": "/path/to/project",
"framework": "pytest",
"outputDir": "test_reports"
}
// Flutter
{
"command": "flutter test test/widget_test.dart",
"workingDir": "/path/to/project",
"framework": "flutter",
"outputDir": "test_reports",
"FLUTTER_ROOT": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter",
"PUB_CACHE": "/Users/username/.pub-cache",
"PATH": "/opt/homebrew/Caskroom/flutter/3.27.2/flutter/bin:/usr/local/bin:/usr/bin:/bin"
}
// Jest
{
"command": "jest test/*.test.js",
"workingDir": "/path/to/project",
"framework": "jest",
"outputDir": "test_reports"
}
// Go
{
"command": "go test ./...",
"workingDir": "/path/to/project",
"framework": "go",
"outputDir": "test_reports"
}
// Rust
{
"command": "cargo test",
"workingDir": "/path/to/project",
"framework": "rust",
"outputDir": "test_reports"
}
// 通用(任意命令,CI/CD 工具等)
{
"command": "act -j build",
"workingDir": "/path/to/project",
"framework": "generic",
"outputDir": "test_reports"
}
// 带安全覆盖的通用
{
"command": "sudo docker-compose -f docker-compose.test.yml up",
"workingDir": "/path/to/project",
"framework": "generic",
"outputDir": "test_reports",
"securityOptions": {
"allowSudo": true
}
}
测试执行器内置了防止执行潜在有害命令的安全特性,特别是针对 generic 框架:
命令验证
sudo 和 surm -rf /环境变量净化
可配置的安全性
securityOptions 覆盖安全限制可以配置的安全选项:
{
"securityOptions": {
"allowSudo": false, // 允许 sudo 命令
"allowSu": false, // 允许 su 命令
"allowShellExpansion": true, // 允许 shell 扩展如 $() 或反引号
"allowPipeToFile": false // 允许管道到文件操作 (> 或 >>)
}
}
测试执行器包括增强的 Flutter 测试支持:
环境设置
错误处理
输出处理
测试执行器提供了对 Rust 的 cargo test 的特定支持:
环境设置
输出解析
对于 CI/CD 管道,GitHub Actions 通过 act,或任何其他命令执行,通用框架提供:
自动输出分析
灵活集成
act、Docker 和自定义脚本集成安全特性
测试执行器生成结构化的输出,同时保留完整的测试输出:
interface TestResult {
name: string;
passed: boolean;
output: string[];
rawOutput?: string; // 完整未处理的输出
}
interface TestSummary {
total: number;
passed: number;
failed: number;
duration?: number;
}
interface ParsedResults {
framework: string;
tests: TestResult[];
summary: TestSummary;
rawOutput: string; // 完整命令输出
}
结果保存在指定的输出目录中:
test_output.log:原始测试输出test_errors.log:如果有错误消息test_results.json:结构化的测试结果summary.txt:人类可读的摘要npm install
npm run build
npm test
测试套件包括对所有支持框架的测试,并验证成功和失败的测试场景。
该项目使用 GitHub Actions 进行持续集成:
此项目根据 MIT 许可证发布 - 详情请参见LICENSE文件。