Test Runner MCP

Test Runner MCP

通过模型上下文协议接口,促进对各种测试框架(包括 Bats、Pytest、Flutter、Jest 和 Go)的统一执行和结果解析。

Category
访问服务器

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

前提条件

需要安装以下测试框架以支持各自的测试类型:

用法

配置

将 test-runner 添加到您的 MCP 设置中 (例如,在 claude_desktop_config.jsoncline_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 框架:

  1. 命令验证

    • 默认阻止 sudosu
    • 阻止危险命令,例如 rm -rf /
    • 阻止在安全位置之外的文件系统写入操作
  2. 环境变量清理

    • 过滤掉潜在的危险环境变量
    • 防止覆盖关键的系统变量
    • 确保安全的路径处理
  3. 可配置的安全性

    • 必要时通过 securityOptions 覆盖安全限制
    • 对安全特性进行细粒度控制
    • 默认的安全设置用于标准测试

您可以配置的安全选项:

{
  "securityOptions": {
    "allowSudo": false,        // 允许 sudo 命令
    "allowSu": false,          // 允许 su 命令
    "allowShellExpansion": true, // 允许 shell 扩展,例如 $() 或反引号
    "allowPipeToFile": false   // 允许管道到文件操作 (> 或 >>)
  }
}

Flutter 测试支持

测试运行器包含对 Flutter 测试的增强支持:

  1. 环境设置

    • 自动 Flutter 环境配置
    • PATH 和 PUB_CACHE 设置
    • Flutter 安装验证
  2. 错误处理

    • 堆栈跟踪收集
    • 断言错误处理
    • 异常捕获
    • 测试失败检测
  3. 输出处理

    • 完整的测试输出捕获
    • 堆栈跟踪保留
    • 详细的错误报告
    • 原始输出保留

Rust 测试支持

测试运行器为 Rust 的 cargo test 提供特定支持:

  1. 环境设置

    • 自动设置 RUST_BACKTRACE=1 以获得更好的错误消息
  2. 输出解析

    • 解析单个测试结果
    • 捕获失败测试的详细错误消息
    • 识别被忽略的测试
    • 提取摘要信息

Generic 测试支持

对于 CI/CD 管道,通过 act 的 GitHub Actions 或任何其他命令执行,generic 框架提供:

  1. 自动输出分析

    • 尝试将输出分割成逻辑块
    • 识别节标题
    • 检测通过/失败指示器
    • 即使对于未知格式,也提供合理的输出结构
  2. 灵活的集成

    • 适用于任意 shell 命令
    • 没有特定的格式要求
    • 非常适合与 act、Docker 和自定义脚本等工具集成
  3. 安全特性

    • 命令验证以防止有害操作
    • 可以配置为在必要时允许特定的提升权限

输出格式

测试运行器生成结构化输出,同时保留完整的测试输出:

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: 人工可读的摘要

开发

设置

  1. 克隆存储库
  2. 安装依赖项:
    npm install
    
  3. 构建项目:
    npm run build
    

运行测试

npm test

测试套件包括对所有支持的框架的测试,并验证成功和失败的测试场景。

CI/CD

该项目使用 GitHub Actions 进行持续集成:

  • 在 Node.js 18.x 和 20.x 上进行自动化测试
  • 测试结果作为工件上传
  • Dependabot 配置为自动依赖项更新

贡献

  1. Fork 存储库
  2. 创建您的功能分支
  3. 提交您的更改
  4. 推送到分支
  5. 创建一个 Pull Request

许可证

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选