ENECHANGE Developer Blog

ENECHANGE開発者ブログ

あなたのAIエージェントはどっち派? MCPツールをLLMに渡す2つの方法

VPoTの岩本 (iwamot) です。*1

昨日の水本さんの記事を読み、AIの登場による変化を前向きにとらえる姿勢が重要だと感じました。登場前に戻ることはもうできないですものね。

今日のぼくの記事では、AIエージェントを「使う」ではなく「作る」視点での「AIエージェント活用」を取り上げます。AIエージェントの実装に興味のある方の参考になれば幸いです。

フォーカスするのは「AIエージェントからMCPツールの情報をどのようにLLMに渡すか」についてです。MCPツールの情報を渡さなければ、LLMはツールが呼び出せる(AIエージェントに呼び出しを依頼できる)ことを知らないまま回答してしまいます。

以下、ご自身がAIエージェント(例:Cline、Claude Code)やAIエージェントSDK(例:Strands Agents、OpenAI Agents SDK)を実装するとしたらどうするか考えながらご覧ください。

MCPツールをLLMに渡す2つの方法

MCPツールの情報をLLMに渡す方法には、主に2つのアプローチがあります。

  • システムプロンプトにツール情報を埋め込む方式(以下、システムプロンプト方式)
  • LLMのネイティブなTool Use機能を利用する方式(以下、Tool Use方式)

2つ目の「LLMのネイティブなTool Use機能」が分かりづらいかもしれませんが、OpenAIでいうFunction Calling機能のことです。ユーザー側で定義したツールの情報を tools などのパラメーターでLLMに渡せる仕組みですね。

ぼくの開発しているAI Slack bot「Collmbo」では、そちらのTool Use機能をMCPツール情報の連携手段として採用しました。一方、システムプロンプト方式を採用しているAIエージェントもあります。

それぞれのアプローチについて、メリット・デメリットを含めて見ていきましょう。

システムプロンプト方式

1つ目のアプローチは、システムプロンプトにツール情報を埋め込む方式です。この方式を使っているAIエージェントの例に、Clineがあります。

Clineの実装(2025-07-09現在)

Clineによる実際の指示の一部

## Example 5: Requesting to use an MCP tool

<use_mcp_tool>
<server_name>weather-server</server_name>
<tool_name>get_forecast</tool_name>
<arguments>
{
  "city": "San Francisco",
  "days": 5
}
</arguments>
</use_mcp_tool>

(ツール呼び出し要求をXML形式で応答に含めるよう指示している)

システムプロンプト方式のメリット

  • Tool Use非対応のLLMでも利用可能
  • LLMごとのAPIの違いに影響されない

システムプロンプト方式のデメリット

  • 正確な応答を促すためのプロンプトエンジニアリングが必要
  • トークンの消費が多い(ツールの利用方法をプロンプトに含めるため)
  • XMLをパースする実装が必要

Tool Use方式

2つ目のアプローチは、MCPツールの情報をLLMのネイティブなTool Use機能で渡す方式です。この方式を使っているAIエージェントの例に、Strands Agentsがあります。

Strands Agentsの実装(2025-07-09現在)

Strands Agentsのコードの一部

            "tools": [
                {
                    "name": tool_spec["name"],
                    "description": tool_spec["description"],
                    "input_schema": tool_spec["inputSchema"]["json"],
                }
                for tool_spec in tool_specs or []
            ],

(MCPツール情報をTool Use形式に変換している)

Tool Use方式のメリット

  • システムプロンプト方式にくらべ、トークンの消費が少ない
  • パーサーの実装が不要

Tool Use方式のデメリット

  • Tool Use対応のLLMのみ利用可能
  • LLMごとにAPI仕様に合わせたTool Use形式への変換処理が必要

選択指針

どちらの方式を選ぶべきかは、AIエージェントの要件によって決まります。

システムプロンプト方式を選択すべき場合

  • Tool Use非対応のLLMもサポートする

Tool Use方式を選択すべき場合

  • Tool Use対応のLLMのみサポートする
  • トークン効率を重視する

まとめ

MCPツールの情報をLLMに渡す方法には、システムプロンプト方式とTool Use方式の2つがあります。AIエージェントの要件に応じて適切に選びましょう。

項目 システムプロンプト方式 Tool Use方式
対応モデル 汎用的 限定的
トークン効率 低い 高い

ただしTool Use方式の場合でも、MCPを使わない場合にくらべればトークンの消費が増えます。プロンプトキャッシュを活用し、トークン消費を抑えるのがおすすめです。


ENECHANGE AIエージェント活用リレーブログ、次回は岡本さんが「エンジニア採用はどこへ向かう?AIエージェント時代の“選ばれる現場”とは」をお届けする予定です。

*1:この記事はAIエージェント活用リレーブログの一環として、Claude Codeを使って書きました。内容は岩本が責任を持ってレビューしています。