girb-mcpとは?
girb-mcp は、LLMエージェントが実行中のRubyプロセスにアクセスするためのMCPサーバーです。
MCP (Model Context Protocol) に対応したクライアントであれば何でも使えます。Claude Code、Gemini CLIで動作確認済みです。
例えばこんな感じで、エージェントに「バグを調査して」と伝えるだけで、実際にリクエストを投げて実行時の状態を確認し、原因を特定してくれます。
あなた: ユーザー一覧ページが500エラーになるので、デバッグセッションに入って原因を調べて
エージェント: コントローラにブレークポイントを設定してリクエストを送りました。
停止地点で変数を確認したところ、@usersの中にnameがnilのレコードが
1件混ざっています(User ID: 42)。
ビューでuser.name.uppercaseを呼んでいるため、ここでNoMethodErrorが
発生しています。
コードを読むだけではわからない「実行時に何が起きているか」を確認できるのがポイントです。
実際に動作する様子はこちらの動画をご覧ください。
girbとの違い
先日リリースしたgirbはIRBやRails console上で人間が対話的にAIを呼び出すツールでした。
girb-mcpは同じ「実行中のRubyプロセスのコンテキストにアクセスする」というアプローチを、LLMエージェント向けに提供するものです。
| girb | girb-mcp | |
|---|---|---|
| 使う人 | 人間(IRB上で対話) | LLMエージェント(MCP経由) |
| インターフェース | REPL上のコマンド | MCPツール呼び出し |
| 動かし方 | girb or binding.girb |
MCPクライアントの設定に追加 |
girbが「人間がAIの力を借りてデバッグする」ツールなら、girb-mcpは「AIが自律的にデバッグする」ためのツールです。
既存のMCPサーバーとの違い
Ruby/Rails向けのMCPサーバーはすでにいくつかありますが、それらは静的解析やアプリケーションレベルのAPI(DBクエリ、ルーティング確認など)がメインです。
girb-mcpはdebug gem経由で実行中のRubyプロセスに接続し、その実行時状態をエージェントに公開します。
Agent → connect(host: "localhost", port: 12345) Agent → get_context() → ローカル変数、インスタンス変数、コールスタック Agent → evaluate_code(code: "user.valid?") → false Agent → evaluate_code(code: "user.errors.full_messages") → ["Email can't be blank"] Agent → continue_execution()
「この変数が今何の値を持っているか」「user.valid?の結果は何か」を実際に評価して返せるのが静的解析との決定的な違いです。
Rubyのような動的な言語では、コードを読むだけではわからないバグが多いので、このアプローチは特に有効だと考えています。
仕組み

