MCPサーバーのLLM呼び出し完全トレース

AIエージェントのデバッグでツール遅延90%がトレース不能なLLM呼び出しに潜むのを想像しろ。この修正でMCPサーバーは一変——開発者に本物の可観測性を叩き込む

MCPサーバー、自前LLM呼び出しをトレース可能に——エージェントツールの死角ゼロ — theAIcatchup

Key Takeaways

  • MCPサンプリング呼び出しがフルスパン、ツール内の80%超隠れLLMレイテンシを暴く
  • ダッシュボードで一目メトリクス:レート、P95、エラー別最適化即決
  • マイクロサービス初期トレースの再来、エージェント大群本番前に標準化必至

AIエージェントが「要約」ツールで止まる。2秒溶ける。コードのせいか? APIか? それとも——隠れた——サーバーが委ねたLLMか?

エージェントワークフローを組む開発者にとって、MCPサーバーではこれが日常茶飯事だ。サンプリング呼び出しの可視化ゼロで、パフォーマンスは当てずっぽうの勝負。今? トレースが幽霊を照らし、メトリクスがダッシュボードで真実を晒す。最適化は魔術じゃなくなる。

MCPサンプリングがトレースをぶち壊す理由

MCP仕様ではサーバー——APIキーなしのツールレス——がLLM作業をクライアントに跳ね返す。賢いよな? オーケストレータが「要約」を叩く、サーバーがGPT-4oでテキストを噛み砕く必要、クライアントのLLMをサンプリング。レスポンスが戻る。綺麗な委譲だ。

だがトレース? 無音。ミドルウェアはツール呼び出しをしっかり掴む。サンプリング? ハンドラー奥深くのメソッド呼び出し。スパンなし。2.1秒のツールで1.8秒が生成に消えても——見えねえ。間違った300msをいじくる羽目に。

“ツール呼び出しがLLM呼び出しをトリガーするが、トレース上は見えねえ。記事#7のミドルウェアはtools/call summarizeをトレースする——だが中身のサンプリング呼び出し? 幽霊だ。スパンなし、持続時間なし、モデル名なし。”

前回はそんなブラックボックスをぶち破った。あれはデモ未満だったが、今回はデモ即戦力の続編だ。

見てろよ、こんな映画見たことあるだろ。初期マイクロサービスがトレースなしRPCで詰まった——Zipkin台頭を覚えてるか? MCPサンプリングはエージェントAIのRPCだ。無視すりゃツールは分散ミステリーに。いま直せば、マルチエージェントの大群に先んじる。

幽霊呼び出しを包んだ方法

4つの修正。バカバカしいほどシンプル。

まず、基本のtoadEyeMiddleware——全ツールにスパン。

次に、ctx.mcpReq.requestSampling()をtraceSamplingラッパーで囲む。モデル、トークンを渡す。ドン:SpanKind.CLIENTの”chat gpt-4o”スパン。持続時間(1834ms!)、gen_ai.request.model、mcp.server.nameまでキャプチャ。

ネスト完璧:

tools/call summarize 2.1s └── chat gpt-4o (sampling) 1.8s

実際のロジック? 300ms。それを最適化しろ、幻じゃねえ。

コードはワンライナーインポート。ハンドラ本文:サンプリングをラップすりゃいい。5分で試せる——サーバー起動、クライアントエージェント叩き、トレースがOTelバックエンドに雪崩れ込む。

メトリクスは? ここでBloomberg級の鋭さだ。Prometheusクエリ内蔵。曖昧カウンターじゃねえ。

「何が壊れてる?」に答えるダッシュボード

トップに一目でわかるテーブル:

Tool Call Rate | Avg Duration | Error Rate | Resource Reads 12.4 req/s | 45.2 ms | 2.3% | 3.1 req/s

エラー赤? 掘れ。

