mcpField
M
mcp-debugger

mcp-debugger

ローカル
debugmcp.io開発ツール184今日更新

mcp-debugger について

mcp-debuggerは、AIエージェントが構造化された呼び出しで実行中のプログラムをデバッグできる、ヘッドレスMCPサーバーです。10言語に対応し、IDEのない環境からのリモート接続も可能です。

主な機能

  1. 0110言語でのステップ実行
  2. 02ブレークポイントの設定と管理
  3. 03変数の確認と式の評価
  4. 04リモートまたはプロセスIDで接続
  5. 05プログラム出力をMCPリソース化
  6. 06結果内の機密情報を標準でマスキング

活用シーン

  1. 01CIで失敗したテストのデバッグ
  2. 02コンテナやKubernetes上のサービス調査
  3. 03エージェントからリモートプロセスへ接続
  4. 04クラッシュ状態と変数の確認

MCP 対応

デバッグ操作をMCPツールとして公開し、プログラムの記録を購読可能なMCPリソースとして提供します。stdioとStreamable HTTPに対応し、接続手順とdebugging-workflowプロンプトも備えています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"debugmcp-mcp-debugger": {
"command": "npx",
"args": [
"-y",
"@debugmcp/mcp-debugger"
]
}
}
}
起動コマンドnpx -y @debugmcp/mcp-debugger

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@debugmcp/mcp-debugger0.25.1
ocidocker.io/debugmcp/mcp-debugger:0.25.1

ツール

28

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
hoststringいいえリモートデバッグで接続するホスト(任意。指定するとアタッチモードになります)
namestringいいえ任意のセッション名
portnumberいいえリモートデバッグで接続するデバッグポート(任意。指定するとアタッチモードになります)
timeoutnumberいいえアタッチモードでの接続タイムアウト(ミリ秒、デフォルト:30000)
languageenumはいデバッグするプログラミング言語javascript | python | mock | ruby | go | rust | java | dotnet | cpp | cobol
stopOnEntrybooleanいいえアタッチモードのみ:attach_to_process.stopOnEntry と同じです。省略すると true になり、アタッチ後にターゲットが一時停止します(遅れて一時停止し、pending:true と報告される場合があります)。false を渡すと、実行中のサービスを停止せずにアタッチします
adapterConfigobjectいいえアタッチモードのみ:アタッチ設定に統合されるアダプター固有のアタッチ設定(attach_to_process を参照)
verifyTimeoutnumberいいえアタッチモードのみ:アタッチ後、デバッガーが少なくとも 1 つのスレッドを報告するまで待機する時間(ミリ秒)。時間切れの場合、アタッチは失敗します(デフォルト:20000、最大:600000)
executablePathstringいいえ言語実行ファイルのパス(任意。指定しない場合は自動検出されます)

詳細

mcp-debugger

MCP Debugger のロゴ — デバッグ用ブレークポイントが描かれた様式化された回路基板

MCP を介したヘッドレスなエージェント型デバッガー — AI エージェントが 10 言語の実行中プログラムをデバッグできます。

CI codecov npm version Docker Pulls License: MIT OpenSSF Scorecard OpenSSF Best Practices

🎯 概要

mcp-debugger は、ステップ実行デバッグを構造化されたツール呼び出しとして公開する Model Context Protocol(MCP)サーバーです。AI エージェントは、ブレークポイントの設定、変数の調査、式の評価、実行中プログラムのステップ実行を 10 言語で行えます。Debug Adapter Protocol(DAP)を通じて、実際の言語デバッガーを操作します。

IDE は必要ありません。 mcp-debugger は Node.js が動作するあらゆる場所で実行できます。CI ランナー、Docker コンテナー、Kubernetes ポッド、SSH サーバー、そしてクラウドのコーディングエージェントが稼働するサンドボックスでも使えます。IDE では手が届かない場所で使えるデバッガーです。

mcp-debugger と IDE に結び付いたデバッグサーバーの使い分け

