0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI agentにコードのデバッグをさせる方法

Posted at

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サーバが動作する環境にもインストールする必要があります。

  1. MCPサーバが起動
  2. セッションを作成するときに、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エージェントにコードのデバッグをさせるための一つの方法としては有効だと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?