covdbg について
covdbg-mcp は、PDB シンボルを使い、既存バイナリを再ビルドせずにカバレッジを測定する Windows 向け MCP サーバーです。C++ チームやコーディングエージェントが未カバー箇所を調べ、テストを追加し、カバレッジデータベースを扱えます。
主な機能
- 01再ビルド不要のカバレッジ計測
- 02PDB ベースのバイナリ計測
- 03未カバー行数によるファイル順位付け
- 04コンテキスト付き未カバーコード表示
- 05カバレッジデータベースの照会と統合
活用シーン
- 01Windows ビルドの未テスト C++ コードの特定
- 02エージェントによる対象を絞ったテスト追加
- 03ビルドやチェックアウト間のカバレッジ比較
MCP 対応
covdbg 実行ファイルに組み込まれたサーバーで、stdio 経由で対象の検出、計測、ソース確認、読み取り専用 SQL 照会、データベース統合のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
covdbg-mcp
covdbg 用の MCP サーバーです。AI エージェント向けに、Windows 上で C++ コードのカバレッジを測定します。テストを実行し、未カバーのコードを見つけ、対象を絞ったテストを追加できます。再ビルドは不要です。
covdbg は、既にビルド済みの Windows バイナリを対象に、PDB デバッグ情報を使ってカバレッジを測定します。x64、ARM64、32 ビット x86 に対応しています。デバッガーのように実行可能ファイルを起動して PDB を読み込み、プログラムの実行中に軽量なプローブを配置します。MCP サーバーは covdbg 実行ファイルに組み込まれており(v1.3.0 以降)、covdbg mcp で起動します。
このリポジトリには、covdbg の MCP レジストリメタデータ(server.json、glama.json)と MCP Bundle マニフェスト(manifest.json)が含まれています。サーバー本体は covdbg に同梱されています。
エージェントでできること
- テスト実行可能ファイルを再ビルドせずにカバレッジを測定します。
- 未カバー行の数でファイルを順位付けします。
- 周辺のコンテキストとともに未カバーのコードを読み取ります。
- 対象を絞ったテストを追加し、再実行して、ギャップが解消されたことを確認します。
- カバレッジデータベース(
.covdb)を読み取り専用 SQL でクエリし、チェックアウトやビルドをまたいでマージします。
必要条件
- Windows x64、または Windows on ARM(ARM64)
- covdbg 1.3.0 以降。この README では covdbg 1.5.0 について説明しています。
- PDB デバッグシンボルを含む実行可能ファイル(MSVC または PDB を生成する任意のツールチェーン)。x64 版 covdbg は x64 および 32 ビット x86 プログラムを測定します。ARM64 版 covdbg は ARM64 プログラムを測定します(covdbg 1.5 以降)。
- 初回の
covdbg login(covdbg 1.4 以降では 1 つのチームにサインインし、実行にはそのチームのシートが必要です)、または CI 用のCOVDBG_PROJECT_TOKEN。GitHub Actions のパブリックリポジトリでは、どちらも不要です(covdbg 1.5 以降。詳しくはCI でのライセンスを参照してください)。 - 対象の実行可能ファイルの隣にある
.covdbg.yaml、またはrunに渡すconfig_path(設定リファレンスを参照してください)
covdbg をインストールする
- インストーラー(推奨): installer.msi、または Windows on ARM 用の installer-arm64.msi。
%LocalAppData%\Programs\Liasoft\covdbgにインストールされ、そのディレクトリがユーザーのPATHに追加されます。 - ポータブル版: portable.zip、または Windows on ARM 用の portable-arm64.zip。任意の場所に展開し、ディレクトリを自分で
PATHに追加してください。エージェント DLL はcovdbg.exeの隣に置いてください。covdbg が DLL を検索するのはその場所だけです。
32 ビット版 covdbg は別途ありません。x64 ビルドにはエージェントの 32 ビット版である libcovdbg32.dll が同梱されており、同じ covdbg.exe で 32 ビットプログラムを測定できます。
新しいターミナルを開き、サインインします。
covdbg --version
covdbg login
サインインはチーム単位です。ブラウザーで 1 つのチーム(個人チーム、または所有しているチーム、あるいはシートを持つチーム)を選択すると、エージェントの実行はそのチームのライセンス対象になります。先にチームを選択するには covdbg login --team <slug> を使用し、現在有効なチームを確認するには covdbg whoami を使用します。
CI でのライセンス
CI では、サーバーの環境変数に COVDBG_PROJECT_TOKEN を設定してください。実行はトークンのチームのライセンス対象になります。
GitHub Actions のパブリックリポジトリでは、プロジェクトトークンは不要です(covdbg 1.5 以降)。ジョブに permissions: id-token: write を付与してください。COVDBG_PROJECT_TOKEN も保存済みのサインインもない場合、covdbg は GitHub がジョブに発行するトークンを要求します。このトークンには、ジョブが実行されているリポジトリが示されます。GitHub はフォークからのプルリクエストには、そのようなトークンを発行しません。プライベートリポジトリでは引き続きプロジェクトトークンが必要です。また、プロジェクトトークンを設定した場合は、そちらが優先されます。
クライアントのセットアップ
このサーバーは stdio トランスポートを使用します。プロジェクトディレクトリから起動するか、--workspace <dir> を指定してください。
| オプション | 環境変数 | デフォルト | 用途 |
|---|---|---|---|
--workspace <dir> | 作業ディレクトリ | プロジェクトディレクトリ。discover のデフォルトのルートです | |
--query-timeout <ms> | COVDBG_MCP_QUERY_TIMEOUT_MS | 5000 | 1 つの query ステートメントの実行を許可する時間。1~600000 ms(covdbg 1.5 以降)。オプションは環境変数より優先されます。 |
Claude Code
プロジェクトディレクトリから実行します。
claude mcp add covdbg -- covdbg mcp
または、プロジェクトに .mcp.json を追加します。
{
"mcpServers": {
"covdbg": {
"command": "covdbg",
"args": ["mcp"]
}
}
}
VS Code
.vscode/mcp.json:
{
"servers": {
"covdbg": {
"type": "stdio",
"command": "covdbg",
"args": ["mcp", "--workspace", "${workspaceFolder}"]
}
}
}
Cursor
.cursor/mcp.json:
{
"mcpServers": {
"covdbg": {
"command": "covdbg",
"args": ["mcp"]
}
}
}
Claude Desktop(MCP Bundle)
- 最新リリースから
covdbg.mcpbをダウンロードします。 - Claude Desktop で開くか、設定 → 拡張機能にドラッグします。
- 次の項目を設定します。
- covdbg 実行ファイル:
covdbg.exeのパスです。デフォルトは MSI のインストール先です。 - ワークスペース: プロジェクトディレクトリです。
- プロジェクトトークン: 任意です。
covdbg loginを実行済みの場合は空欄のままにしてください。サインインしたチームのライセンスが実行に適用されます(covdbg whoamiを参照)。
- covdbg 実行ファイル:
バンドルには covdbg 自体は含まれていません。インストール済みの covdbg.exe を起動するため、covdbg の更新は新しいバンドルを用意しなくても反映されます。
ツール
| ツール | 用途 | 主な入力 |
|---|---|---|
guide | ワークフローと設定に関するガイダンスです。初回実行前に呼び出してください。 | topic(workflow、config、excludes、baseline、merging、uncovered、children、libraries)は任意です |
discover | 実行ファイルとカバレッジデータベースを検索します | root は任意です |
run | カバレッジ実行を開始し、すぐに実行セッションを返します | target。target_arguments、config_path、output_path、follow_children は任意です |
wait_run | 少し待つか、完了した結果を取得します | session_id。timeout_seconds は任意です |
cancel_run | 実行を終了します | session_id |
open_coverage | 既存のデータベースを読み取り専用で開きます | path |
files | 未カバー行の数でファイルを順位付けします | session_id。limit、max_coverage_percent は任意です |
code | コンテキスト付きで未カバーのソースセグメントを読み取ります | session_id、file_path |
query | 制限時間内に、読み取り専用の SQL ステートメントを 1 つ実行します | session_id、sql。max_rows は任意です |
merge | 異なるチェックアウトやビルドのデータベースも統合します | input_paths、output_path |
close | 実行またはカバレッジセッションを解放します | session_id |
制限と動作
- 実行セッション ID は
run-で始まり、カバレッジセッション ID はcovdb-で始まります。 - 実行中の実行は最大 8 件、開いているカバレッジセッションは最大 32 件です。covdbg プロセスが生存している間、その実行は実行中としてカウントされます。
wait_runが終了を確認した後は、枠を占有しません。 wait_runは最大 30 秒間待機します。stillRunningが返された場合は、再度呼び出してください。- 実行結果は
success、no_functions_to_track、license_failure、errorのいずれかです。 - covdbg の終了コードには、対象の終了コードが反映されません。そのため、テスト結果は別途確認してください。
follow_childrenは、対象が起動したプロセスを測定します。ctest.exeやcmd.exeなど、デバッグ情報を持たないランチャーは測定されず、covdbg がその子プロセスを測定します。そのため、対象をctest.exe、target_argumentsを--test-dir buildとしたrunでfollow_childrenを使うと、CTest が実行するテストバイナリが測定されます。同じバイナリの各プロセスのヒット数は、1 つのデータベースに加算されます(covdbg 1.5 以降)。queryは、制限時間(--query-timeoutで指定しない場合は 5000 ms)を超えて実行中のステートメントを停止し、エラーを返します。セッションは開いたままです。また、ステートメントのサイズにも上限があります。SQL は最大 100 KiB、式のネストは 250 段、1 つの複合クエリ内のSELECTは 100 個、LIKE/GLOBパターンは 1000 バイト、各文字列または BLOB は 16 MiB までです(covdbg 1.5 以降)。mergeは、各実行のsource_rootからの相対パスを使って、異なるチェックアウトで記録されたソースファイルを照合します。また、テストの x64 ビルドと ARM64 ビルドのように、同じモジュールパスにある異なるビルドを別々に保持します(covdbg 1.5 以降)。remappedModulesとremappedFilesは、この方法で照合した数を示します。- covdbg 1.5.0 はスキーマ 8 のカバレッジデータベースを書き込み、それ以前のバージョンで書き込まれた
.covdbファイルを拒否します。カバレッジを再度記録してください。
サーバーの実行中にアップグレードする
covdbg 1.5.0 以降では、クライアントが covdbg mcp を開いている間でも、再起動せずにインストーラーで covdbg をアップグレードまたはアンインストールできます。実行中のサーバーは旧バージョンで応答を続け、新たに開始する実行ではインストール済みの新しい covdbg.exe が使われます。サーバー自体を新しいバージョンにするには、サーバーに再接続してください。Claude Code では、/mcp → covdbg → Reconnect の順に選択します。
環境変数
| 変数 | 用途 |
|---|---|
COVDBG_PROJECT_TOKEN | CI またはヘッドレス環境で使うプロジェクトトークンです。ローカルでの使用では covdbg login による認証が使われ、1 つのチームに紐付けられます。 |
COVDBG_OUTPUT | 固定のデフォルト出力先です。後続の実行で以前の結果が上書きされるため、スイート内で同じ場所を使い回さないでください。 |
COVDBG_MCP_QUERY_TIMEOUT_MS | 1 件の query ステートメントの制限時間です。1~600000 ms(デフォルトは 5000)です。この範囲外の値は無視されます。両方が指定されている場合は --query-timeout が優先されます。 |
ドキュメント
公開(メンテナー向け)
manifest.json と server.json の version、および server.json のパッケージ URL に含まれるリリースタグを同期させてください。
-
バンドルをビルドします。
.mcpbignoreにより、対象はmanifest.json、icon.png、LICENSEに限定されます。npx @anthropic-ai/mcpb validate manifest.json npx @anthropic-ai/mcpb pack . covdbg.mcpb -
GitHub リリース
v<version>を作成し、covdbg.mcpbをアセットとしてアップロードします。 -
バンドルのハッシュを
server.jsonのfileSha256に設定します。(Get-FileHash covdbg.mcpb -Algorithm SHA256).Hash.ToLower() -
MCP レジストリに公開します。
com.covdbg/*名前空間では、covdbg.comで DNS 認証を使用します。mcp-publisher login dns --domain covdbg.com --private-key <key> mcp-publisher publish -
Glama は、リポジトリから
glama.jsonを取得します。
ライセンス
このリポジトリのメタデータは、Apache License 2.0 の下でライセンスされています。covdbg 自体は別途ライセンスされており、Free、Team、Enterprise の各プランがあります。covdbg.com とライセンスに関する FAQをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。