Microsoft の DebugMCP は、VS Code のデバッガーを MCP 経由で公開します。エージェントが実行中の VS Code 内で動作する場合に適しています。2 つのプロジェクトでは、構造上のトレードオフが異なります。

mcp-debuggermicrosoft/DebugMCP
ヘッドレスで実行(CI、コンテナー、k8s、クラウドエージェント)✅ スタンドアロンの Node プロセス❌ 実行中の VS Code が必要
トランスポートstdio + Streamable HTTPStreamable HTTP(localhost)
配布方法npx、npm、Docker イメージVS Code Marketplace 拡張機能
IDE なしでのリモートアタッチ✅ debugpy / rdbg / JDWP、ポートフォワード経由のポッドを含む❌
セッションごとのプロセス分離✅ セッションごとに 1 つのプロキシプロセスVS Code インスタンスを共有
Java のホットスワップと Flutter のホットリロード(hot_reload)✅❌
購読可能な MCP リソースとしてのデバッグ対象出力✅❌
エージェントと並行して使う IDE 内デバッグ UX✅ 読み取り専用の IDE ミラー(expose_session) — IDE はエージェントのライブセッションに参加します✅ ネイティブ
一時停止せずに使えるログポイント(本番環境でも安全な値の監視)✅ logMessage ブレークポイント✅ VS Code 経由
コンテンツ/関数アドレス指定のブレークポイント(statement:、function:、expectedContent)✅ 編集後も有効なエージェントネイティブのアドレス指定—
シークレットのデフォルトでのマスキング✅ 変数/評価結果/出力のマスキング + 最小権限モード—
Kubernetes の一時デバッグサイドカー(ネイティブな PID 指定アタッチ)✅ kubectl debug のフロー❌
C/C++✅ CodeLLDB 経由(起動 + PID 指定アタッチ)✅ VS Code 拡張機能経由
COBOL✅ GnuCOBOL + CodeLLDB 経由(起動 + PID 指定アタッチ、COBOL に合わせた変数表示)—
Dart/Flutter✅ SDK 独自のデバッグアダプター経由(起動 + VM サービス URI によるアタッチ。現在は Dart に対応し、Flutter ランナーは次のマイルストーンで組み込み、提供予定です)—
PHP❌✅ VS Code 拡張機能経由
言語Python、JS/TS、Ruby、Rust、Go、Java、.NET、C/C++、COBOL、Dart/FlutterPython、JS/TS、Ruby、Rust、Go、Java、.NET、C/C++、PHP

エージェントがターミナル、パイプライン、クラウドサンドボックスで動作する場合、または別のマシン上のプロセスへのアタッチが必要な場合は、mcp-debugger が適しています。

🆕 v0.25.0 — COBOL デバッグに対応しました(GnuCOBOL + CodeLLDB、COBOL に合わせた変数表示、PERFORM を考慮したステップ実行、段落ブレークポイント)。また、CodeLLDB がプラットフォームごとのパッケージとして提供されるようになり、npm がインストールするすべてのプラットフォームで Rust と C/C++ がすぐに動作します。さらに、mcp-debugger doctor、Kubernetes のデバッグ手順、Host/Origin チェックで 127.0.0.1 に固定された HTTP トランスポート、実行終了時の状況を示す起動応答、Go と Docker JavaScript の終了コード、より軽量な起動も新たに追加されました。リリース履歴の全容は変更履歴をご覧ください。

