MCP Debugger
mcp-debugger
多言語デバッグ用MCPサーバー – AIエージェントにデバッグのスーパーパワーを与えましょう 🚀
🎯 概要
mcp-debuggerは、デバッグツールを構造化されたAPI呼び出しとして提供するModel Context Protocol (MCP) サーバーです。AIエージェントがDebug Adapter Protocol (DAP) を使用して、複数のプログラミング言語のステップ実行デバッグを行えるようにします。
🆕 バージョン 0.19.0: JDIブリッジ経由のJavaデバッグ(起動およびアタッチモード対応)!さらにDelveによるGoデバッグにも対応。
🆕 バージョン 0.17.0: Rustデバッグサポート!Linux/macOS上のCodeLLDBでRustプログラムをデバッグ可能。Cargoプロジェクト、非同期コード、完全な変数検査をサポート。ステップコマンドがアクティブなソースコンテキストを返すようになったため、エージェントは自動的に現在地を把握できます。
🔥 バージョン 0.16.0: JavaScript/Node.jsデバッグサポート!バンドルされたjs-debugによる完全なデバッグ機能、TypeScriptサポート、改善されたnpx配布によるランタイム依存ゼロを実現。
🎬 デモ動画: デバッガーの動作をご覧ください!
録画中 - AIエージェントが変数スワップのバグを発見して修正する様子をリアルタイムで表示します
✨ 主な機能
🌐 多言語サポート – あらゆる言語に対応するクリーンなアダプターパターン
🐍 debugpyによるPythonデバッグ – 完全なDAPプロトコルサポート
🟨 js-debugによるJavaScript (Node.js) デバッグ – VSCodeで実績のあるデバッガー
🦀 CodeLLDBによるRustデバッグ – RustおよびCargoプロジェクトのデバッグ(Linux/macOS/Windows GNUツールチェーン)
🐹 DelveによるGoデバッグ – Goプログラムの完全なDAPサポート
☕ JDIブリッジによるJavaデバッグ – JDK 21+での起動およびアタッチモード
🔷 netcoredbgによる.NET/C#デバッグ – 完全なDAPサポートによる.NETアプリケーションのデバッグ
警告: Windowsでは、完全な変数検査のためにGNUツールチェーンを使用してください。
mcp-debugger check-rust-binary <path-to-exe>を実行してビルドを確認し、詳細なガイダンスについてはWindowsでのRustデバッグを参照してください。 注: 公開されているnpmバンドルには、レジストリサイズ制限内に収めるためLinux x64のCodeLLDBランタイムが含まれています。macOSまたはWindowsでは、CODELLDB_PATH環境変数を既存のCodeLLDBインストール(VSCode拡張機能などから)に向けるか、リポジトリをクローンしてpnpm --filter @debugmcp/adapter-rust run build:adapterを実行してプラットフォームバイナリをローカルにベンダーしてください。
Windows Rustセットアップスクリプト
WindowsでGNUツールチェーンとdlltool構成を最も素早く設定するには、以下を実行してください:
pwsh scripts/setup/windows-rust-debug.ps1このスクリプトはstable-gnuツールチェーンをインストールし(rustup経由)、dlltool.exeを設定し(利用可能な場合はMSYS2/MinGWを優先、なければrustupの自己完結型コピーを使用)、バンドルされたRustの例をビルドし、デフォルトでRustのスモークテストを実行します。テストの実行をスキップするには-SkipTestsを追加してください。dlltoolのパスをユーザーのPATH/DLLTOOL変数に永続化したい場合は-UpdateUserPathを追加してください。
また、スクリプトはMSYS2ベースのMinGW-w64ツールチェーンのプロビジョニングも試みます(winget + pacman経由)。これにより、cargo +stable-gnuが完全に機能するdlltool/ld/asスタックを持つようになります。MSYS2が既にインストールされている場合は再利用され、そうでない場合はインストール手順が案内されます(または手動インストールを促す警告が表示されます)。
🧪 テスト用モックアダプター – 外部依存関係なしでテスト可能
🔌 STDIOおよびSSEトランスポートモード – あらゆるMCPクライアントで動作
📦 ランタイム依存ゼロ – esbuild + tsupによる自己完結型バンドル
⚡ npx対応 –
npx @debugmcp/mcp-debuggerで直接実行可能(インストール不要)📊 1266以上のテストを通過 – 実戦で鍛えられたエンドツーエンドテスト
🐳 Dockerおよびnpmパッケージ – どこにでもデプロイ可能
🤖 AIエージェント向けに構築 – 解析が容易な構造化JSONレスポンス
🛡️ パス検証 – 存在しないファイルによるクラッシュを防止
📝 AI対応の行コンテキスト – コードコンテキストに基づいたインテリジェントなブレークポイント配置
🚀 クイックスタート
MCPクライアント(Claude Desktopなど)の場合
MCP設定構成に追加してください:
{
"mcpServers": {
"mcp-debugger": {
"command": "node",
"args": ["C:/path/to/mcp-debugger/dist/index.js", "stdio", "--log-level", "debug", "--log-file", "C:/path/to/logs/debug-mcp-server.log"],
"disabled": false,
"autoApprove": ["create_debug_session", "set_breakpoint", "get_variables"]
}
}
}Claude Code CLIの場合
Claude Codeユーザー向けに、自動インストールスクリプトを提供しています:
前提条件: インストールスクリプトを実行する前に、Claude CLIがインストールされ、PATH上で利用可能である必要があります。インストール手順についてはClaude Codeドキュメントを参照してください。
# Clone the repository
git clone https://github.com/debugmcp/mcp-debugger.git
cd mcp-debugger
# Run the installation script
./scripts/install-claude-mcp.sh
# Verify the connection (use 'claude mcp list' if claude is on your PATH)
claude mcp list重要: コンソール出力がJSON-RPCプロトコルを破損させないように、stdio引数が必要です。詳細なセットアップとトラブルシューティングについてはCLAUDE.mdを参照してください。
Dockerの使用
docker run -v $(pwd):/workspace debugmcp/mcp-debugger:latest⚠️ DockerイメージにはPython、JavaScript、Go、Java、.NETアダプターが含まれています。Rustデバッグには、アダプターがツールチェーンの隣で実行されるローカル、SSE、またはパックされたデプロイメントが必要です。注: アダプターは実行時に動的にロードされます。ツールチェーンがインストールされ検出されたもののみが、
list_supported_languagesによって利用可能として報告されます。
npmの使用
npm install -g @debugmcp/mcp-debugger
mcp-debugger --helpまたは、インストールせずにnpx経由で使用してください:
npx @debugmcp/mcp-debugger --help📸 スクリーンショット: MCP統合の動作
このスクリーンショットは、AIエージェントとデバッガーの間で流れるツール呼び出しとJSONレスポンスによるリアルタイムのMCPプロトコル通信を示します。
📚 仕組み
mcp-debuggerは、デバッグ操作を構造化されたJSONパラメーターで呼び出せるMCPツールとして公開します:
// Tool: create_debug_session
// Request:
{
"language": "python", // or "javascript", "rust", "go", "java", "dotnet", or "mock" for testing
"name": "My Debug Session"
}
// Response:
{
"success": true,
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"message": "Created python debug session: My Debug Session"
}🛠️ 利用可能なツール
ツール | 説明 | ステータス |
| 新しいデバッグセッションを作成 | ✅ 実装済み |
| すべてのアクティブなセッションを一覧表示 | ✅ 実装済み |
| 利用可能な言語アダプターを表示 | ✅ 実装済み |
| ファイルにブレークポイントを設定 | ✅ 実装済み |
| スクリプトのデバッグを開始 | ✅ 実装済み |
| 実行中のプロセスにデバッガーをアタッチ | ✅ 実装済み |
| プロセスからデバッガーをデタッチ | ✅ 実装済み |
| 現在のスタックトレースを取得 | ✅ 実装済み |
| デバッグセッション内の全スレッドを一覧表示 | ✅ 実装済み |
| フレームの変数スコープを取得 | ✅ 実装済み |
| スコープ内の変数を取得 | ✅ 実装済み |
| 現在のフレームのローカル変数を取得 | ✅ 実装済み |
| 現在の行をステップオーバー | ✅ 実装済み |
| 関数内にステップイン | ✅ 実装済み |
| 関数からステップアウト | ✅ 実装済み |
| 実行を継続 | ✅ 実装済み |
| 実行を一時停止 | ✅ 実装済み |
| デバッグコンテキストで式を評価 | ✅ 実装済み |
| ソースコードコンテキストを取得 | ✅ 実装済み |
| セッションを終了 | ✅ 実装済み |
| 実行中のJVMにJavaクラスの変更をホットスワップ(Javaのみ) | ✅ 実装済み |
🏗️ アーキテクチャ: 動的アダプターロード
バージョン0.10.0では、言語に依存しないコア機能と言語固有の実装を分離するクリーンなアダプターパターンが導入されました:
┌─────────────┐ ┌────────────────┐ ┌──────────────┐ ┌─────────────────┐
│ MCP Client │────▶│ DebugMcpServer │────▶│SessionManager│────▶│ AdapterRegistry │
└─────────────┘ └────────────────┘ └──────────────┘ └─────────────────┘
│ │
▼ ▼
┌──────────────┐ ┌─────────────────┐
│ ProxyManager │◀─────│ Language Adapter│
└──────────────┘ └─────────────────┘
│
┌──────────────┴──────────────────────────────────────────┐
│ │
┌───────────┼───────────┬───────────┬───────────┬───────────┐ │
│ │ │ │ │ │ │
┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐
│Python ││JavaScript││Rust ││Go ││Java ││Dotnet ││Mock │
│Adapter ││Adapter ││Adapter ││Adapter ││Adapter ││Adapter ││Adapter │
└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘└──────���───┘言語サポートの追加
お気に入りの言語のデバッグサポートを追加したいですか?アダプター開発ガイドをご覧ください!
💡 例: Pythonコードのデバッグ
完全なデバッグセッションの例を以下に示します:
# buggy_swap.py
def swap_variables(a, b):
a = b # Bug: loses original value of 'a'
b = a # Bug: 'b' gets the new value of 'a'
return a, bステップ 1: デバッグセッションの作成
// Tool: create_debug_session
// Request:
{
"language": "python",
"name": "Swap Bug Investigation"
}
// Response:
{
"success": true,
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"message": "Created python debug session: Swap Bug Investigation"
}ステップ 2: ブレークポイントの設定
// Tool: set_breakpoint
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"file": "buggy_swap.py",
"line": 2
}
// Response:
{
"success": true,
"breakpointId": "28e06119-619e-43c0-b029-339cec2615df",
"file": "C:\\path\\to\\buggy_swap.py",
"line": 2,
"verified": false,
"message": "Breakpoint set at C:\\path\\to\\buggy_swap.py:2"
}ステップ 3: デバッグの開始
// Tool: start_debugging
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"scriptPath": "buggy_swap.py"
}
// Response:
{
"success": true,
"state": "paused",
"message": "Debugging started for buggy_swap.py. Current state: paused",
"data": {
"message": "Debugging started for buggy_swap.py. Current state: paused",
"reason": "breakpoint"
}
}ステップ 4: 変数の検査
まず、スコープを取得します:
// Tool: get_scopes
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"frameId": 3
}
// Response:
{
"success": true,
"scopes": [
{
"name": "Locals",
"variablesReference": 5,
"expensive": false,
"presentationHint": "locals",
"source": {}
},
{
"name": "Globals",
"variablesReference": 6,
"expensive": false,
"source": {}
}
]
}次に、ローカル変数を取得します:
// Tool: get_variables
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"scope": 5
}
// Response:
{
"success": true,
"variables": [
{"name": "a", "value": "10", "type": "int", "variablesReference": 0, "expandable": false},
{"name": "b", "value": "20", "type": "int", "variablesReference": 0, "expandable": false}
],
"count": 2,
"variablesReference": 5
}📖 ドキュメント
📘 ツールリファレンス – 完全なAPIドキュメント
🚦 入門ガイド – 初回セットアップ
🏗️ アーキテクチャ概要 – 多言語設計
🔧 アダプター開発 – 新しい言語の追加
🔌 動的ロードアーキテクチャ – 実行時検出、遅延ロード、キャッシュ
🧩 アダプターAPIリファレンス – アダプター、ファクトリ、ローダー、レジストリの契約
🔄 移行ガイド – v0.15.0へのアップグレード(動的ロード)
🐍 Pythonデバッグガイド – Python固有の機能
🟨 JavaScriptデバッグガイド – JavaScript/TypeScript機能
🐹 Goデバッグガイド – DelveによるGoデバッグ
☕ Javaデバッグガイド – JDIブリッジによるJavaデバッグ
WindowsでのRustデバッグ - ツールチェーンの要件とトラブルシューティング
🔧 トラブルシューティング – 一般的な問題と解決策
🤝 貢献
貢献を歓迎します!ガイドラインについてはCONTRIBUTING.mdを参照してください。
# Development setup
git clone https://github.com/debugmcp/mcp-debugger.git
cd mcp-debugger
# Install dependencies and vendor debug adapters
pnpm install
# All debug adapters (JavaScript js-debug, Rust CodeLLDB) are automatically downloaded
# Build the project
pnpm build
# Run tests
pnpm test
# Check adapter vendoring status
pnpm vendor:status
# Force re-vendor all adapters (if needed)
pnpm vendor:forceデバッグアダプターのベンダー化
プロジェクトはpnpm install中にデバッグアダプターを自動的にベンダー化します:
JavaScript: GitHubリリースからMicrosoftのjs-debugをダウンロード
Rust: 現在のプラットフォーム用のCodeLLDBバイナリをダウンロード
CI環境: ベンダー化をスキップするには
SKIP_ADAPTER_VENDOR=trueを設定してください
アダプターを手動で管理するには:
# Check current vendoring status
pnpm vendor:status
# Re-vendor all adapters
pnpm vendor
# Clean and re-vendor (force)
pnpm vendor:force
# Clean vendor directories only
pnpm clean:vendorコンテナテストのローカル実行
GitHub Actionsワークフローをローカルで実行するためにActを使用しています:
# Build the Docker image first
docker build -t mcp-debugger:local .
# Run tests with Act (use WSL2 on Windows)
act -j build-and-test --matrix os:ubuntu-latest詳細なテスト手順についてはtests/README.mdを参照してください。
📊 プロジェクトステータス
✅ 本番環境対応: 6つの言語アダプターと洗練された多言語配布を備えたv0.19.0
✅ アダプターパターンによるクリーンなアーキテクチャ
✅ JavaScript/Node.js: js-debugによる完全なデバッグループ
✅ Go: Delve DAPによる完全なデバッグサポート
✅ Java: JDIブリッジによる起動およびアタッチモード
🦀 Rust: Linux/macOS/Windowsで完全サポート(WindowsはGNUツールチェーンが必要。MSVCはCodeLLDBでサポートされていません)
📈 活発な開発: 定期的な更新と改善
📄 ライセンス
MITライセンス - 詳細についてはLICENSEを参照してください。
👥 貢献者
@swinyx — Goアダプター (Delve)
@roofpig95008 — Javaアダプター (JDIブリッジ)
🙏 謝辞
以下を使用して構築されました:
Model Context Protocol (Anthropic)
Debug Adapter Protocol (Microsoft)
debugpy (Pythonデバッグ用)
AIに開発者のようなデバッグ能力を – どんな言語でも! 🎯
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/debugmcp/mcp-debugger'
If you have feedback or need assistance with the MCP directory API, please join our Discord server