MCP サーバー分析 — インテント & エラー分析
Amplitude の MCP Analytics SDK で計装された MCP サーバーに関する3つの質問に答えるレポートを生成します:
- どのツールが使用され、どのツールが失敗しているか? (ツールごとのボリューム + エラー率)
- 呼び出し元は各ツールで何をしようとしており、それぞれの意図はどこで失敗しているか? (ツール内の理由とエラーメッセージ)
- チームは何を最初に修正すべきか? (「なんとなく」ではなく、エラー証拠に基づいた修正)
この分析を価値あるものにする核となる考え方: ツールが修正箇所を特定し、理由がその背後にある意図を説明する。 全体的なエラー率は「呼び出しの4.5%が失敗する」と言います。ツール別に分解すると「query_chart は22%の確率で失敗する」と分かります — これで何を開くべきかが分かります。そのツール内の理由を追加すると「失敗は、バッチサイズ制限に達しているダッシュボード更新エージェントによるもの」と分かります — これで理由が分かり、修正は自ずと決まります。理由はほとんどがツールスコープです(各ツールには独自の呼び出し理由があります)。そのため、ツールが主要な軸であり、理由はその内側の2番目の切り口です — 理由をグローバルにクラスタリングすると、ツールの境界を再導出するだけで、比較不可能な意図が混在することになります。
前提条件
-
Amplitude MCP コネクタがアクティブであること。アクティブでない場合は、ユーザーにツール/コネクタ設定で Amplitude コネクタを追加するよう依頼して停止してください — 代替のデータソースはありません。
-
SDK のイベントを含むプロジェクト。SDK は SDK 所有のデフォルトイベント を発行し、すべて
[MCP]プレフィックスが付いています。そして、重要なことに、それらが運ぶすべてのデフォルトプロパティも[MCP]プレフィックスが付いており、カスタムプロパティを持つ場合もあります。イベント:
[MCP] Tool Call Response— 主力イベント: ツールコールバックに到達したツール呼び出しごとに1つのイベント(成功またはエラー)。[MCP] Tool Call Rejected— ツールが実行される 前 に失敗したtools/call(不明/無効なツール、入力スキーマ検証)。幻覚や誤入力されたツール名はここに入り、[MCP] Attempted Tool Nameに保持されます(予約済みの[MCP] Tool Nameには入りません)。[MCP] Session Initialized、[MCP] Session Ended、[MCP] Tools Listed。
[MCP] Tool Call Responseの主要プロパティ:[MCP] Tool Name、[MCP] Client Name、[MCP] Client Version、[MCP] Session ID、[MCP] Auth Type、[MCP] Rationale、[MCP] Is Error、[MCP] Error Message、[MCP] Error Type(returned_errorvsthrown_exception— 失敗を報告したツールとクラッシュしたツールを区別)、[MCP] Response Duration、[MCP] Response Size、[MCP] Request Size。 -
イベント/プロパティ名は SDK バージョン間で変わる可能性があります。決して推測しないでください — フェーズ0でタクソノミツールを使用して確認してください。上記の正規名は SDK の
constants.ts(EVENT_PROPERTY_KEYS)からのものです。プロジェクトのデータが異なる場合は、プロジェクトを信頼して適応してください。
フェーズ0 — データの特定と検証
- Amplitude コンテキストツール(projectId なし)を呼び出してプロジェクトを一覧表示します。複数の妥当なプロジェクトが存在し、ユーザーが指定していない場合は尋ねてください。
- 選択したプロジェクトに
[MCP]イベントが存在することを確認します(イベントを検索または一覧表示します。get_eventsは完全名でのみフィルタリングするため、[MCP]プレフィックスの発見には検索を使用してください)。 [MCP] Tool Call Response(および[MCP] Tool Call Rejected)のイベントプロパティを取得して、正確なプロパティ名を確認します — これらは[MCP]プレフィックスが付き、タイトルケースであることを忘れないでください(例:[MCP] Rationale、tool rationaleではありません)。見つけたものを以下のクエリで使用する名前にバインドします。- 1つのボリューム/新しさクエリを実行します: 過去60日間の
[MCP] Tool Call Response、[MCP] Session Initializedの合計を週間隔で。これにより、使用可能な日付範囲と十分なデータがあるかどうかがわかります。ツール呼び出しの合計が約5k未満の場合は、ツールごとの内訳が薄くなりパーセンテージが不安定になることをユーザーに警告します — それでも続行しますが、レポートにその旨を記載します。
記録: プロジェクト ID、日付範囲、総呼び出しボリューム。以降のすべてのクエリは同じ範囲を使用して、数値の比較可能性を維持します。
フェーズ1 — ツールごとの内訳(基軸)
これが主要なマップです。他のすべてはこれを掘り下げます。
- ツールごとのボリューム:
[MCP] Tool Call Responseの合計を[MCP] Tool Nameでグループ化、groupByLimit ~100。 - ツールごとのエラー: 同様に、フィルター `[MCP] Is Error is