dap-mcp について
dap-mcp は、Debug Adapter Protocol(DAP)のセッションを管理する MCP サーバーです。デバッガーの操作を MCP ツールとして公開し、LLM を活用したデバッグを行いたい開発者を対象としています。
主な機能
- 01標準の DAP を通じたデバッガーとの連携
- 02ブレークポイントの設定、一覧表示、削除
- 03実行制御:続行、ステップイン、ステップアウト、ステップオーバー
- 04式の評価とスタックフレームの切り替え
- 05JSON 設定によるデバッガーとソースディレクトリの指定
活用シーン
- 01LLM にブレークポイントを設定させ、コードを段階的に実行させる
- 02実行時の変数や式の値を確認する
- 03debugpy や lldb を単一の MCP インターフェースから利用する
MCP 対応
dap-mcp は MCP サーバーとして動作し、launch、set_breakpoint、evaluate などのデバッグ操作をツールとして MCP クライアントに公開します。結果は XML 形式で返されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
dap-mcp
dap-mcp は、Debug Adapter Protocol(DAP)セッションの管理に特化した Model Context Protocol(MCP) の実装です。MCP は、大規模言語モデルのコンテキストウィンドウを最適化して拡張するための標準化されたフレームワークを提供します。このプロジェクトでは、デバッグのワークフローを強化し、効率化するために MCP を使用しています。
機能
- Debug Adapter Protocol の統合: 標準化されたプロトコルを使ってデバッガーと対話します。
- MCP フレームワーク: MCP を活用してコンテキストを最適化し、デバッグのワークフローを強化します。
- 豊富なデバッグツール: ブレークポイントの設定、一覧表示、削除、実行の制御(続行、ステップイン/ステップアウト/次の行へ進む)、式の評価、スタックフレームの切り替え、ソースコードの表示ができます。
- 柔軟な設定: JSON 設定ファイルを使って、デバッガーの設定、ソースディレクトリ、その他のパラメーターをカスタマイズできます。
インストール
前提条件
- Python 3.10 以降
- uv(任意。サーバーの実行に使用)
サーバーのインストールと実行
dap-mcp とその依存関係をインストールします:
pip install dap-mcp
python -m dap_mcp --config config.json
# Or, if you have uv installed
uvx dap-mcp@latest --config config.json
設定
このプロジェクトでは、デバッガーの設定とソースディレクトリを指定するために JSON 設定ファイル(例:.config.json)を使用します。設定例:
{
"type": "debugpy",
"debuggerPath": "/path/to/python/with/debugpy",
"debuggerArgs": [
"-m",
"debugpy.adapter"
],
// source directories for resolving file paths
// if you always use absolute paths, you can omit this
"sourceDirs": [
"/path/to/source/code"
],
// debugger-specific settings start here
// configurations for debugpy can be found at
// https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings
// you can use "program" instead of "module" to specify the program to debug
"module": "pytest",
// the python executable to use to run the debuggee
"python": ["/path/to/python"],
"cwd": "/path/to/working/directory"
}
この設定では、デバッガーに次の情報を伝えます:
- デバッガー実行ファイルのパスとその引数。
- ブレークポイント操作時のファイルパス解決に使用するソースディレクトリ。
- デバッグ対象を起動するために必要なその他の設定(モジュール、作業ディレクトリ、インタープリターのパスなど)。
利用可能なデバッガーの種類
| 種類 | パスの例 | 引数の例 |
|---|---|---|
| debugpy | /usr/bin/python3 | ["-m", "debugpy.adapter"] |
| lldb | /usr/bin/lldb-dap | [] |
利用可能なツール
このプロジェクトでは、MCP フレームワーク経由で呼び出せる複数のツールを公開しています:
- launch: デバッグ対象のプログラムを起動します。
- set_breakpoint: 指定したファイルと行にブレークポイントを設定します(条件は任意)。
- remove_breakpoint: 指定したファイルと行からブレークポイントを削除します。
- list_all_breakpoints: デバッガーで現在設定されているすべてのブレークポイントを一覧表示します。
- continue_execution: ブレークポイントに到達した後、プログラムの実行を続行します。
- step_in: 関数呼び出しの中にステップインします。
- step_out: 現在の関数からステップアウトします。
- next: 次のコード行までステップオーバーします。
- evaluate: 現在のデバッグコンテキストで式を評価します。
- change_frame: 別のスタックフレームに切り替えます。
- view_file_around_line: 指定した行の前後のソースコードを表示します(ファイルが指定されていない場合は、最後に指定したファイルを使用します)。
- terminate: デバッグセッションを終了します。
これらのツールは、MCP クライアントとの統合に向けて、XML 形式で出力します。
他の DAP サーバーへの拡張
追加の DAP サーバーをサポートするには、dap_mcp/config.py ファイルに DAP 固有の設定クラスを追加するだけです。すべての DAP 設定は、基底クラスである DAPConfig を継承します。新しいサブクラスでは、次のことを行ってください:
- 識別子として機能する一意の
type値(Literalを使用)を定義します。 - 対象のデバッガーに固有のフィールドや設定を追加します。
たとえば、「mydap」という仮想の DAP サーバーをサポートするには、次のように追加します:
class MyDAP(DAPConfig):
type: Literal["mydap"]
# Add any additional settings for MyDAP here
customSetting: Optional[str] = Field(
None, description="A custom setting for MyDAP."
)
新しい設定クラスを作成したら、新しいクラスを含めるように、デバッガー固有の設定に使用するユニオン型を更新します。たとえば:
DebuggerSpecificConfig = Annotated[Union[DebugPy, MyDAP], Field(..., discriminator="type")]
これで、"type": "mydap" を含む設定 JSON を指定すると、新しい MyDAP クラスを使って解析および検証され、DAP サーバー拡張が完全に統合されます。
貢献
貢献を歓迎します!貢献するには:
- リポジトリをフォークします。
- 機能追加またはバグ修正用の新しいブランチを作成します。
- テストを作成し、すべてのチェックに合格することを確認します。
- プルリクエストを送信します。
コーディングガイドラインに従い、変更に適切なテストを含めてください。
ライセンス
このプロジェクトは AGPL-3.0 License の下でライセンスされています。詳細については、LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。