MCP クライアントはどのツールを使う?ツール名の重要性を実験してみた
はじめに
こんにちは! 株式会社リンケージの ikkitang です。
Claude のような AI アシスタントと連携する MCP (Model Context Protocol) クライアントは、ユーザーの指示に基づいて様々なタスクを実行できます。その際、MCP サーバーが提供する「ツール」を利用しますが、クライアントはどのようにして実行すべきツールを選択しているのでしょうか?
この記事では、MCP クライアントのツール選択プロセスと、そのプロセスにおけるツール名の重要性について、簡単な実験をやってみましたので、ブログとして書きます。
ただ、まだあんまり分かってないです。どうやってやってるんでしょうか。
MCP クライアントのツール選択プロセス
MCP クライアントは、ユーザーからの自然言語による指示(プロンプト)と、接続されている MCP サーバーが提供するツールの情報(名前、説明、引数スキーマなど)を照合します。そして、指示内容に最も合致すると判断したツールを選択し、実行しようと試みます。
実験:ツール名が選択に与える影響
例として、UUID を生成・操作する機能を持つ ikki-uuid
という MCP サーバーを考えます。このサーバーには以下のツールが登録されているとします。
-
generate-uuid
: UUID を1つ生成する -
generate-uuids
:--count
を引数に取り、指定された数の UUID を生成する -
detect-uuid-version
:--uuid
を引数に取り、その UUID のバージョンを返す
本来は description
等も設定するべきですが、ここでは何も設定していません。
ちなみにこのツールはこのブログで作ったものです。
もしソースコードなどが必要であれば、ご参考までに。
このサーバーに対して、様々な指示を与えてみます。
ケース1: ツール名が具体的で説明的な場合
-
ツール名を明示:
ユーザー: ikki-uuidのgenerate-uuidでUUID作って クライアント: (generate-uuid を実行しそう)
→ 意図通り
generate-uuid
が実行されます。 -
サーバー名のみ指定:
ユーザー: ikki-uuidでUUID作って クライアント: (generate-uuid を実行しそう)
→ 予想通り
generate-uuid
が実行されました。
クライアントは文脈("UUID作って")からgenerate-uuid
が最も適切だと判断し、実行していると推測します。 -
曖昧な指示:
ユーザー: UUID作って クライアント: (generate-uuid を実行)
→ 予想通り
generate-uuid
が実行されました。
クライアントは利用可能な全ツールの中から、指示に最も関連性の高いgenerate-uuid
を選択し、実行していると推測します。
ケース2: ツール名が抽象的な場合
次に、ツール名を p1
, p2
, p3
のように抽象的な名前に変えてみます。
-
p1
: uuidを生成する -
p2
:--count
を引数に 指定した数 uuid を生成する -
p3
:--uuid
を引数にバージョンを返す
-
曖昧な指示:
ユーザー: UUID作って クライアント: (MCPツールを使わない)
→ 予想通り、MCPを使うことは無く、ClaudeがUUIDを自力で生成して返しました。
クライアントはどのツールが「UUIDを作る」機能を持つのか判断できない場合は、MCPツールを使用しない、と判断すると推測します。 -
サーバー名のみ指定:
ユーザー: ikki-uuidでUUID作って クライアント: (MCPツールを使わない)
→ これは、意図に反して、 ClaudeがUUIDを自力で生成した後、MCPの
p3
を呼びました。
一番予想に反したのはこのケースでした。
Claudeに「なんで p3
呼んだのよ??」 って聞いてみると、 引数が--uuidだったので一番それっぽいと思って..
と言ってました。 (なるほど)
-
ツール名を明示:→ 予想通り
ユーザー: ikki-uuidのp1でUUID作って クライアント: (p1 を実行)
p1
が実行されました。
予めツール名が明示されていれば、意図通りp1
が実行されるようです。
結論:ツール名は具体的に!
実験結果からわかるように、MCP クライアントがユーザーの意図を正確に汲み取り、適切なツールを実行できるようにするためには、MCP ツールに具体的で説明的な名前を付けることが極めて重要です。
抽象的でわかりにくいツール名は、クライアントの誤解を招き、以下のような問題を引き起こす可能性があります。
- 適切なツールが選択されない
- 意図しないツールが実行される
MCP サーバーを開発する際は、ツールの機能が明確にわかるような名前を付けることが重要で、これによって、AI アシスタントとの連携がよりスムーズかつ正確になるんだろうな、と思いました。
ただ、まだ全然MCP理解できてないので、実験結果として参考にしてくださると嬉しいです。
MCPツールはいつのタイミングでfetchするんだ?とか...w もうちょい解像度上げたい所が多くあります。
今日の話は このイベントで雑談として取り上げてもらいました。
Discussion