mcpsnoop: MCPトラフィックをデバッグするための透過的プロキシとTUI

mcpsnoop: MCPトラフィックをデバッグするための透過的プロキシとTUI

mcpsnoopは、透過的プロキシとして動作することで、AIクライアント(Claude DesktopCursor、またはClaude Codeなど)とModel Context Protocol (MCP) サーバー間の通信をリアルタイムで可視化します。別のクライアントとして接続する従来のインスペクターとは異なり、mcpsnoopはデータパスに直接位置し、発生するすべてのツール呼び出し、レスポンス、および通知をキャプチャします。

MCPの可視化ギャップの解決

MCPサーバーをデバッグする際の主な課題は、MCP Inspectorのような公式ツールが独立したクライアントとして動作することです。これは、ユーザーの実際のAIクライアントによって生成される実際のトラフィックを見ることができないことを意味します。ツールがトリガーされない、機能の不一致が発生する、またはリクエストがハングする場合、開発者はしばしば/tmp内のログを手動で追跡(tailing)したり、推測に頼ったりすることを余儀なくされます。

mcpsnoopは、サーバーコマンドをラップすることでこのギャップを解消します。クライアントとサーバーの間でバイトをそのまま転送しながら、同時にすべてのJSON-RPCフレームのコピーをライブなターミナルUIにストリーミングします。これにより、開発者は実際のクライアントが何を送信し、サーバーが何を返しているのかを正確に確認できます。

コア機能とデバッグ機能

ライブトラフィックのモニタリングと分析

mcpsnoopは、リクエスト、レスポンス、および通知を含むJSON-RPCフレームのカラーコード付きライブストリームを提供します。主なモニタリング機能は以下の通りです:

  • Hung-Call Detection(ハングした呼び出しの検出): 進行中のリクエストはライブタイマー付きでPENDINGとしてマークされ、停止したツールがすぐに判明します。
  • Error Flagging(エラーのフラグ立て): このツールは、標準的なJSON-RPCエラーとツールレベルのresult.isErrorフラグの両方をフラグ立てします。
  • Frame Inspection(フレームの検査): ユーザーは(enterキーを使用して)任意のフレームを詳細に調査し、全文検索機能を備えた整形済みJSONを表示できます。
  • Capability Inspection(機能の検査): cを押すことで、開発者はクライアントとサーバー間の初期ハンドシェイク中に合意された正確な機能(capabilities)を確認できます。

Replay(リプレイ)による迅速なイテレーション

mcpsnoopの最も強力な機能の一つは、キャプチャされた任意のツール呼び出しを、サーバーの新しい、分離されたインスタンスに対して再実行できることです。これにより、開発者はAIクライアントを通じてアクションを再度手動でトリガーすることなく、ツールのロジックをイテレーション(反復)させることができます。

高度なフィルタリング

大量のトラフィックを管理するために、mcpsnoopはクエリベースのフィルタリングシステムをサポートしています。ユーザーはスペースで区切られたトークンを組み合わせてストリームを絞り込むことができます:

  • Field-specific filters(フィールド固有のフィルター): tool:, method:, id:, kind:, dir:, および status:
  • Example(例): tool:search status:slowのようなクエリは、検索ツールに対して特に行われた遅い呼び出しを分離します。

アーキテクチャと実装

mcpsnoopは、2つの異なる役割を持つ単一のバイナリとして実装されています:

  1. The Shim(シム): mcpsnoop -- <server>として実行されるとき、AIクライアントが生成する透過的プロキシとして動作します。
  2. The Hub/TUI(ハブ/TUI): 引数なしでmcpsnoopとして実行されるとき、ターミナルインターフェースを起動します。

これら2つのコンポーネントは、よく知られたソケットとディスク上のログを介して通信します。TUIはディスクから過去のセッションをバックフィル(補完)するため、UIはAIクライアントが開始される前でも後でも開くことができます。

ストリーミング可能なHTTPサーバーの場合、mcpsnoopは以下のコマンドを使用してリバースプロキシとして機能できます: mcpsnoop http --target http://localhost:3000/mcp --listen :7000

他のMCPツールとの比較

機能 MCP Inspector mcp-trace mcpsnoop
実際のクライアント–サーバー間のトラフィックを見る No Yes Yes
インタラクティブなターミナルUI No Yes Yes
設定なし / フラグなし Yes No No
機能(capabilities)の検査 部分的 No Yes
キャプチャされた呼び出しのリリプレイ No No Yes
単一バイナリ(ランタイム依存関係なし) No Varies Yes

インストール

mcpsnoopは、Go、Homebrew、またはビルド済みバイナリのダウンロードによってインストールできます:

  • Go: go install github.com/kerlenton/mcpsnoop/cmd/mcpsnoop@latest
  • Homebrew: brew tap kerlenton/mcpsnoop && brew install mcpsnoop

コミュニティの洞察

このツールは、AIクライアントのワークフローにおける重要な可視化ギャップを解消することとして称賛されていますが、コミュニティの議論では、将来の成長の可能性のある領域が示唆されています:

"Remote debugging(リモートデバッグ)とpost-mortem debugging(事後解析デバッグ)のサポートが有用かもしれません。AegisやLiteLLMのような、多くのAI監査可能プロキシが存在します... 例えば、これらは実行前ファイアウォールとして、暗号学的監査トレイルを暗食します。"

他のユーザーは、データの閲覧のためにブラウザベースのインターフェースの追加、またはネットワーク分析をプロトコルにさらに統合するために、Wireshark自体へのMCPサーバーの作成を提案しています。

Sources