- debug gem(
rdbg --open)が対象Rubyプロセスにソケットを公開 - girb-mcpがそのソケットにdebug gemのプロトコルで接続
- MCPクライアントからのツール呼び出しがデバッガコマンドに変換され、結果が返される
MCPはAnthropicが策定したオープン標準で、LLMと外部ツールを繋ぐためのプロトコルです。girb-mcpはmcp gemを使ってこの仕様に準拠しているので、MCPに対応したクライアントであれば何でも利用できます。
できること
調査ツール
| ツール | 説明 |
|---|---|
evaluate_code |
停止中のbindingでRubyコードを実行 |
inspect_object |
オブジェクトのクラス・値・インスタンス変数を取得 |
get_context |
ローカル変数・インスタンス変数・コールスタック・ブレークポイントを一括取得 |
get_source |
メソッドまたはクラスのソースコードを取得 |
実行制御
| ツール | 説明 |
|---|---|
set_breakpoint |
行・メソッド・例外クラスでブレークポイント設定 |
continue_execution |
次のブレークポイントまたは終了まで実行を再開 |
step / next / finish |
ステップイン・ステップオーバー・メソッド終了まで実行 |
Railsサポート
Railsプロセスを検出すると自動的にRails用ツールが追加されます。
| ツール | 説明 |
|---|---|
rails_info |
アプリ名・Railsバージョン・環境・DB情報を表示 |
rails_routes |
ルーティング一覧をフィルタ付きで表示 |
rails_model |
モデルのカラム・アソシエーション・バリデーション・enumを表示 |
trigger_request |
デバッグ中のRailsアプリにHTTPリクエストを送信 |
trigger_requestはPOSTなどのリクエストでCSRF保護を自動的に一時無効化してくれるので、トークンを気にせずリクエストを投げられます。
デバッグだけじゃない!AIコーディングの「次の一歩」
AIに実装を頼むと、テストも一緒に書いてくれます。テストも通ります。でも、そのテストって本当に正しいんでしょうか?
AIが書いたテストは「AIが理解した仕様」を検証しているだけです。ユーザーが意図した動作を検証しているとは限りません。テストが通っているのに、実際に動かしてみたら思ってたのと違う。これはAIコーディングあるあるだと思います。
girb-mcpを使うと、テストの先にもう一歩踏み込めます。
- AIが実装を書く
- AIがテストを書いて通す
- girb-mcpで実際にアプリを動かして、意図通りの振る舞いをするか確認する
例えば「管理者だけが記事を削除できること」を実装させたとして、テストが通った後に実際にDELETEリクエストを投げて、一般ユーザーでは403が返ること、管理者では削除されることを実際の動作で確認できます。
これまでは「テストは通ったので、あとは人間が動作確認してね」で終わっていたところを、動作確認までAIに任せられるようになります。人間は最後に動くものを見て判断するだけです。
インストールと設定
gemをインストールします。
gem install girb-mcp
MCPクライアントの設定にgirb-mcpを追加します。
Claude Codeの場合(~/.claude/settings.json)
{ "mcpServers": { "girb-mcp": { "command": "girb-mcp", "args": [] } } }
Gemini CLIの場合(~/.gemini/settings.json)
{ "mcpServers": { "girb-mcp": { "command": "girb-mcp", "args": [] } } }
他のMCPクライアントでも、STDIOトランスポートに対応していれば同様の設定で利用できます。
Bundler経由の場合はcommandをbundle、argsを["exec", "girb-mcp"]に変更してください。
Ruby >= 3.2.0 が必要です。
使ってみる
Rubyスクリプトのデバッグ
rdbg --open --port=12345 my_script.rb
あとはエージェントに頼むだけ。
「デバッグセッションに接続して現在の状態を見せて」
run_scriptツールがあるのでRubyスクリプトの起動自体をエージェントに任せることも可能です。
Railsアプリのデバッグ
girb-mcpにはRailsサーバーをデバッグモードで起動するコマンドも付属しています。
girb-rails # RUBY_DEBUG_OPEN=true bin/rails server と同等
エージェントにこう伝えます。
「app/controllers/users_controller.rbの15行目にブレークポイントを設定して、/users/1にGETリクエストを送って」
ブレークポイント設定 → リクエスト送信 → 停止した地点で変数を調査、という一連の流れをエージェントが自動で行います。
Docker内のプロセスにも対応
TCP接続またはUnixソケットのボリュームマウントでDocker内のRubyプロセスにも接続できます。TCP経由の場合、ローカルにソースコードがなくてもコンテナ内のファイルを閲覧・読み取りできます。
セキュリティについて
いくつか注意点があります。
- evaluate_codeは任意のRubyコードを実行できます。 ただしファイル操作やシステムコマンドなどの危険な操作はLLMエージェント側のポリシーで制限されています。girb-mcpはあくまで「デバッガの窓口」であり、エージェント側のガードレールと組み合わせて使うことを前提としています。
- debug gemには認証機能がありません。 TCPでデバッグポートを公開する場合は
127.0.0.1にバインドするなど、アクセスを制限してください。 - 本番環境では使わないでください。 開発・デバッグ用途のツールです。
girbファミリー
girb-mcpはgirbファミリーの一員です。
- girb — AI搭載IRBアシスタント(対話型、人間向け)
- girb-mcp — LLMエージェント向けMCPサーバー(プログラマティック、エージェント向け)
- girb-ruby_llm — ruby_llm経由のLLMプロバイダー
- girb-gemini — Gemini API経由のLLMプロバイダー
フィードバック募集中
girb-mcpはまだ発展途上です。使ってみて気づいたことがあれば、ぜひ教えてください。
- GitHub Issues: https://github.com/rira100000000/girb-mcp/issues
「ここが使いにくい」「こんな機能がほしい」など、どんな意見でも歓迎です!

