テストランナーMCP
複数のテストフレームワークからのテスト結果を実行および解析するためのモデルコンテキストプロトコル(MCP)サーバー。このサーバーは、テストの実行と出力の処理のための統一されたインターフェースを提供し、以下をサポートします。
Bats(Bash自動テストシステム)
Pytest (Python テストフレームワーク)
フラッターテスト
Jest (JavaScript テストフレームワーク)
Goテスト
錆試験(貨物試験)
汎用(任意のコマンド実行用)
インストール
npm install test-runner-mcpRelated MCP server: JMeter MCP Server
前提条件
それぞれのテスト タイプに対して、次のテスト フレームワークをインストールする必要があります。
Bats:
apt-get install batsまたはbrew install batsPytest:
pip install pytestFlutter: Flutterインストールガイドに従ってください
Jest:
npm install --save-dev jestGo: Go インストールガイドに従う
Rust: Rust インストールガイドに従う
使用法
構成
テストランナーを 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-specific environment (required for Flutter tests)
"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を更新してシステムの実際のパスを追加します
これらの値は、次のコマンドを実行することで見つけることができます。
# Get Flutter root
flutter --version
# Get pub cache path
echo $PUB_CACHE # or default to $HOME/.pub-cache
# Get Flutter binary path
which flutterテストの実行
次のパラメータを指定してrun_testsツールを使用します。
{
"command": "test command to execute",
"workingDir": "working directory for test execution",
"framework": "bats|pytest|flutter|jest|go|rust|generic",
"outputDir": "directory for test results",
"timeout": "test execution timeout in milliseconds (default: 300000)",
"env": "optional environment variables",
"securityOptions": "optional security options for command execution"
}各フレームワークの例:
// 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 (for arbitrary commands, CI/CD tools, etc.)
{
"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, // Allow sudo commands
"allowSu": false, // Allow su commands
"allowShellExpansion": true, // Allow shell expansion like $() or backticks
"allowPipeToFile": false // Allow pipe to file operations (> or >>)
}
}Flutterテストのサポート
テスト ランナーには、Flutter テストの強化されたサポートが含まれています。
環境設定
Flutter環境の自動構成
PATHとPUB_CACHEの設定
Flutterのインストール検証
エラー処理
スタックトレースの収集
アサーションエラー処理
例外キャプチャ
テスト失敗検出
出力処理
完全なテスト出力キャプチャ
スタックトレースの保存
詳細なエラー報告
生の出力の保存
Rustテストのサポート
テスト ランナーは、Rust のcargo testに特化したサポートを提供します。
環境設定
より適切なエラーメッセージを表示するために、RUST_BACKTRACE=1 を自動的に設定します。
出力解析
個々のテスト結果を解析する
失敗したテストの詳細なエラーメッセージをキャプチャします
無視されたテストを特定する
概要情報を抽出します
汎用テストサポート
CI/CD パイプライン、 act経由の GitHub Actions、またはその他のコマンド実行の場合、汎用フレームワークは以下を提供します。
自動出力分析
出力を論理ブロックに分割する試み
セクションヘッダーを識別します
合格/不合格の指標を検出
未知のフォーマットでも適切な出力構造を提供します
柔軟な統合
任意のシェルコマンドで動作します
特定のフォーマット要件はありません
act、Docker、カスタムスクリプトなどのツールとの統合に最適
セキュリティ機能
有害な操作を防ぐためのコマンド検証
必要に応じて特定の権限を許可するように設定できます
出力形式
テスト ランナーは、完全なテスト出力を保持しながら構造化された出力を生成します。
interface TestResult {
name: string;
passed: boolean;
output: string[];
rawOutput?: string; // Complete unprocessed output
}
interface TestSummary {
total: number;
passed: number;
failed: number;
duration?: number;
}
interface ParsedResults {
framework: string;
tests: TestResult[];
summary: TestSummary;
rawOutput: string; // Complete command output
}結果は指定された出力ディレクトリに保存されます。
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
貢献
リポジトリをフォークする
機能ブランチを作成する
変更をコミットする
ブランチにプッシュする
プルリクエストを作成する
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。