✨ 主な機能

  • 🌐 多言語サポート – どの言語にも対応できるクリーンなアダプターパターン
  • 🐍 debugpy による Python デバッグ – DAP プロトコルを完全にサポート
  • 💎 rdbg による Ruby デバッグ – コンテナや Kubernetes Pod へのリモートアタッチを含む、起動およびアタッチのワークフロー
  • 🟨 js-debug による JavaScript(Node.js)デバッグ – VSCode の実績あるデバッガー
  • 🦀 CodeLLDB による Rust デバッグ – Rust および Cargo プロジェクトをデバッグ(Linux/macOS 対応。Windows では GNU ツールチェーンが必要です。Windows での Rustを参照してください)
  • 🐹 Delve による Go デバッグ – Go プログラムの DAP を完全にサポート
  • ☕ JDI ブリッジによる Java デバッグ – JDK 21 以降で起動モードとアタッチモードに対応
  • 🔷 netcoredbg による .NET/C# デバッグ – DAP を完全にサポートし、.NET アプリケーションをデバッグ
  • ⚙️ CodeLLDB による C/C++ デバッグ – ビルド済みバイナリまたは単独のソースファイル(自動コンパイル)を起動し、PID でアタッチできます。コアダンプと gdbserver/rr ターゲットは設定のパススルーで対応します
  • 🧮 GnuCOBOL + CodeLLDB による COBOL デバッグ – .cob/.cbl ソース(cobc で自動コンパイル)またはビルド済み実行ファイルを起動し、PID でアタッチできます。WORKING-STORAGE / LOCAL-STORAGE / LINKAGE スコープに対応し、DISPLAY、COMP、COMP-3、88 レベルの値をデコードします。コピーブック内のブレークポイント、文単位のステップ実行、libcob ランタイムエラー(S0C7/SSRANGE 相当)発生時の一時停止に対応しており、メインフレームから GnuCOBOL への移行向けに設計されています(ガイド)
  • 🐦 SDK 独自のデバッグアダプターによる Dart/Flutter デバッグ – Dart プログラムと package:test ファイル(dart debug_adapter)、または Flutter アプリとテスト(flutter debug-adapter)を起動します。pubspec.yaml とプログラムパスからランナーを自動検出します。サービス URI またはサービス情報ファイルを指定して実行中の VM にアタッチできます。条件付きブレークポイント、ログポイント、Unhandled/All 例外フィルター、noDebug に対応しています。依存物の同梱はありません。マシン上の Dart または Flutter SDK がデバッガーです。現在は Dart に対応しています。Flutter ランナーは接続済みで、スパイク開発で Windows デスクトップと Android エミュレーターを使って検証済みであり、次のマイルストーンでリリース予定です(ガイド)
  • 🧪 テスト用モックアダプター – 外部依存なしでテストできます
  • 🛰️ IDE 外からのアタッチとリモートアタッチ – ホスト/ポート経由で、別のマシン上またはコンテナ内のプロセスにアタッチできます(Python は debugpy、Ruby は rdbg、JavaScript は V8 インスペクター、Java は JDWP、Dart/Flutter は VM サービス URI を使用)。ソースパスマッピングにも対応しています。また、ネイティブコード(C/C++、COBOL)やローカルの Node.js プロセスには PID でアタッチできます。ローカルの Node.js プロセスでは、mcp-debugger がインスペクターを開きます(JavaScript)。Python と Ruby のアタッチは 直接接続 方式です。デバッグエンジンはすでにターゲット内で実行されているため、ローカルに Python や Ruby は必要ありません。JavaScript、Java、.NET、C/C++、COBOL、Dart/Flutter は代わりにローカルアダプターを起動します。そのうち、インストールするツールチェーンが必要なのは Java(JDK)、.NET(netcoredbg)、Dart/Flutter(SDK 独自のデバッグアダプターを使用)のみです。JavaScript、C/C++、COBOL のデバッグエンジンはパッケージに同梱されています。list_supported_languages は、モードごとの対応状況を理由とともに報告します
  • 🎯 編集後も維持されるブレークポイント – 内容で指定(statement: "total = sum(prices)")、シンボルで指定(function: "main")、または expectedContent で行の内容を検証できます。アンカーは restart_debugging 後も再解決され、あいまいな一致は明確に警告されます
  • 🪵 ログポイント – logMessage: "x={x}" を指定して set_breakpoint を実行すると、一時停止せずに補間した値を get_output にストリーミングします。ホットパスの値を安全に監視できます
  • 🧰 ブレークポイントのライフサイクルを完全にサポート – 実行中でも list_breakpoints / remove_breakpoint / clear_breakpoints を使用できます。restart_debugging は同じ設定で再起動し、すべてを 1 回の呼び出しで再適用します
  • 📡 バッファリングされたプログラム出力 – get_output はデバッグ対象の stdout/stderr をカーソル付きで返します。また、各セッションは購読可能な MCP リソースとしてトランスクリプトを公開します
  • 💥 クラッシュ状態のデバッグがデフォルト – 起動したセッションは、捕捉されない例外が発生すると、スタックとローカル変数を確認できる状態で一時停止します(breakOnExceptions。例外クラス/メッセージは lastStop に表示されます)
  • 🪞 読み取り専用 IDE ミラー – expose_session は、ループバック接続でトークン認証された DAP エンドポイントを開き、人間が使う IDE からエージェントの実行中セッションを操作せずに確認できるようにします
  • ☸️ Kubernetes デバッグ – インタープリター型ランタイムにはポートフォワード経由でアタッチし、ネイティブプロセスには kubectl debug --target と PID によるアタッチを使用します(手順、すぐに使えるマニフェスト)
  • 🔌 STDIO および Streamable HTTP トランスポート – すべての MCP クライアントで利用できます(従来の SSE トランスポートは非推奨です)
  • 📦 ランタイム依存ゼロ – esbuild + tsup による自己完結型バンドル
  • ⚡ npx ですぐに実行 – npx @debugmcp/mcp-debugger で直接実行でき、インストールは不要です
  • 🐳 Docker および npm パッケージ – どこにでもデプロイできます
  • 🤖 AI エージェント向けに設計 – 解析しやすい構造化 JSON 応答
  • 🔒 シークレットのマスキングがデフォルトで有効 – 認証情報とみられる値(API キー、トークン、秘密鍵)は、エージェントに届く前に、変数、評価、出力の結果でラベル付きのプレースホルダーに置き換えられます(詳細。DEBUG_MCP_NO_REDACT=1 で無効化できます)
  • 🛡️ パス検証 – 存在しないファイルによるクラッシュを防ぎます
  • 📝 AI を考慮した行コンテキスト – コードのコンテキストに基づいてブレークポイントをインテリジェントに配置します
  • ✅ 包括的なテストスイート – すべてのアダプターを対象とする単体テスト、統合テスト、エンドツーエンドテストを網羅しています(CI のステータス)

