
Test Runner MCP
通过模型上下文协议接口,促进对各种测试框架(包括 Bats、Pytest、Flutter、Jest 和 Go)的统一执行和结果解析。
Tools
run_tests
Run tests and capture output
README
测试运行器 MCP
一个模型上下文协议 (MCP) 服务器,用于运行和解析来自多个测试框架的测试结果。该服务器提供了一个统一的接口来执行测试和处理它们的输出,支持:
- Bats (Bash 自动化测试系统)
- Pytest (Python 测试框架)
- Flutter 测试
- Jest (JavaScript 测试框架)
- Go 测试
- Rust 测试 (Cargo test)
- Generic (用于任意命令执行)
安装
npm install test-runner-mcp
前提条件
需要安装以下测试框架以支持各自的测试类型:
- Bats:
apt-get install bats
或brew install bats
- Pytest:
pip install pytest
- Flutter: 遵循 Flutter 安装指南
- Jest:
npm install --save-dev jest
- Go: 遵循 Go 安装指南
- Rust: 遵循 Rust 安装指南
用法
配置
将 test-runner 添加到您的 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 缓存路径- 更新 PATH 以包含您系统实际的路径
您可以通过运行以下命令找到这些值:
# 获取 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"
}
// Generic (用于任意命令,CI/CD 工具等)
{
"command": "act -j build",
"workingDir": "/path/to/project",
"framework": "generic",
"outputDir": "test_reports"
}
// Generic with security overrides
{
"command": "sudo docker-compose -f docker-compose.test.yml up",
"workingDir": "/path/to/project",
"framework": "generic",
"outputDir": "test_reports",
"securityOptions": {
"allowSudo": true
}
}
安全特性
测试运行器包含内置的安全特性,以防止执行潜在的有害命令,特别是对于 generic
框架:
-
命令验证
- 默认阻止
sudo
和su
- 阻止危险命令,例如
rm -rf /
- 阻止在安全位置之外的文件系统写入操作
- 默认阻止
-
环境变量清理
- 过滤掉潜在的危险环境变量
- 防止覆盖关键的系统变量
- 确保安全的路径处理
-
可配置的安全性
- 必要时通过
securityOptions
覆盖安全限制 - 对安全特性进行细粒度控制
- 默认的安全设置用于标准测试
- 必要时通过
您可以配置的安全选项:
{
"securityOptions": {
"allowSudo": false, // 允许 sudo 命令
"allowSu": false, // 允许 su 命令
"allowShellExpansion": true, // 允许 shell 扩展,例如 $() 或反引号
"allowPipeToFile": false // 允许管道到文件操作 (> 或 >>)
}
}
Flutter 测试支持
测试运行器包含对 Flutter 测试的增强支持:
-
环境设置
- 自动 Flutter 环境配置
- PATH 和 PUB_CACHE 设置
- Flutter 安装验证
-
错误处理
- 堆栈跟踪收集
- 断言错误处理
- 异常捕获
- 测试失败检测
-
输出处理
- 完整的测试输出捕获
- 堆栈跟踪保留
- 详细的错误报告
- 原始输出保留
Rust 测试支持
测试运行器为 Rust 的 cargo test
提供特定支持:
-
环境设置
- 自动设置 RUST_BACKTRACE=1 以获得更好的错误消息
-
输出解析
- 解析单个测试结果
- 捕获失败测试的详细错误消息
- 识别被忽略的测试
- 提取摘要信息
Generic 测试支持
对于 CI/CD 管道,通过 act
的 GitHub Actions 或任何其他命令执行,generic 框架提供:
-
自动输出分析
- 尝试将输出分割成逻辑块
- 识别节标题
- 检测通过/失败指示器
- 即使对于未知格式,也提供合理的输出结构
-
灵活的集成
- 适用于任意 shell 命令
- 没有特定的格式要求
- 非常适合与
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
测试套件包括对所有支持的框架的测试,并验证成功和失败的测试场景。
CI/CD
该项目使用 GitHub Actions 进行持续集成:
- 在 Node.js 18.x 和 20.x 上进行自动化测试
- 测试结果作为工件上传
- Dependabot 配置为自动依赖项更新
贡献
- Fork 存储库
- 创建您的功能分支
- 提交您的更改
- 推送到分支
- 创建一个 Pull Request
许可证
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。