AI・機械学習

AIがツール選びを間違える?MCPサーバーのルーティング問題をrouteproofで可視化してみた

「ちゃんとコードを書いたのに、AIが全然違うツールを呼んでいる…」そんな経験、ありませんか? 実はこれ、コードのバグじゃないんですよね。🤔

最近、海外のエンジニアが作った routeproof というツールが話題になっています。MCPサーバーのツールルーティング問題を可視化する小さなツールなのですが、これが意外と深い問題を浮き彫りにしてくれます。今回はその仕組みと、なぜ「ツールの説明文」がこんなにも重要なのかを一緒に見ていきましょう!

🤖 MCPサーバーって何をしているの?

AI tools routing
AI tools routing / Photo by Markus Winkler via Pexels

まず前提として、MCP(Model Context Protocol)サーバーとは、AIホスト(ChatGPTやClaudeなど)が外部の機能を呼び出すための仕組みです。イメージとしては「AIが使える道具箱」みたいなものですね。

ここで重要なポイントがあります。AIがどのツールを呼ぶか判断するとき、モデルが見ているのは次の3つだけです。

  • ✅ ツールの名前(name)
  • ✅ ツールの説明文(description)
  • ✅ ツールの入力スキーマ(input schema)

コードの中身は一切見えません。つまり、説明文が曖昧だったり、2つのツールの説明が似ていたりすると、AIは静かに「間違ったツール」を選んでしまうんです。😱

😈 「ツール泥棒」問題とは?

routeproofの作者が発見したのが、まさにこの「ツール泥棒」現象です。

あるツールの説明文が他のツールのユースケースを包含してしまっていると、1つのツールが他の2つのツールの仕事を横取りしてしまいます。ユニットテストはすべてパスするのに、実際のAIの動きはバグっている、という厄介な状態です。

具体的にどういう状況か、コード例で見てみましょう。

# ❌ 説明が曖昧で「泥棒」になりやすい例
tools = [
    {
        "name": "get_data",
        # 広すぎる説明 → 何でも引き受けてしまう
        "description": "データを取得する",
    },
    {
        "name": "get_user_profile",
        # 上のツールと競合してしまう
        "description": "ユーザーデータを取得する",
    },
    {
        "name": "get_sales_report",
        # こちらも同様に競合
        "description": "売上データを取得する",
    },
]

# ✅ 改善後:説明をユニークかつ具体的に
tools = [
    {
        "name": "get_user_profile",
        # 対象・目的・返却値を明示する
        "description": "ユーザーIDを受け取り、名前・メール・登録日を返す。ユーザー情報の参照専用。",
    },
    {
        "name": "get_sales_report",
        "description": "期間を受け取り、売上集計レポートをCSV形式で返す。売上分析専用。",
    },
]

ポイントをまとめるとこんな感じです👇

  • 説明文には「何を受け取り、何を返すか」を必ず書く
  • 「専用」「のみ」など使用場面を限定する言葉を入れると競合しにくくなる
  • 似た機能のツールは、説明文で明確に差別化する

🔍 routeproofでどう確認するの?


routeproofは、自分で作っていないMCPサーバーに向けてもテストを実行できるのが面白いところです。「このサーバーのツール定義、本当に正しくルーティングされてる?」を数値で確認できます。

コードの品質チェックをCIに組み込むのと同じように、ツールの説明文の品質チェックも自動化できる時代になってきたんですよね。これはAI活用が本格化する中で、見落とされがちだけどすごく重要な視点だと思います。

まとめ

今回のポイントをおさらいします。

  • AIがツールを選ぶ根拠は名前・説明文・スキーマだけ
  • 説明が曖昧・重複していると「ツール泥棒」が発生する
  • ユニットテストをパスしていてもルーティングはバグっている可能性がある
  • routeproofのようなツールで説明文の品質を可視化・テストできる

MCPサーバーを作っている方は、ぜひ自分のツール定義を見直してみてください! 「書いたコードは正しいのにAIの動きがおかしい」と感じたとき、原因は説明文にあるかもしれませんよ。一緒に学んでいきましょう 🚀

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

もしも

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

FastAPIでWebAPI開発を実践的に学ぶ

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です