ツールと品質
サーバのツールが毎ターンモデルに与える負荷、モデルがつまずきそうな点、モデルがどのツールを選ぶかを確認します。
モデルがMCPサーバそのものを見ることはありません。見えるのは、会話の毎ターンに送られ、各プロバイダ独自の形式に変換されたサーバのツール一覧です。MCPサーバのページのモデルから見たこのサーバカードは、 その一覧をモデルが受け取るとおりに表示します:コスト、最もコストの大きいツール、モデルが誤解しやすい名前・説明・スキーマ。サーバを作っている間や、他者のサーバをエージェントに渡す前に使ってください。
このカードは、チェックで1つ以上のツールが見つかると、ツールの下に表示されます。

ツールのコスト
カードの上部には、ツール一覧が毎ターン消費するトークン数が、Anthropic、OpenAI、Google Geminiそれぞれの形式で数えて表示されます。その下の行には、ツールの数と、3つのうち最大のものが200kのコンテキストに占める割合が表示されます。
数値は見積もりで、プロバイダの数え方との誤差は約15%以内です。サーバ同士の比較や、説明やスキーマを変更したときの影響を確認するのに適しています。
サイズの大きいツールには、コストの大きい上位5つのツールが、トークン数とともに表示されます。ツールが1つしかないサーバでは、この一覧は表示されません。
モデルがつまずきそうな点
次に、検出された問題の一覧が、深刻なものから順に表示されます。見出しには件数が表示されるか(1 problem, 2 warnings など)、モデルがつまずきそうな問題はありませんと表示されます。
各項目には、ツールの名前、問題の内容、修正案が示されます。
| 種類 | 意味 |
|---|---|
| 問題 | プロバイダがそのツールを拒否するか、モデルが使い方を推測するしかありません。最初に修正してください。 |
| 警告 | 動作はしますが、モデルが誤ったツールを選んだり、引数をうまく埋められなかったりする可能性が高いです。 |
| 注記 | 知っておくとよいこと(あるプロバイダが破棄する制約など)。 |
Echolotが各ツールでチェックする内容:
| 検出内容 | 種類 | 対処 |
|---|---|---|
| 名前がプロバイダの受け付けるものではない | 問題 | 英字、数字、_、- を使い、64文字以内にします。AnthropicとOpenAIはそれ以外を拒否します。 |
| 説明がない | 問題 | ツールが何をするか、何を必要とするか、何を返すかを書きます。 |
| 説明が名前以上のことをほとんど言っていない | 警告 | ツールが必要とするものと返すもの、似たツールではなくこのツールを使う場面を書きます。 |
| 長い説明(1,500文字超) | 注記 | 毎ターン読み込まれます。 |
| 入力スキーマがオブジェクトではない | 問題 | どのプロバイダも {"type": "object", "properties": …} を求めます。パラメータのないツールは "properties": {} と書きます。 |
| スキーマにプロパティがない | 注記 | パラメータがない場合は "properties": {} と書くか、あるものを記述します。 |
| 任意のオブジェクトを受け取る | 警告 | モデルが引数を作り出さないよう、ツールが読み取るプロパティを記述します。 |
| プロパティに定義されていないパラメータを必須としている | 問題 | プロパティを定義するか、required から外します。 |
| 型のないパラメータ | 問題 | それぞれに type(または enum)を指定します。そうしないとモデルは推測し、OpenAIのstrictモードは拒否します。 |
| 自由形式のオブジェクト(プロパティなし) | 警告 | キーを記述するか、説明に入れるべき内容を書きます。 |
| 説明のないパラメータ | 警告 | それぞれ1行で、それが何であるかと値の例を書きます。 |
$ref を使っている | 警告 | Geminiは破棄するため、そのパラメータは何でも受け付けるようになります。OpenAIのstrictモードでは展開が必要です。 |
oneOf、pattern、additionalProperties など、Geminiが破棄するキーワード | 注記 | Geminiでは制約が失われます。 |
| 大きなスキーマ(約1,000トークン超) | 警告 | ツールを分割するか、あまり使わないオプションをスキーマから外します。 |
| 25を超えるパラメータ | 警告 | ツールを分割するか、オプションをグループにまとめます。 |
| 5階層を超えるネスト | 警告 | 引数を平坦にします。モデルは深い構造をうまく埋められません。 |
| 40を超える値を持つ列挙 | 注記 | すべての値が毎ターン読み込まれます。 |
一覧全体に対する検出内容:
| 検出内容 | 種類 | 対処 |
|---|---|---|
モデルが混同する名前(大文字小文字、_、- を無視すると同じ) | 問題 | ツールを区別する要素にちなんだ名前を付けます。 |
| 同じ説明を持つ2つのツール | 問題 | 違いを書きます。モデルは説明を手がかりにツールを選びます。 |
| ほぼ同じことを言っている2つの説明(単語の60%以上が共通) | 警告 | それぞれに、もう一方ではなくこちらを使う場面を書きます。 |
| 128を超えるツール | 問題 | OpenAIは128を超えると拒否します。提供するツールを減らすか、サーバを分割します。 |
| 40を超えるツール | 警告 | 数が多いと、モデルの選択精度が下がります。一度に提供するツールを減らすか、トピックごとにサーバを分割します。 |
| 一覧が1ターンあたり20,000トークンを超える | 警告 | 説明とスキーマを短くするか、提供するツールを減らします。 |
サーバを変更したら、もう一度チェックをクリックしてください。カードは新しいツール一覧に追従します。
プロバイダが受け取るリスト
カード下部のプロバイダが受け取るリストを開き、Anthropic、OpenAI、Google Geminiのいずれかを選びます。そのプロバイダのAPIが受け取る形のツール一覧が、JSONで表示されます。コピーでコピーできます。 たとえば、Geminiの形式でスキーマから何が失われるかを確認できます。
モデルで試す
下のモデルで試すカードでは、実際のモデルにどのツールを呼び出すかを尋ねます。このサーバを使ってエージェントに頼みそうなこと(Is the two-person tent in stock? など)を入力して、試すをクリックします。
モデルはサーバのツールを見て、行うであろう呼び出しを答えます。実際には何も呼び出されません。各呼び出しについて、ツールと引数が表示されます。ツールのスキーマに合わない引数には印が付き、問題の内容が示されます。 わかりにくい名前や説明は、そこに表れます。その下には、使用したトークン数と、料金がわかっているモデルについてはそのターンのおおよその費用が表示されます。
このカードは、設定 › アシスタントで選んだモデルを使います。選んでいない場合は、そこでモデルプロバイダを選ぶよう表示されます。初めて試すときは、プロンプトとサーバのツールをそのプロバイダに送信してよいかをEcholotが確認します。 オンデバイスのモデルと、Mac上のサーバでは確認されません。
コマンドラインから
echolot mcp check --quality は、同じレポートをターミナルに出力し、--strict を付けると、問題があるときに終了コード1で失敗するため、サーバのCIでツール一覧の状態を保てます。
--as anthropic、--as openai、--as gemini は、そのプロバイダが受け取る形の一覧だけを出力します。echolot mcpを参照してください。
echolot mcp check --url https://demo.echolot.dev/mcp --quality