Echolot
MCPサーバ

ツールと品質

サーバのツールが毎ターンモデルに与える負荷、モデルがつまずきそうな点、モデルがどのツールを選ぶかを確認します。

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

このカードは、チェックで1つ以上のツールが見つかると、ツールの下に表示されます。

Alpenglow MCPの「モデルから見たこのサーバ」カード。Anthropic、OpenAI、Google Geminiのトークン数、サイズの大きいツール、「モデルがつまずきそうな問題はありません」の行が表示されている

ツールのコスト

カードの上部には、ツール一覧が毎ターン消費するトークン数が、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

このページの内容