test-coverage-mcp について
Test Coverage MCP は、LCOV ファイルからテストカバレッジを分析する MCP サーバーで、コーディングエージェントやテストエージェントがカバレッジの変化を把握できるようにします。大きな LCOV ファイルの解析に伴うトークン消費を抑えるため、コンパクトな JSON を返します。
主な機能
- 01プロジェクト全体の行・分岐カバレッジの集計
- 02ファイル単位のカバレッジ取得
- 03セッション基準値の記録と差分比較
- 04トークン節約のためのコンパクトな JSON 出力
- 05SF、DA、BRDA を含む LCOV 形式への対応
活用シーン
- 01コーディングエージェントの変更によるカバレッジ低下の確認
- 02テストエージェントによる未カバーファイルの特定
- 031 回のセッション内でのカバレッジ向上・低下の追跡
MCP 対応
本プロジェクトは MCP サーバーであり、coverage_summary、coverage_file_summary、start_recording、get_diff_since_start などのカバレッジツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
テストカバレッジ MCP
エージェントがコーディングする際に、カバレッジを把握できるようにします
「ねえ、私はコーディングエージェントです。さっき見栄えのいい便利な機能を作ったんですが……あれっ、カバレッジを下げてしまいました🤓。どうすれば分かったんでしょう?」
「ねえ、私はテストエージェントです。コードをテストでカバーするよう頼まれましたが、カバーされていない箇所をどうやって見つければいいのでしょう?😳」
コーディングエージェントやテストエージェントに目を与えましょう。あらゆるプログラミング言語のテストカバレッジデータを、すぐに、確実かつトークン効率よく提供する MCP サーバーです(LCOV ベース)。
__
🚀 2025年11月に公開しました!最近、このライブラリの仕上げにかなり力を入れています。役に立つと思ったら、⭐スターを付けてください。このプロジェクトが注目に値することをほかの開発者に伝える助けになります。
問題
適切なカバレッジツールがないままAIコーディングエージェントがコードを扱うと、次の3つの重大な問題に直面します。
- カバレッジを把握できない - 変更によってテストカバレッジが改善したのか、低下したのかを確認できません。
- トークンの浪費 - 大容量のLCOVファイル(10 MBを超えるものもあります)の解析に、何千ものトークンを費やします。
- 信頼性の低いスクリプト - 独自の解析スクリプトを場当たり的に作成するため、失敗したり、誤った結果を出したりすることがよくあります。
解決策
このMCPサーバーは、次の機能を提供することで3つすべての問題を解決します。
- カバレッジの把握 - エージェントは、シンプルなツール呼び出しでいつでもカバレッジを確認できます。
- トークン効率 - 何千ものトークンではなく、100トークン未満でカバレッジの概要を取得できます。
- 正確性 - あらゆる形式の違いに対応する、本番品質のLCOV解析を提供します。
- ベースラインの追跡 - メモリーに状態を保持せずに、セッション中のカバレッジの進捗を測定できます。
テストカバレッジ:このプロジェクトではテストカバレッジ95%を維持しており、まもなく100%を目指しています。
2つの主なワークフロー
1. カバレッジの概要を確認する
プロジェクト全体のカバレッジ、または特定ファイルのカバレッジを確認します。
// Get overall project coverage
coverage_summary({ lcovPath: "./coverage/lcov.info" });
// Returns: { linesCoveragePercentage: 87.5, branchesCoveragePercentage: 82.1 }
// Get coverage for specific files
coverage_file_summary({
lcovPath: "./coverage/lcov.info",
filePath: "src/utils/parser.ts",
});
// Returns: { path: "src/utils/parser.ts", linesCoveragePercentage: 92.0, branchesCoveragePercentage: 88.5 }
2. セッションの進捗をベースラインと比較する
セッション開始時にベースラインを設定してから、進捗を測定します。
// At session start - record current coverage as baseline
start_recording({ lcovPath: "./coverage/lcov.info" });
// Returns: "Recording started"
// ... agent writes code and tests ...
// Check coverage impact
get_diff_since_start({ lcovPath: "./coverage/lcov.info" });
// Returns: { linesPercentageImpact: +2.3, branchesPercentageImpact: +1.8 }
ベースライン追跡が必要な理由:これがない場合、エージェントはセッション中、初期カバレッジを状態を持つメモリーに保持する必要があり、貴重なコンテキストウィンドウの領域を消費します。
インストール
npm install -g test-coverage-mcp
設定
このMCPサーバーをAIコーディングツールの設定に追加します。
Claude Desktop(Claude Code)
macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonを編集します。
Windows:%APPDATA%\Claude\claude_desktop_config.jsonを編集します。
{
"mcpServers": {
"test-coverage": {
"command": "npx",
"args": ["-y", "test-coverage-mcp"]
}
}
}
更新後、Claude Desktopを再起動します。
Cursor IDE
プロジェクトのルートにある.cursor/mcp.jsonを作成または編集します。
{
"mcpServers": {
"test-coverage": {
"command": "npx",
"args": ["-y", "test-coverage-mcp"]
}
}
}
GitHub Copilot(VS Code)
ワークスペース内の.vscode/mcp.jsonを作成または編集します。
{
"servers": {
"test-coverage": {
"command": "npx",
"args": ["-y", "test-coverage-mcp"]
}
}
}
VS Code 1.99以降、またはVisual Studio 17.14以降が必要です。Enterpriseユーザーは「MCP servers in Copilot」ポリシーを有効にする必要があります。
Windsurf(Codeium IDE)
macOS:~/.codeium/windsurf/mcp_config.jsonを編集します。
Windows:%APPDATA%\Codeium\Windsurf\mcp_config.jsonを編集します。
Linux:~/.codeium/windsurf/mcp_config.jsonを編集します。
{
"mcpServers": {
"test-coverage": {
"command": "npx",
"args": ["-y", "test-coverage-mcp"]
}
}
}
または、GUIから設定します:Settings → Advanced Settings → Cascade → Add Server
利用可能なツール
coverage_summary
LCOVファイルからプロジェクト全体のカバレッジを取得します。
入力:
{
lcovPath?: string // Optional. Defaults to "./coverage/lcov.info"
}
出力:
{
linesCoveragePercentage: number, // 0-100
branchesCoveragePercentage: number // 0-100
}
例:
coverage_summary({ lcovPath: "./coverage/lcov.info" });
// { linesCoveragePercentage: 87.5, branchesCoveragePercentage: 82.1 }
coverage_file_summary
特定ファイルのカバレッジを取得します。
入力:
{
lcovPath?: string, // Optional. Defaults to "./coverage/lcov.info"
filePath: string // Required. Path to the file
}
出力:
{
path: string,
linesCoveragePercentage: number, // 0-100
branchesCoveragePercentage: number // 0-100
}
例:
coverage_file_summary({
lcovPath: "./coverage/lcov.info",
filePath: "src/utils/parser.ts",
});
// { path: "src/utils/parser.ts", linesCoveragePercentage: 92.0, branchesCoveragePercentage: 88.5 }
start_recording
後で比較するために、現在のカバレッジをベースラインとして記録します。
入力:
{
lcovPath: string; // Required. Path to LCOV file to record
}
出力:
"Recording started";
例:
start_recording({ lcovPath: "./coverage/lcov.info" });
// "Recording started"
get_diff_since_start
現在のカバレッジを記録済みのベースラインと比較します。
入力:
{
lcovPath: string; // Required. Path to current LCOV file
}
出力:
{
linesPercentageImpact: number, // Positive = improvement, negative = regression
branchesPercentageImpact: number // Positive = improvement, negative = regression
}
例:
get_diff_since_start({ lcovPath: "./coverage/lcov.info" });
// { linesPercentageImpact: +2.3, branchesPercentageImpact: +1.8 }
使用例
例 1:作業開始前にカバレッジを確認する
Agent: "Let me check the current test coverage before I start working"
[Uses coverage_summary tool]
Agent: "Current coverage is 87.5% lines and 82.1% branches. I'll aim to maintain or improve this."
例 2:開発中のカバレッジへの影響を追跡する
Agent: "I'll record the baseline coverage first"
[Uses start_recording tool]
Agent: "Now I'll add the new authentication feature with tests"
[Writes code and tests]
Agent: "Let me check the coverage impact"
[Uses get_diff_since_start tool]
Agent: "Great! Coverage increased by 2.3% for lines and 1.8% for branches."
例 3:特定のファイルのカバレッジを確認する
Agent: "Let me check coverage for the file I just modified"
[Uses coverage_file_summary with filePath: "src/auth/validator.ts"]
Agent: "The validator.ts file now has 95% line coverage and 92% branch coverage."
仕組み
この MCP サーバーは、次の処理を行います。
- LCOV ファイルを解析し、あらゆる LCOV 形式のバリエーションに対応する本番環境品質のパーサーを使用します
- プロジェクト全体または個々のファイルのカバレッジ率を計算します
- セッション単位で追跡するため、一時ディレクトリにベースラインを保存します
- トークン消費を最小限に抑えた簡潔な JSON レスポンスを返します
LCOV 形式のサポート
このサーバーは、次のようなすべての標準 LCOV ファイル形式をサポートしています。
- サマリーセクションを含むファイル(
SF:、end_of_record) - 行ごとのデータのみを含むファイル(
DA:エントリー) - ブランチカバレッジデータを含むファイル(
BRDA:、BRF:、BRH:) - 同じファイル内に混在する形式
トラブルシューティング
「LCOV ファイルが見つかりません」
- まず、カバレッジを有効にしてテストスイートを実行してください
- LCOV ファイルへのパスが正しいことを確認してください(相対パスは現在の作業ディレクトリから解決されます)
- デフォルトのパスは
./coverage/lcov.infoです
「ファイルのカバレッジデータが見つかりません」
- ファイルパスが LCOV ファイル内の表記と完全に一致していることを確認してください
- テストフレームワークによって、絶対パスを使用する場合と相対パスを使用する場合があります
「ベースラインの記録が見つかりません」
get_diff_since_startを呼び出す前に、start_recordingを呼び出す必要があります- ベースラインは一時ストレージに保存され、システムの再起動時に消去されます
開発
# Install dependencies
npm install
# Build
npm run build
# Run tests (with coverage!)
npm test
# Run linter
npm run lint
# Test with MCP inspector
npm run inspect
コントリビューション
コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。
ライセンス
MIT © Yoni Goldberg
リンク
改善案
- coverage_file_summary は、フラット形式でも宣言されているプロパティをネスト形式で返します
- 記録の開始時に、他のセッションのファイルが上書きされます
- 記録の命名を改善する(setSessionBaseline、getDiffSinceBaseline)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。