Go Delve Debugger MCP Server について
Go Delve Debugger MCP サーバーは Delve デバッガーを LLM に公開し、AI アシスタントが Go プログラムのデバッグセッションを開始、制御、検査できるようにします。AI アシスタントに Go アプリケーションのデバッグを支援させたい開発者に向けたもので、コマンドラインから起動し SSE で接続します。
主な機能
- 01デバッグセッションの開始、終了、一覧表示
- 02ブレークポイントの設定と実行制御
- 03ステップオーバー、ステップイン、ステップアウト
- 04式の評価と変数・スタックトレースの確認
- 05複数のデバッグセッションの同時管理
活用シーン
- 01AI アシスタントによる Go プログラムのエラーの段階的な追跡
- 02デバッグセッション中の変数値と呼び出しスタックの確認
MCP 対応
start_debug、set_breakpoint、continue、evaluate などのツールを、SSE エンドポイント経由で MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Go Delve デバッガー MCP サーバー
LLM が Delve Go デバッガーを操作できるようにする MCP サーバーです。
説明
このプロジェクトは、Delve Go デバッガーと連携し、AI アシスタントが Go アプリケーションをデバッグできるようにする Model Context Protocol(MCP) サーバーを実装します。このサーバーは、LLM がデバッグセッションを開始、制御、操作するための一連のツールを公開します。
動作するサンプルは EXAMPLE.md で確認できます。
機能
- Go プログラムのデバッグセッションを開始
- コードにブレークポイントを設定
- コードをステップ実行(次へ、ステップイン、ステップアウト)
- デバッグセッションのコンテキストで式を評価
- 変数とスタックトレースを調査
- 複数のデバッグセッションを管理
インストール
前提条件
- Go 1.21 以降
- Delve デバッガーがインストールされていること(
go install github.com/go-delve/delve/cmd/dlv@latest)
インストール
go install github.com/xhd2015/dlv-mcp/cmd/dlv-mcp@latest
使い方
MCP サーバーを起動します。
dlv-mcp --listen :9097
その後、Cursor または任意の MCP クライアントで、MCP サーバーを http://localhost:9097/sse に設定します。
MCP サーバーの調査
bunx @modelcontextprotocol/inspector dlv-mcp
利用可能なツール
デバッグセッションの管理
-
start_debug:新しいデバッグセッションを開始しますprogram:デバッグする Go プログラムへのパスargs:プログラムのコマンドライン引数(任意)mode:デバッグモード(debug、test、execのいずれか。デフォルト:debug)
-
terminate_debug:デバッグセッションを終了しますsession_id:終了するデバッグセッションの ID
-
list_debug_sessions:アクティブなデバッグセッションを一覧表示します
ブレークポイントの管理
set_breakpoint:デバッグセッションにブレークポイントを設定しますsession_id:デバッグセッションの IDfile:ブレークポイントを設定するソースファイル(絶対パス)line:ブレークポイントを設定する行番号
実行制御
-
continue:デバッグセッションの実行を続行しますsession_id:デバッグセッションの ID
-
next:デバッグセッションで現在の行をステップオーバーしますsession_id:デバッグセッションの ID
-
step_in:デバッグセッションで関数にステップインしますsession_id:デバッグセッションの ID
-
step_out:デバッグセッションで関数からステップアウトしますsession_id:デバッグセッションの ID
調査
evaluate:デバッグセッションで式を評価しますsession_id:デバッグセッションの IDexpression:評価する式frame_id:スタックフレーム ID(任意。デフォルト:0)
ワークフローの例
-
デバッグセッションを開始します。
start_debug program=/path/to/program.go -
ブレークポイントを設定します。
set_breakpoint session_id=session-123456 file=/path/to/program.go line=15 -
ブレークポイントまで実行を続行します。
continue session_id=session-123456 -
式を評価します。
evaluate session_id=session-123456 expression="myVariable" -
1 行ステップオーバーします。
next session_id=session-123456 -
セッションを終了します。
terminate_debug session_id=session-123456
アーキテクチャ
このサーバーは、次のコンポーネントを使用して構築されています。
- MCP サーバーレイヤー:mark3labs/mcp-go を使用して Model Context Protocol を実装
- DAP クライアントレイヤー:Delve の DAP サーバーと通信
- セッション管理:デバッグセッションを維持および管理
MCP サーバーの調査
bunx @modelcontextprotocol/inspector go run ./cmd/dlv-mcp
デモクライアントの使用
デバッガー MCP サーバーをプログラムから使用する方法を紹介するデモクライアントを用意しました。デモでは次の処理を行います。
- MCP サーバーを起動
./testdata/hello.goのデバッグセッションを開始- ブレークポイントの設定とデバッグコマンドの実行を試行
- セッションとサーバーを適切に終了
デモを実行するには、次のコマンドを使用します。
go run ./demo/main.go
デモクライアントでは、次の方法を紹介します。
- JSON-RPC を使用した MCP サーバーの起動と通信
- 正しい形式でのツール呼び出しの送信
- レスポンスの解析と処理
- エラーへの適切な対処
実装の詳細については、demo/main.go と demo/README.md をご覧ください。
ライセンス
MIT ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。