🧠 エージェントスキル

ツールはエージェントに「何ができるか」を伝え、スキルは「適切にデバッグする方法」を教えます。このリポジトリには、セッションのゴールデンパス、根本原因を突き止めるための規律(1 行ずつステップ実行するより二分探索)、アタッチ/リモート接続の手順、言語ごとの注意点を網羅したエージェントスキルが含まれています。

# Claude Code (user-level)
cp -r skills/debugging ~/.claude/skills/mcp-debugger
# Cross-agent directories (Copilot CLI and friends)
cp -r skills/debugging ~/.agents/skills/mcp-debugger

サーバーは、接続時の MCP instructions に加え、任意の MCP クライアントがリクエストできる debugging-workflow プロンプトとして、要約されたガイダンスも提供します。詳しくはskills/debugging/README.mdをご覧ください。

🎬 動作を見る

🚀 クイックスタート

要件: サーバーには Node.js 22 以降が必要です。デバッグする各言語についても、それぞれのツールチェーンをインストールする必要があります(Python と debugpy、Ruby と debug gem/rdbg、Node.js、Go と Delve、JDK 21 以降、.NET SDK、Rust ツールチェーン、C/C++ コンパイラー — g++/clang++(ソースファイルの起動時のみ必要)、COBOL ソースの起動には GnuCOBOL 3.1.2 以降、Dart/Flutter には Dart SDK — Flutter に同梱)。インストール済みのものがわからない場合は、npx @debugmcp/mcp-debugger doctor を実行すると、アダプターごとのツールチェーンのレポートを確認できます。

