mcpField
M
MCP Test Runner

MCP Test Runner

ローカル
github.com/LovRanRan開発ツール020 週間前に更新

MCP Test Runner について

MCP Test RunnerはローカルでpytestとJestを実行し、コードベースのオンボーディングエージェント向けに結果を正規化します。LLMではなく制限付きのサブプロセスで実行し、pytestのカバレッジ概要も提供します。

主な機能

  1. 01pytestとJestのテスト実行
  2. 02単一テストの指定実行
  3. 03pytestとJestの結果の正規化
  4. 04pytestカバレッジの集計
  5. 05実行時間とリソースの制限

活用シーン

  1. 01コードの動作に関する判断を検証
  2. 02オンボーディング中に対象テストを実行
  3. 03pytestのカバレッジ合計を確認

MCP 対応

テスト実行、出力解析、カバレッジ取得のツールをMCPクライアントに公開するMCPサーバーです。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"lovranran-mcp-test-runner": {
"command": "uvx",
"args": [
"lovranran-mcp-test-runner"
]
}
}
}
起動コマンドuvx lovranran-mcp-test-runner

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypilovranran-mcp-test-runner0.1.0

ツール

6

掲載時のツール一覧 · 3 週間前に更新

このツールにパラメーターはありません。

詳細

mcp-test-runner

決定論的なローカルテスト実行と、正規化されたテスト結果のレポートを行う MCP サーバーです。

mcp-test-runner は、コードベースのオンボーディングエージェント向けの検証レイヤーです。pytest と Jest の実行、テスト出力の解析、カバレッジの要約を行う専用の MCP ツールを提供します。これにより、後続のエージェントは、実際の実行結果に基づいて主張を「検証済み」「未検証」「矛盾あり」と判定できます。

コードベースのオンボーディングスタック

mcp-test-runner は、コードベースのオンボーディングエージェントである Project 6 wayfinder 向けの、3 つの MCP ツールサーバースタックにおける検証レイヤーです。

  • mcp-repo-mapper は、リポジトリの構造、言語、エントリーポイント、フレームワークの根拠、Python の依存関係をマッピングします。
  • mcp-ast-explorer は、シンボルに基づいて Python の定義、シグネチャ、参照、呼び出しチェーン、クラス階層を検索できます。
  • mcp-test-runner は、ローカルで pytest/Jest のチェックを実行し、カバレッジを要約して、エージェントの主張を実行結果に照らして検証できるようにします。

wayfinder では、このサーバーにより、リスクの高いコード理解に関する主張を、実際のテスト実行に基づく「検証済み」「未検証」「矛盾あり」の根拠に変換できます。

ステータス

このリポジトリは、Python を主体とした v1 の MCP テストランナーです。制限付きの pytest 実行、Jest コマンドの実行、単一テストの指定、pytest のカバレッジ要約、正規化された pytest/Jest JSON の解析に対応しています。

このサーバーは LLM を使用しません。テスト結果は、サブプロセスの実行と構造化されたパーサーの出力から取得します。

ツール

ツール目的
health()スモークチェック用に ok を返します。
run_pytest(path, test_filter?, timeout_seconds?, cpu_seconds?, memory_mb?)作業ディレクトリを制限して pytest を実行し、コマンドの生出力を返します。
run_jest(path, test_filter?, timeout_seconds?, cpu_seconds?, memory_mb?)npx jest を介して Jest を実行し、コマンドの生出力を返します。
run_single_test(path, test_id, framework?, timeout_seconds?, cpu_seconds?, memory_mb?)pytest のノード ID を 1 つ、または Jest のテスト名パターンを 1 つ実行します。
parse_test_output(stdout, framework)テストランナーの JSON 出力を正規化します。
get_coverage_summary(path, framework?, timeout_seconds?, cpu_seconds?, memory_mb?)pytest-cov の JSON カバレッジ集計値を返します。

サポート範囲

  • Python 3.11 以降のパッケージ。
  • FastMCP 2.x サーバー。
  • pytest-json-report による JSON レポート出力付きの pytest 実行。
  • npx jest --json --outputFile による Jest コマンドの実行。
  • pytest と Jest の JSON を単一の TestRunResult スキーマに正規化。
  • pytest の単一ノード ID の実行と、Jest のテスト名指定。
  • .coverage.json に基づく pytest-cov のカバレッジ要約。
  • サブプロセスのタイムアウトと、POSIX resource.setrlimit による CPU/メモリー制限。

現在の制限事項

  • v1 では Docker を使用しません。cwd の検証、サブプロセスのタイムアウト、POSIX のリソース制限を使用します。
  • リソース制限には、resource.setrlimit をサポートする POSIX プラットフォームが必要です。
  • Jest の実行には、Node.js と、プロジェクトローカルまたは npx から解決可能な Jest が必要です。
  • Jest の単一テスト指定には --testNamePattern を使用します。Jest のファイル固有のノード ID は解析しません。
  • v1 のカバレッジ要約は pytest のみを対象とします。
  • ツールは実行時にコマンドの生出力を返します。フレームワークの JSON を正規化するには parse_test_output を呼び出してください。

ローカル開発

依存関係をインストールします:

uv sync --extra dev

PyPI では mcp-test-runner がすでに使用されているため、PyPI の配布名は lovranran-mcp-test-runner です。インストールされるコンソールスクリプト名は引き続き mcp-test-runner です。

MCP サーバーを起動します:

uv run mcp-test-runner

検証を実行します:

uv run ruff check .
uv run mypy
uv run pytest

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。