ツール別呼び出しレートの時系列。エージェントがcalculateからsearchへシフト? ラインが物語る。ツール別P50/P95持続時間——searchのP95が2sに跳ね? PagerDuty発動だ。

エラー積層:searchのRateLimitError(8.7%)、calculateのValidation(0%)。URI別リソース——熱いデータソースが叫ぶ。

下:ツール別統合テーブル。

Tool Rate Avg (ms) P95 (ms) Errors
calculate 8.2 12.3 24.1 0%
get-weather 3.1 145.2 312.8 3.2%
search 1.1 890.4 2134 8.7%

これ飾りじゃねえ。役員室ビューだ:持続時間にコスト相関、エラーに収益漏れ。エージェントスケール? この4指標に感謝するぞ。

AIエージェントのZipkin瞬間か?

俺の独自見解:誰も口にしねえが、MCPの可観測性はLangChainに遥か及ばねえ——あっちのエコシステムはなんでもトレース、ハイプ抜きで。MCPの純粋仕様は輝くが、ツールがサンプリングの宝石を隠してた。

予測? エージェントがサーバーを連鎖(マルチMCP来る)につれ、このトレースはテーブルステークスだ。無視すりゃ本番エージェントが負荷でブラックアウト。俺の賭け:toad-eye がQ2までにフォークだらけ、標準団体がうなずき、OpenAIクライアントが義務化。

懐疑的? コーポレート詐欺じゃねえ——オープンソース、再現可能。だが見てろ:ベンダーがこれを「エンタープライズエージェントメッシュ」として月1万ドルでリブランドだ。無料版を先に掴め。

フルMCPトレースが君のスタックに何故大事か

ClaudeやGPTエージェントの開発者——MCPはカスタムツールの橋だ。これなしじゃサンプリングは負債:コストが目に見えぬスパイク、チェーンでレイテンシ蓄積。

市場計算:GPT-4oの入力トークン1Mあたり5ドル。要約ツールが1コール500トークンサンプリング? 12 req/sで月3600ドル盲目。トレースが暴き、ダッシュボードが絞る。

実例? インディ開発者がエージェント出荷でスケール痛抱え最初。「俺のマシンでは動く」終わり——トレースが証明。

チーム? SREが安眠。1つのP95アラートで50ユーザー票対応。

クライアント? 速いエージェント、低コスト。勝ち。

ただ——注意——OTel優先。Grafana準備OK? 良し。生Prometheus? セットアップ骨。だがベースラインはゼロ超えだ。


🧬 Related Insights

Frequently Asked Questions

What is MCP sampling?

MCPサーバーがAPIキーなしでLLM呼び出しをクライアントに委譲する仕組み。要約みたいな生成が必要なツールに不可欠だ。

How do you trace MCP server LLM calls?

ctx.mcpReq.requestSampling()をtraceSampling({model: ‘gpt-4o’})でラップ。ミドルウェアが残りを——ツール下にスパンネスト。

Does this dashboard work out-of-box?

ああ、Prometheusクエリ付属。Grafanaに突っ込んでテーブル、チャート、レート・持続時間・エラーのアラート即戦力。

Priya Sundaram
Written by

Hardware and infrastructure reporter. Tracks GPU wars, chip design, and the compute economy.

Frequently asked questions

What is MCP sampling?
MCPサーバーがAPIキーなしでLLM呼び出しをクライアントに委譲する仕組み。要約みたいな生成が必要なツールに不可欠だ。
How do you trace MCP server LLM calls?
ctx.mcpReq.requestSampling()をtraceSampling({model: 'gpt-4o'})でラップ。ミドルウェアが残りを——ツール下にスパンネスト。
Does this dashboard work out-of-box?
ああ、Prometheusクエリ付属。Grafanaに突っ込んでテーブル、チャート、レート・持続時間・エラーのアラート即戦力。

Worth sharing?

Get the best AI stories of the week in your inbox — no noise, no spam.

Originally reported by dev.to