CodeLLDB のプラットフォームに関する注意(npx/npm でのインストール): CodeLLDB デバッグエンジンは、プラットフォームごとのオプション依存関係(@debugmcp/codelldb-win32-x64、-darwin-x64、-darwin-arm64、-linux-x64、-linux-arm64)として提供されます。npm はお使いのプラットフォームに一致するものだけをインストールするため、npm が対応するすべての環境で Rust および C/C++ のデバッグをすぐに利用できます。--omit=optional を指定してインストールする場合は、代わりに CodeLLDB のリリースのバイナリーを CODELLDB_PATH に設定するか、Docker イメージを使用してください。

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"]
    }
  }
}
Codex CLI、デスクトップ、IDE 向け

公開されている stdio サーバーを Codex CLI に登録します。

codex mcp add mcp-debugger -- npx -y @debugmcp/mcp-debugger stdio
codex mcp list

Codex はこの設定を ~/.codex/config.toml に保存します。同じ Codex ホスト上で実行している場合、ChatGPT デスクトップアプリ、Codex CLI、Codex IDE 拡張機能はこの設定を共有します。アクティブなデスクトップクライアントまたは IDE 拡張機能を再起動するか、新しい CLI セッションを開始してから、/mcp を使って mcp-debugger が接続されていることを確認してください。設定やトラブルシューティングについて詳しくは、公式の Codex MCP ドキュメントをご覧ください。

mcp-debugger 自体を開発していますか? 公開パッケージではなく、再起動可能なソース開発プロキシを使用してください。

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をご覧ください。

pi コーディングエージェント向け

pi 0.99 以降には、MCP サポートが組み込まれています。公開されている @debugmcp/mcp-debugger パッケージも pi パッケージです。インストールすると、mcp-debugger エージェントスキルと、サーバーを pi の MCP サポートに登録する拡張機能の両方が追加されます。

pi install npm:@debugmcp/mcp-debugger  # the mcp-debugger skill, and the server via pi's built-in MCP
pi list                                # shows the package

この拡張機能は、pi install がディスクに配置した CLI を実行するため、サーバーはスキルと一致し、npx によるダウンロードなしで起動します。公開設定は deferred で登録されます。pi はシステムプロンプトにデバッガーを表示し、モデルは tool_search を使って必要なツールを読み込みます。ツール名は mcp__mcp_debugger__<tool> です。/mcp にはサーバーが表示され、セッション中の公開設定を変更できます。~/.pi/agent/mcp.json に mcp-debugger エントリーがある場合、登録設定が置き換えられます。たとえば、開発プロキシ経由でソースビルドをデバッグする場合に使用できます。

スキルを含めず、サーバーのみ追加するには、pi mcp add mcp-debugger -- npx -y @debugmcp/mcp-debugger stdio を実行します。 pi 0.99 より前のバージョンには MCP サポートが組み込まれていないため、この拡張機能は何も行いません。pi をアップグレードしてください。

Docker の使用
docker run -i --rm -v $(pwd):/workspace debugmcp/mcp-debugger:latest

Docker イメージは、Python、JavaScript、Java、Rust、C/C++、COBOL、Dart をネイティブにデバッグできます(ツールチェーン(GnuCOBOL と Dart SDK を含む)と、共有のベンダー版 CodeLLDB を搭載)。さらに、モックアダプターにも対応しています。Flutter はホストのみで使用できます。イメージには Flutter SDK が含まれていません。イメージ内で Ruby がサポートされるのはアタッチのみです(アダプターには Ruby ランタイムが含まれていません。ローカルまたはリモートの任意の rdbg --open プロセスにアタッチしてください)。コンテナー内で無効になっているのは Go と .NET のみです。これらは、ローカルのツールチェーンの隣で npm/npx 経由で実行してください。コンテナー内でデバッグするホストビルドの Rust/C++ バイナリには、/workspace へのソースマップが自動導出されます。list_supported_languages はモードごとの利用可否(modes.launch / modes.attach)とその理由を返します。Docker のサポートを参照してください。

