
Windows実行ファイル(x86およびx64)向けのMCPデバッガーサーバー。デバッグ対象の静的/動的解析とメモリ検査のためのデバッガー機能を、クリーンなインターフェースを通じてMCP Toolsとして公開します。
このプロジェクトは、学習と実験のために自作した軽量な MCP デバッガサーバー です。MCP デバッガサーバー は、デバッガ機能を MCP ツールとして公開し、外部の MCP クライアントがクリーンなインターフェースを通じて実行の制御、メモリの検査、デバッグ対象の解析を行えるようにします。
デバッガは c++ で記述されており、既存のデバッガフレームワークに依存せず、コアとなるデバッグ機能をゼロから実装しています。命令のデコードには Zydis 逆アセンブラが使用されています。デバッガは、公式 MCP C# SDK を使用して構築された c# 製 MCP サーバーと統合されています。
キーワード:
MCP サーバー、デバッガ、逆アセンブラ、静的解析、動的解析、デバッグ、AI、EXE、実行可能ファイル、Windows

デモでは MCP クライアントとして Gemini CLI が使用されました。
このガイドでは、Windows 上の Visual Studio Code に MCP.Server.exe をビルドして統合する手順を段階的に説明します。
VS Code を設定する前に、MCP サーバーをコンパイルする必要があります:
MCPDebugger.sln を開きます。MCP.Server.exe が \build\Release\x86 または \build\Release\x64 サブフォルダーに存在することを確認します。VS Code で以下の拡張機能がインストールされ、有効になっていることを確認してください:
Ctrl + Shift + P を押してコマンドパレットを開きます。> と入力し、「MCP サーバーを追加」 を選択します。command (stdio) を選択します。ステップ 1 でビルドした MCP.Server.exe へのフルパスを入力します。
[!CAUTION] 一度に MCP サーバーとしてアクティブにできるアーキテクチャ (x86 または x64) は 1 つだけ です。アーキテクチャを切り替える場合は、最初に以前のサーバーエントリを削除してください。
| アーキテクチャ | 入力するパスの例 |
|---|---|
| Windows x64 | C:\YourProject\bin\x64\MCP.Server.exe |
| Windows x86 | C:\YourProject\bin\x86\MCP.Server.exe |
Ctrl + Alt + I) を開き、エージェントモード に切り替えて、ツール アイコンをクリックします。MCP ツールが一覧表示され、すぐに使用できる状態になっているはずです。MCP ツールはここで有効 / 無効を切り替えることができます。

この MCP デバッガを使用した複雑なデバッグおよびリバースエンジニアリングのタスクでは、Claude Opus 4.5 が 2025 年 11 月 時点で群を抜いて最良の結果を出しました。大規模な実行トレース、詳細な逆アセンブル結果、マルチステップの推論を、テストした他のモデルよりも一貫して高い信頼性で処理しました。
ChatGPT 4.1 と Gemini 2.5 Pro は、基本的なステップ実行、命令の検査、単純な制御フローの推論など、より単純な解析シナリオに十分対応できました。これらのモデルは、Example_x64 フォルダーと Example_x86 フォルダーに用意された例では良好に動作しましたが、より複雑または長時間実行されるデバッグセッションでは限界が見られました。
モデルの性能は時間の経過とともに変化する可能性がありますが、上記はテスト時点で観察された動作を反映しています。
MCP を介したデバッグは、大量のトークン消費とコストの増加 につながる可能性があります。AI とのやり取りはステートレスであるため、関連するすべてのデバッグコンテキスト (レジスタ、メモリ、逆アセンブル結果、モジュールなど) を各リクエストで繰り返し転送する必要があります。
実行を頻繁に停止して詳細な状態を返す操作 (ステップ実行や一時ブレークポイントなど) は、トークン消費を大幅に増幅させる可能性があります。
低コストでの運用が必要な場合 は、静的解析に重点を置き、以下の MCP ツールを無効にすることを強くお勧めします:
これらのツールを無効にすると、繰り返し行われる状態転送の量が減り、トークン消費を抑えるのに役立ちます。
リポジトリには、静的解析とデバッグを始めるのに役立つサンプルプロジェクトが含まれており、以下のフォルダーにあります:
Example_x64 と Example_x86
Example_x64 プロジェクトと Example_x86 プロジェクトは、入門用のデバッグ対象として使用されるシンプルなコンソールアプリケーションを提供します。このアプリケーションは、実行時にユーザーにパスワードの入力を求めます。両方の例の正しいパスワードは secret です。
MCP_Debugging_Sessions
動的解析とデバッグを活用した、より複雑なデバッグセッションを含むフォルダーです。これらのセッションでは Claude Opus 4.5 が使用されました。ターゲットは ここ からダウンロードできます。なお、ターゲットは MCP デバッガで使用する前に UPX -d によってアンパックされています。
MCP サーバーは、デバッガを操作するための以下のツールを公開しています:
Debugger_Start
指定された実行可能ファイルのデバッガを起動し、最初のシステムブレークポイントで停止します。
Debugger_Stop
デバッガを停止し、デバッグ対象プロセスを終了します。
Debugger_Continue
デバッグ対象がブレークポイントで停止しているときに実行を継続します。
Debugger_ContinueToEntryPoint
システムブレークポイントからプログラムのエントリポイントまで実行を継続します。
Debugger_ContinueToBreakpoint
指定された仮想アドレスの一時ブレークポイントに到達するまで実行を継続します。
Debugger_ContinueToApiBreakpoint
指定された API 関数の一時ブレークポイントに到達するまで実行を継続します。
Debugger_StepInto
次の命令にステップインし、関数呼び出しに入ります。
Debugger_StepOver
関数呼び出しをステップオーバーし、次の命令に進みます。
Debugger_Disassemble
指定された仮想アドレスのメモリを逆アセンブルし、シンボル情報を含む命令を返します。
Debugger_TryResolveString
デバッグ対象のメモリから文字列を解決して読み取ろうとします。
Debugger_ReadMemory
デバッグ対象プロセスから生のメモリバイトを読み取ります。
Debugger_WriteMemory
デバッグ対象のメモリに任意のバイトを書き込みます。
Debugger_GetModules
デバッグ対象プロセスに現在読み込まれているモジュールのリストを返します。
Debugger_GetModuleImports
指定されたモジュールのインポート関数を返します。
Debugger_GetModuleExports
指定されたモジュールのエクスポート関数を返します。
Debugger_GetModuleSections
指定されたモジュールのセクション情報を返します。
Visual Studio ソリューションは、以下のプロジェクトで構成されています:
MCP.Debugger
C++ で実装されたコアデバッガです。.NET クライアント向けのマネージドインターフェースを公開するための C++/CLI ブリッジが含まれています。
MCP.Debugger.Tester
マネージド .NET インターフェースを介してデバッガをテストするために使用されるシンプルな WinForms アプリケーションです。
MCP.Debugger.Types
デバッガと .NET クライアント間のマネージド / ネイティブ移行用の共有構造体とデータ型を定義する型アセンブリです。
MCP.Server
デバッガ機能を外部クライアント向けの MCP ツールとして公開する C# 製 MCP サーバーです。