AI agentでのコードデバッグ
最近は、Claude CodeやGitHub CopilotなどのAIエージェントでコーディングを行う人が多いでしょう。
また、バグが含まれているコードをAIエージェントに修正させることも一般的です。
ただ、AIエージェントにコードのデバッグをさせる時、以下のようなことはありませんか?
- デバッグ用の
print文を書いてくる - 無駄なエラーハンドリングを追加してくる
- すでにあるテストコードを別で新たに作成してくる
結果的に、直ったとしても追加された分は戻してくれないので、コードがどんどん汚くなってしまいます。
しかも、一度全て実行されないと結果がわからないため、時間もかかります。
VSCodeのデバッグ機能のようなものを使ってほしい
VSCodeには強力なデバッグ機能があります。(もちろんVSCodeやそもそもエディタに限りませんが)
- ブレークポイントを設定して、そこまでコードを実行する
- 変数の中身を確認する
- ステップ実行で1行ずつコードを実行する
これらの機能を使うことで、コードのどこに問題があるのかを特定しやすくなっています。
これを、AIエージェントにも同じように使ってほしいのです。
しかし、現状のAIエージェントにはコードの途中まで実行させるという機能はありません。
デバッグ自体はCLIで可能なので、頑張ればAIエージェントにもデバッグさせることは可能だと思います。
しかし、私はできませんでした...
また、コマンド入力のやり取りになってしまうと、AIエージェントはターミナル内ターミナルに干渉できないため、結局デバッグができません。
MCPを使う
MCPはAIエージェントが使えるツールのようなもので、AIエージェントがMCPを用いて別のツールを操作できます。
デバッガツールをMCPとして用意し、AIエージェントにそのデバッガツールを使わせることで、AIエージェントにコードの途中まで実行させたり、変数の中身を確認させたりできます。
現在探した中で、コードのデバッガMCPを作成していたのは以下のリポジトリです。
汎用(複数の言語)
- DAP(Debug Adapter Protocol)を用いているため、複数の言語に対応可能
- uvを使用
- 現状(2025/10/30)ではPythonのみ対応
- ただし、拡張可能な設計になっている
- pbdなどのコマンドを直接入れているため、MCPサーバ側でコマンドのハンドリングをしていないという点がある
Node.js用
python用
実際に使ってみる
今回は、以下のMCPを使ってみました。
MCPの導入方法はREADMEに詳しく書かれていますが、簡単に説明します。
今回はVSCodeに設定して、github copilotで動かすことを目的とします。
nodeのコマンドを使用
mcp.jsonを以下のように設定します。
{
"servers": {
"mcp-debugger": {
"command": "node",
"args": [
"/Users/user/.config/mcp/servers/mcp-debugger/dist/index.js",
"--log-level",
"debug",
"--log-file",
"/Users/user/.config/mcp/servers/mcp-debugger/logs/debug-mcp-server.log"
],
"disabled": false,
"autoApprove": [
"create_debug_session",
"set_breakpoint",
"get_variables"
]
},
}
}
debugpyというPythonのデバッガを使用するため、事前にpip install debugpyでインストールしておく必要があります。
これは、現在のpythonコードのある環境にインストールするだけではなく、このMCPサーバが動作する環境にもインストールする必要があります。
- MCPサーバが起動
- セッションを作成するときに、debugpyを使用
このときは、現在のディレクトリのpython環境ではないので、起動したときに指定しているpython環境にdebugpyがインストールされている必要があります。
dockerの使用
dockerで動作させると環境の問題などがないかなと思ったので、dockerの方法で今回は動かしました。
{
"servers": {
"mcp-debugger": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"/Users/user/Documents/tmp:/workspace",
"debugmcp/mcp-debugger:latest",
"--name",
"mcp-debugger"
],
"disabled": false,
"autoApprove": [
"create_debug_session",
"set_breakpoint",
"get_variables"
]
},
}
}
dockerで動作させる場合は、デバッグするpythonコードをdockerコンテナ内から見える場所に置く(マウントする)必要があります。
つまり、mcp.jsonの-vオプションで指定する必要があります。
マウントをするとdockerコンテナ内では、以下のようなパスになります。
pythonコードのあるディレクトリ ---> dockerコンテナ内のパス
"/Users/user/Documents/tmp" ---> "/workspace"
そのため、AIエージェントにコードのパスを伝えるときは、dockerコンテナ内のパスで伝える必要があります。
また、MCPサーバ側で自動で/workspaceのパスが使われるため、AIエージェントには/workspace以下のパスで伝える必要があります。
例えば、/Users/user/Documents/tmp/sample.pyというコードをデバッグしたい場合は、AIエージェントにはsample.pyと伝える必要があります。
感想
デバッグをして止めてくれるのは嬉しいですが、なかなかうまく動かすのは難しいです。
パスの問題やら、環境の問題やら、色々と考慮しなければならないことが多いです。
また、ブレークポイントをちゃんと設定してくれるかや、デバッグコンソールで変数の中身もちゃんと取得してくれるかなど、まだまだ発展途上な感じがします。
しかし、AIエージェントにコードのデバッグをさせるための一つの方法としては有効だと思います。