npm の使用
npm install -g @debugmcp/mcp-debugger
mcp-debugger --help

または、npx を使ってインストールせずに使用します。

npx @debugmcp/mcp-debugger --help
ネットワーク経由(Streamable HTTP)

stdio がデフォルトであり、ほとんどのクライアントで使用します。サーバーを別の場所(CI ランナー、コンテナー、Kubernetes ポッドなど)で実行する必要がある場合は、代わりにポートを指定して起動します。

mcp-debugger http --port 3001            # or: node dist/index.js http -p 3001

そして、クライアントの接続先を指定します。

{
  "mcpServers": {
    "mcp-debugger": {
      "type": "http",
      "url": "http://127.0.0.1:3001/mcp"
    }
  }
}

HTTP クライアントごとに、分離されたサーバーが割り当てられます。デバッグセッションが別のクライアントから見えることはありません。DELETE /mcp を実行せずに切断したクライアントのデバッグセッションと、一時停止中のアタッチ先は、サーバーが削除するまで残ります。SSE ストリームが切断されてから 2 分後(MCP_HTTP_STREAM_LOST_SESSION_MS)、またはストリームを一度も開いていない場合は、アイドル状態になってから 30 分後(MCP_HTTP_STALE_SESSION_MS)に削除されます。GET /health には、各セッションが保持しているものが一覧表示されます。

ポートのデフォルトは 3001 で、サーバーは 127.0.0.1 のみで待ち受けます。--bind 0.0.0.0(または MCP_HTTP_BIND=0.0.0.0)を指定すると、すべてのインターフェースで待ち受けます。この場合は、ほかのマシンから使用する名前を --allowed-host で指定してください。--bind localhost は 127.0.0.1 を意味し、指定できるのは IP アドレスのみです。同じポートの GET /health は、生存確認に応答し、listening の下にバインドされたアドレスとポートを報告します。従来の sse サブコマンドも引き続き存在しますが、非推奨です。http を使用してください。

