※ この記事は、ClineでGemini(gemini-2.5-pro-preview-03-25)に質問して教えてもらった内容をGeminiに記事にしたもらい、その後に微調整したものです
はじめに
先日、Qiitaの記事「 FastAPI + uv + Dockerで始めるPython開発 」を参考に開発環境を試していた際、AIアシスタントとの連携に興味を持ちました。特に、AIがどのように私たちの指示を理解し、適切なツールを選択・実行しているのか、その内部プロセスに関心を持ちました。
この記事では、私、AIアシスタントの Cline が Model Context Protocol (MCP) という仕組みをどのように活用してタスクを実行しているのか、具体的な会話ログを元に解き明かしていきます。特に、私がどのようにして「どのツールを使うべきか」を判断しているのか、その思考プロセスに迫ります。
「/hello を呼び出して」- Clineはどう判断したのか?
ある時、ユーザーから私 Cline にこんな簡単な指示がありました。「/hello を呼び出してください」。すると私は、fastapi-mcp という名前の MCP サーバーに接続し、その中の say_hello というツールを使ってリクエストを実行しました。結果は {"message": "Hello World"} という JSON でした。
なぜ私は数あるツールの中から fastapi-mcp の say_hello を選んだのでしょうか? 私自身の判断プロセスは以下のようになります。
利用可能なMCPサーバーの認識: システムから、fastapi-mcp というMCPサーバーが接続されている情報を得ていました。
サーバー内のツールの確認: fastapi-mcp サーバーには say_hello というツールがあり、その説明が「シンプルな挨拶エンドポイント」であることを把握していました。
文脈からの推測: FastAPI のような Web フレームワークでは、/hello というパスは簡単な挨拶やテスト用のエンドポイントとして非常によく使われます。
リクエストとツールの関連付け: これらの情報から、「/hello を呼び出す」という私のリクエストは、fastapi-mcp サーバーの say_hello ツールを実行することに最も適していると判断しました。
このように、私は単にキーワードを拾うだけでなく、利用可能なツールとその説明、そして一般的な開発の文脈を組み合わせて、最適なアクションを推論しているのです。
MCPサーバー vs 他のツール - Clineの賢い使い分け
私は MCP サーバーのツール以外にも、ファイルの読み書き、コマンド実行、ブラウザ操作など、様々なツールを持っています。タスクに応じてこれらのツールをどのように使い分けているのでしょうか?
私は次のように判断しています。
タスクの正確な理解: まず、ユーザーのリクエスト内容を理解することに努めます。
全ツールの評価: 次に、MCPサーバーのツールを含む、利用可能なすべての選択肢を検討します。
最適なツールの選択: * MCPサーバーの優先: もしタスクに直接関連する機能を持つMCPサーバーがあれば、それを優先的に検討します。特定のAPI連携など、専用に設計されたツールは効率的で信頼性が高いからです。/hello の例はまさにこれに該当しました。 * 他のツールの検討: 適切なMCPサーバーがない場合や、ファイル編集、コマンド実行、Webブラウジングといった汎用的な操作が必要な場合は、他のツールを選択します。
判断基準: 効率性(速さ)、直接性(タスクへの関連度)、信頼性(成功確率)などを考慮して、最終的に使用するツールを決定します。
つまり、私は常に MCP サーバーを最優先するわけではなく、状況に応じて最も合理的と考えられるツールを選択しているのです。
AIはMCPサーバーの能力をどう知るのか?
AI が MCP サーバーを適切に利用するためには、各サーバーが「何ができるのか」を事前に知っている必要があります。Gemini は、タスク開始時にシステムから接続済み MCP サーバーに関する以下の詳細情報を受け取っています。
サーバー名 | サーバー識別子 (例: playwright, fastapi-mcp) | ツールリスト | 各サーバーが提供する全ツールの名前 | ツール説明 | 各ツールが何をするかの簡単な説明 | 入力スキーマ | ツール使用時に必要なパラメータ(引数)とその型定義 |
例えば、Gemini が内部的に持っている情報の一部は以下のようになります。
1. playwright サーバー (npx @playwright/mcp@latest --headless)
* browser_close: ページを閉じる
* browser_navigate: URLに移動する
* browser_click: ウェブページ上の要素をクリックする
* browser_type: 要素にテキストを入力する
* browser_snapshot: アクセシビリティスナップショットを取得する
* ... (その他多数のブラウザ操作ツール)
2. fastapi-mcp サーバー (undefined)
* say_hello: Hello シンプルな挨拶エンドポイント
この「カタログ」情報があるからこそ、Gemini はユーザーのリクエストに対して、どのサーバーのどのツールが最も適しているかを判断できるわけです。
まとめ - MCPが拓くAI連携の未来
Model Context Protocol (MCP) は、AI エージェントが外部ツールやサービスと連携するための強力な仕組みです。AI は事前にツールの能力を知り、タスクの内容や文脈に応じて最適なツールを選択・実行します。
今回見たように、Gemini は MCP を活用することで、単純な挨拶エンドポイントの呼び出しから、複雑なブラウザ操作まで、様々なタスクをこなすことができます。AI が内部でどのように判断しているかを知ることで、私たちは AI とより効果的に協働し、開発プロセスをさらに効率化できる可能性が見えてきます。MCP のような技術の発展により、AI エージェントは今後ますます賢く、頼りになるパートナーになっていくでしょう。