MCP Server for WinDBG Crash Analysis について
この MCP サーバーは、AI モデルを WinDbg と接続し、クラッシュダンプ解析、ユーザーモードのリモートデバッグ、カーネルデバッグを行います。cdb.exe と kd.exe をヘッドレスで操作する仕組みで、他の MCP クライアントを使いたい場合や多数のダンプを一括で確認したい場合に向いています。
主な機能
- 01クラッシュダンプの自動トリアージと解析
- 02TCP、名前付きパイプ、COM によるユーザーモードのリモートデバッグ
- 03KDNET、名前付きパイプ、シリアルによるカーネルデバッグ
- 04任意の WinDbg および KD コマンドの実行
- 05複数セッションの同時利用と個別の指定
- 06機密情報を伏せる テキストフィルタースクリプト
活用シーン
- 01クラッシュや青画面で生成された .dmp ファイルの根本原因の特定
- 02応答しないライブのユーザーモードプロセスの調査
- 03フォルダ内の多数のダンプを比較して共通のシグネチャを探すこと
MCP 対応
本プロジェクトは MCP サーバーであり、open_cdb_dump、run_cdb_command、open_kd_session などの WinDbg デバッグツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
WinDbg クラッシュ解析用 MCP サーバー
AI モデルと WinDbg を連携し、クラッシュダンプ解析、ユーザーモードのリモートデバッグ、カーネルデバッグを行う Model Context Protocol サーバーです。
ヒント
WinDbg 自体に組み込まれた AI デバッグをお探しですか? Microsoft は現在、WinDbg 1.2610.1001.0 以降で公式の WinDbg MCP を提供しています。WinDbg の MCP サービス設定で有効にすると、VS Code の GitHub Copilot または GitHub Copilot CLI から、実行中のデバッグセッションとチャットできます。お探しのものがこれであれば、こちらをご覧ください:
このプロジェクトは、コミュニティが独自に開発した代替手段です。
cdb.exe/kd.exeをヘッドレスで実行するため、別の MCP クライアントを使いたい場合、HTTP 経由で別のマシンからデバッガーを操作したい場合、または WinDbg の UI を開かずに多数のダンプをスクリプトでトリアージしたい場合に適しています。
概要
このサーバーは、ユーザーモード用の Windows デバッガー CDB(ダンプおよび -remote)と、カーネルターゲット用の KD(-k)を操作します。これにより、「コールスタックを表示して、このアクセス違反について説明して」や「カーネルセッションを開いて、どのドライバーがバグチェックを起こしたか教えて」のように、自然言語でデバッグできます。
魔法のように問題を自動修正するものではありません。これは cdb.exe / kd.exe を操作する Python ラッパーであり、LLM が実際のデバッガーコマンドを実行し、その出力を推論できるようにします。
機能
- クラッシュダンプ解析 -
.dmp/.mdmp/.hdmpを開き、単一の呼び出しで自動トリアージ(!analyze -v、スタック、モジュール、スレッド)を実行します。 - ユーザーモードのリモートデバッグ - TCP、名前付きパイプ、または COM 経由で、稼働中の
cdb/WinDbg デバッグサーバー(-remote)に接続し、必要に応じてブレークインします。 - カーネルデバッグ - KDNET、名前付きパイプ、またはシリアル経由でカーネルターゲット(
-k、kd.exeで操作)に接続します。サーバーはターゲットを待機し、代わりにブレークインします。 - 任意の WinDbg/KD コマンドを実行 - 自然言語で指示して、開いているセッションで任意のコマンド(
kb、!process 0 0、!heap、lmなど)を実行できます。 - セッション ID - 開くたびにセッション ID が返されます。複数のセッション(ダンプ、リモート、カーネル)を同時に開き、それぞれ独立して操作できます。
- 堅牢なライブセッション - 呼び出しごとにタイムアウトを設定できます。タイムアウトを超えて実行される低速なライブコマンドには CTRL+BREAK を送って中断し、セッションが応答不能になる代わりに再同期します。
- 複数ダンプのトリアージ - ディレクトリ内の複数のダンプを検出して比較できます。
- テキストフィルターフック -
--filter-scriptを使って、ツールの引数と出力から PII/シークレットをマシンの外部へ送信される前に秘匿化できます。 - stdio または HTTP - ローカルで stdio 経由に実行するか、別のマシンから操作するストリーミング可能な HTTP サービスとして実行できます。
ユースケース
| 手元にあるもの | 実現したいこと | ガイド |
|---|---|---|
クラッシュまたはブルースクリーンの .dmp | 根本原因を特定する:例外またはバグチェック、障害が発生したフレーム、発生した理由 | クラッシュダンプを分析する |
ライブのユーザーモードプロセス(cdb -server 経由) | 接続して、ハングまたはライブ状態を調査する | リモートターゲットをデバッグする |
| KD が有効なマシンまたは VM | ドライバー、バグチェック、起動時の問題をデバッグする | カーネルターゲットをデバッグする |
| ダンプが多数あるフォルダー | ダンプを一括でトリアージし、共通するシグネチャを見つける | 複数のダンプをトリアージする |
| デバッグ用ホストがあるが、別の場所で作業している | 別のマシンから HTTP 経由で操作する | 別のマシンからデバッグする |
| シークレットや PII を含むダンプ | ツールの出力がマシンの外部に出る前に機密データを除去する | 機密データをマスキングする |
ツール
すべての open_* ツールは不透明な session_id(例:cdb-1a2b3c4d)を返します。これを対応する run_*、close_*、send_ctrl_break、wait_for_break 呼び出しに渡してください。ユーザーモードのターゲット(ダンプおよび -remote)は cdb.exe で実行され、カーネルターゲットとカーネルダンプは kd.exe で実行されます。
| ツール | 用途 |
|---|---|
list_dumps | ディレクトリ内のクラッシュダンプファイルを一覧表示する |
open_cdb_dump | クラッシュダンプを開いてトリアージする |
open_cdb_remote | ユーザーモードのリモートデバッグサーバー(-remote)に接続する |
open_kd_session | カーネルターゲットに接続する(-k、KDNET/名前付きパイプ/シリアル) |
open_kd_dump | カーネルクラッシュダンプ(MEMORY.DMP、ミニダンプ)を開いてトリアージする |
run_cdb_command | ユーザーモードセッションでコマンドを実行する |
run_kd_command | カーネルセッションでコマンドを実行する |
close_cdb_session | ユーザーモードセッションを終了する |
close_kd_session | カーネルセッションを終了する(ターゲットマシンを再開する) |
send_ctrl_break | 実行中のライブセッションにブレークをかける |
wait_for_break | g で再開したターゲットが再び停止するまで待機する |
パラメーター、タイムアウト、組み込みのトリアージ用プロンプトについては、ツールリファレンスを参照してください。
クイックスタート
メモ
エンタープライズ環境での Claude Code: 管理対象の設定で
allowedMcpServersが定義されている場合、 プラグインにバンドルされた MCP サーバーが通知なくスキップされることがあります(Claude Code issue #32882)。 サーバーを手動でインストールして登録することをおすすめします。その後、必要に応じてスキルまたはエージェントのプラグインを追加してください。 サーバーは引き続き、組織の MCP ポリシーで許可されている必要があります。
前提条件
- Debugging Tools for Windows または Microsoft Store 版 WinDbg を備えた Windows。これらには
cdb.exeとkd.exeが含まれます(自動検出されます)。 - MCP 互換クライアント(Claude Code、GitHub Copilot、Claude Desktop、Cursor、Windsurf、Cline など)。
Python はそれ自体、前提条件ではありません。必要なものは各手順に記載されています。
Claude Code にインストールする
必要に応じてサーバープラグインをインストールし、その後、必要に応じてスキル、エージェント、またはその両方を追加します。
| プラグイン | サーバー | 含まれるワークフロー |
|---|---|---|
mcp-windbg-uvx | プラグインが uvx で起動 | MCP ツールのみ |
mcp-windbg-skills | uvx プラグインまたは独自の MCP 接続を使用 | 4 つのオプションのスキル |
mcp-windbg-agents | uvx プラグインまたは独自の MCP 接続を使用 | オプションの crash-analyst エージェント |
uvx を使ったサーバー
最短で使い始められます。2 行追加するだけで、pip install も MCP 設定の編集も不要です。
シンボルの設定済みの 11 個のツールが追加されます。スキルとエージェントは別途インストールします。
/plugin marketplace add svnscha/mcp-windbg
/plugin install mcp-windbg-uvx@mcp-windbg
uv が必要です。uv には uvx が含まれています。winget install astral-sh.uv を実行してください。このプラグインは初回使用時に PyPI から指定バージョンのサーバーを取得するため、ほかにインストールするものはありません。シンボルとオプションについては、プラグインの README をご覧ください。
サーバーを自分で登録する
プラグインを使わない場合や、すでにパッケージを実行している場合は、次の手順で登録できます。
pip install mcp-windbg
claude mcp add mcp-windbg -s user -e _NT_SYMBOL_PATH="SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols" -- python -m mcp_windbg
Python 3.10 以上が必要です。ガイド付きワークフローやエージェントを利用するには、以下の任意のプラグインを追加してください。
既存のサーバー向けスキル
uvx プラグインをインストールするか、mcp-windbg を自分で登録した後、必要に応じて 4 つのスキルを追加できます。
/plugin marketplace add svnscha/mcp-windbg
/plugin install mcp-windbg-skills@mcp-windbg
/mcp-windbg-skills:analyze-dump、/mcp-windbg-skills:debug-remote、/mcp-windbg-skills:kernel-debug、または /mcp-windbg-skills:windbg-doctor を呼び出してください。
このプラグインは設定済みの MCP 接続を使用し、サーバー、ランタイム、シンボル設定、crash-analyst エージェントは追加しません。ネイティブ実行ファイル、Python インストール、または mcp-windbg ツールを公開する HTTP サービスで動作します。
サーバーとスキルを一緒に使うには、このプラグインを uvx と併用してインストールしてください。ツールだけを使う場合は、このプラグインは不要です。
スキルが同梱されていたバージョンからアップグレードする場合は、ワークフローを引き続き使うためにこのプラグインをインストールしてください。呼び出し時のプレフィックスは /mcp-windbg: から /mcp-windbg-skills: に変わります。
サーバーの組み込み MCP プロンプトは、これらのプラグインとは別に引き続き利用できます。プラグインの更新や切り替えについては、プラグインガイドをご覧ください。
既存のサーバー向けエージェント
/plugin marketplace add svnscha/mcp-windbg
/plugin install mcp-windbg-agents@mcp-windbg
「C:\dumps\app.dmp に対して mcp-windbg-agents:crash-analyst エージェントを使って」と指示してください。 既存の MCP 接続を通じてダンプを調査し、判定、根拠、次の手順を返します。uvx もスキルプラグインも必要ありません。 エージェントが同梱されていたバージョンからアップグレードする場合は、引き続き使用するためにこのプラグインをインストールしてください。
Python を使わずにインストールする
各リリースには mcp-windbg.exe が添付されています。これはインタープリターとすべての依存関係を内包した、署名済みの実行ファイルです。
cdb.exe は引き続き必要です。クライアントの command にはこのファイルを指定し、args は空のままにしてください。
リリースには SHA256SUMS も公開されており、バイナリにはコード署名が付いているため、どちらも検証できます。
(Get-FileHash .\mcp-windbg.exe -Algorithm SHA256).Hash
Get-AuthenticodeSignature .\mcp-windbg.exe | Format-List Status, SignerCertificate
Status に Valid と表示されていることを確認してください。署名者は、署名証明書を提供する Liasoft GmbH です。プロジェクトは Sven Scharmentke が開発しています。
別のクライアントにインストールする
pip install mcp-windbg
Python 3.10 以上が必要です。その後、クライアントに python -m mcp_windbg を指定してください。VS Code(GitHub Copilot)で有効にしてすべてのワークスペースから使うには、F1 を押し、MCP: Open User Configuration を選択してください。
{
"servers": {
"mcp_windbg": {
"type": "stdio",
"command": "python",
"args": ["-m", "mcp_windbg"],
"env": {
"_NT_SYMBOL_PATH": "SRV*C:\\Symbols*https://msdl.microsoft.com/download/symbols"
}
}
}
}
Claude Desktop、Copilot CLI、Autohand Code、HTTP、ソースからのセットアップについては、クライアント設定ガイドをご覧ください。
デバッグを開始する
クライアントを再起動し、実行したい内容を尋ねてください。
Analyze the crash dump at C:\dumps\app.dmp
Connect to tcp:Port=5005,Server=192.168.0.100 and show me the current thread state
Open a kernel session on net:port=50000,key=1.2.3.4, run !analyze -v, and tell me which driver bugchecked
サーバーのオプション(--cdb-path、--kd-path、--symbols-path、--filter-script、--transport、...)については、コマンドラインリファレンスをご覧ください。
ドキュメント
| トピック | 説明 |
|---|---|
| はじめに | セットアップと、最初のクラッシュダンプ解析 |
| クラッシュダンプを解析する | 例外の根本原因を特定します。障害が発生したフレームと、その原因を確認できます |
| リモートターゲットをデバッグする | 実行中のユーザーモードプロセスに割り込み、ハングを調査します |
| カーネルターゲットをデバッグする | KDNET またはパイプ経由で、ドライバー、バグチェック、起動時の問題を調査します |
| 複数のダンプをトリアージする | フォルダーをスキャンして、共通するシグネチャを見つけます |
| 別のマシンからデバッグする | サーバーを HTTP 経由で実行し、リモートから操作します |
| 機密データをマスキングする | ツールの出力がマシンの外部に送信される前に、秘密情報を削除します |
| リファレンス | ツール、プロンプト、CLI オプション、クライアント設定 |
| トラブルシューティング | よくある問題と解決策 |
| 開発 | ローカルチェックアウトから実行し、クライアントを開発ビルドに接続します |
ブログ
開発の歩みについてはこちらをご覧ください:クラッシュ解析の未来:AI と WinDbg の融合
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。