プロセスを起動したり PID にアタッチしたりできる認証なしのエンドポイントで DNS リバインディングを防ぐため、デフォルトではループバックの Host ヘッダー(localhost、127.0.0.1、[::1])のみを受け付けます。別のマシン上のクライアントは、ポートフォワードまたは SSH トンネル(ssh -L 3001:127.0.0.1:3001 user@server を実行し、その後 http://127.0.0.1:3001/mcp に接続)経由で接続するか、--bind でインターフェースをバインドしてください。それ以外の Host には、その理由を示す 403 が返されます。サービス名を直接指定して接続する(コンテナーネットワーク上の http://mcp-debugger:3001/mcp など)には、--allowed-host mcp-debugger(複数指定可)または MCP_HTTP_ALLOWED_HOSTS=mcp-debugger(カンマ区切り)を指定してサーバーを起動します。このオプトインを使用する場合は、サーバーの前段に別のアクセス制御を設けてください。ワイルドカードは使用できません。ブラウザークライアントも同じリストに基づいて Origin がチェックされるため、クロスサイトのページからデバッガーを操作することはできません。非推奨の sse サブコマンドにも同じ許可リストが適用され、同じフラグを使用できます。

📚 仕組み

mcp-debugger は、構造化された JSON パラメーターで呼び出せるデバッグ操作を MCP ツールとして公開します。

// Tool: create_debug_session
// Request:
{
  "language": "python",  // or "ruby", "javascript", "rust", "go", "java", "dotnet", "cpp", "cobol", "dart", 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"
}

🛠️ 利用可能なツール

以下の 29 個のツールはすべて実装済みです。パラメーターとレスポンスの形式については、ツールリファレンスをご覧ください。

ツール説明ステータス
create_debug_session新しいデバッグセッションを作成します✅ 実装済み
list_debug_sessionsすべてのアクティブなセッションを一覧表示します✅ 実装済み
list_supported_languages利用可能な言語アダプターを表示します✅ 実装済み
set_breakpointファイルにブレークポイントを設定します✅ 実装済み
list_breakpoints検証済みの状態とともに、セッションのブレークポイントを一覧表示します✅ 実装済み
remove_breakpointID またはファイルと行番号を指定してブレークポイントを削除します✅ 実装済み
clear_breakpointsすべてのブレークポイントを削除します(ファイル単位での指定も可能です)✅ 実装済み
start_debuggingスクリプトのデバッグを開始します。1 回の呼び出しで失敗したテストをデバッグすることもできます(testRunner: "pytest")✅ 実装済み
restart_debugging同じ設定で再起動し、ブレークポイントを再適用します✅ 実装済み
attach_to_process実行中のプロセスにデバッガーをアタッチします✅ 実装済み
detach_from_processプロセスからデバッガーをデタッチします✅ 実装済み
expose_sessionIDE が接続して調査できるよう、読み取り専用の DAP ミラーエンドポイントを開きます✅ 実装済み
unexpose_sessionミラーエンドポイントを閉じ、IDE クライアントを切断します✅ 実装済み
get_stack_trace現在のスタックトレースを取得します✅ 実装済み
list_threadsデバッグセッション内のすべてのスレッドを一覧表示します✅ 実装済み
get_scopesフレームの変数スコープを取得します✅ 実装済み
get_variablesスコープ内の変数を取得します✅ 実装済み
get_local_variables現在のフレームのローカル変数を取得します✅ 実装済み
step_over現在の行をステップオーバーします✅ 実装済み
step_into関数の中にステップインします✅ 実装済み
step_out関数からステップアウトします✅ 実装済み
continue_execution実行を続行します✅ 実装済み
wait_for_stopセッションが次に一時停止するか終了するまで待機します✅ 実装済み
pause_execution実行中の処理を一時停止します✅ 実装済み
evaluate_expressionデバッグコンテキストで式を評価します✅ 実装済み
get_source_contextソースコードのコンテキストを取得します✅ 実装済み
get_outputキャプチャされたデバッグ対象の出力(stdout/stderr)を読み取ります✅ 実装済み
close_debug_sessionセッションを終了します✅ 実装済み
hot_reload変更されたコードを実行中のプログラムに適用し、その状態を維持します。Flutter のホットリロードや Java クラスの再定義に対応します(redefine_classes は非推奨のエイリアスです)✅ 実装済み

🏗️ アーキテクチャ:動的アダプター読み込み

バージョン 0.10.0 では、言語に依存しないコア機能と、言語固有の実装を分離する、すっきりとしたアダプターパターンが導入されました。

┌─────────────┐     ┌────────────────┐     ┌──────────────┐     ┌─────────────────┐
│ MCP Client  │────▶│ DebugMcpServer │────▶│SessionManager│────▶│ AdapterRegistry │
└─────────────┘     └────────────────┘     └──────────────┘     └─────────────────┘
                            │                      │
                            ▼                      ▼
                    ┌──────────────┐      ┌─────────────────┐
                    │ ProxyManager │◀─────│ Language Adapter│
                    └──────────────┘      └─────────────────┘
                                                  │
              ┌───────────┬───────────┬───────────┼───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐
              │           │           │           │           │           │           │           │           │           │           │
        ┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐┌─────▼────┐
        │Python    ││Ruby      ││JavaScript││Rust      ││Go        ││Java      ││.NET      ││C/C++     ││COBOL     ││Dart      ││Mock      │
        │Adapter   ││Adapter   ││Adapter   ││Adapter   ││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": "C:\\path\\to\\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": "C:\\path\\to\\buggy_swap.py"
}
// Response:
{
  "success": true,
  "state": "paused",
  "message": "Debugging started for C:\\path\\to\\buggy_swap.py. Current state: paused",
  "data": {
    "message": "Debugging started for C:\\path\\to\\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
}

📖 ドキュメント

🤝 コントリビューション

コントリビューションを歓迎します!ガイドラインについては、CONTRIBUTING.md をご覧ください。

# Development setup
git clone https://github.com/debugmcp/mcp-debugger.git
cd mcp-debugger

# Install dependencies and vendor debug adapters
pnpm install
# Vendored debug engines (Microsoft's js-debug; CodeLLDB, shared by Rust, C/C++ and COBOL)
# are downloaded automatically and verified against committed SHA-256 digest pins

# 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、C/C++、COBOL:現在のプラットフォーム向けに CodeLLDB の共有コピーを1つダウンロードします(packages/codelldb-common)
  • 整合性:すべてのダウンロードは、各パッケージの vendor-manifest.json に記載された固定済み SHA-256 ダイジェストと照合して検証されます。不一致があるとビルドは失敗します
  • 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 を参照してください。

📊 プロジェクトのステータス

  • ✅ 本番環境対応:10言語のアダプター、29個のツール、洗練された多言語配布
  • ✅ 動的アダプターパターンを採用したクリーンなアーキテクチャ
  • ✅ Python · Ruby · JavaScript/TypeScript · Go · Java · .NET/C#:ステップ実行デバッグに完全対応
  • 🦀 Rust:Linux/macOS/Windows で完全にサポート(Windows では GNU ツールチェーンが必要です。CodeLLDB は MSVC をサポートしていません)
  • ⚙️ C/C++:CodeLLDB によるステップ実行デバッグに完全対応(起動+PID によるアタッチ。Windows では MinGW/DWARF を推奨します。MSVC PDB の忠実度は部分的です)
  • 🧮 COBOL:GnuCOBOL と CodeLLDB によるステップ実行デバッグ(起動+PID によるアタッチ。Linux および Windows/MSYS2 で GnuCOBOL 3.1.2/3.2 を検証済み。PERFORM を考慮したステップ実行、段落ブレークポイント、{WS-NAME} ログポイントに対応)
  • 🐦 Dart/Flutter:SDK 独自のデバッグアダプター(dart debug_adapter、flutter debug-adapter)によるステップ実行デバッグ(起動+VM サービス URI によるアタッチ)。現在は Dart に対応しています。Flutter ランナーは接続済みで、スパイクでは Windows デスクトップと Android エミュレーターで計測済みです。次のマイルストーンでリリース予定です
  • 🟢 ランタイム:Node.js 22+
  • 📈 積極的に開発中:定期的な更新と改善を行っています。1.0 までの道のりについてはロードマップをご覧ください

🏛️ メンテナンス担当者

mcp-debugger は Sycamore LLC が管理し、John Franklin(@debugmcpdev)が主導しています。このプロジェクトでは、人間が責任を担うエージェント優先の開発モデルを採用しています。コードの大部分は AI エージェントが作成し、すべてのマージ、リリース、セキュリティに関する判断は人間のメンテナーが行います。MAINTAINERS.md、GOVERNANCE.md、SUPPORT.md(商用サポートを含む)をご覧ください。

サプライチェーン対策:固定された CI アクション、OIDC による信頼された公開、すべての npm パッケージに付与される sigstore 来歴情報、リリースに添付される SBOM、そして継続的に維持している OpenSSF Scorecard スコア。詳細は SUPPLY-CHAIN-SECURITY.md をご覧ください。脆弱性は SECURITY.md に記載された方法で報告してください。

📄 ライセンス

MIT ライセンスです。詳細は LICENSE をご覧ください。

👥 コントリビューター

  • @Poyraxx — Ruby アダプター(rdbg)
  • @swinyx — Go アダプター(Delve)
  • @roofpig95008 — Java アダプター(JDI ブリッジ)

🙏 謝辞

以下を使用して構築しています:


あらゆる言語で、AI エージェントに本格的なデバッガーを提供しましょう。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。