mcpwatch について
mcpwatchは、コーディングエージェントを使う開発者向けの、MCP通信を記録・分析するローカルツールです。サーバーごとのトークンコストを集計し、コマンドライン、ダッシュボード、MCPツールで呼び出し履歴や状態を確認できます。
主な機能
- 01セッションごとのツール定義コストの監査
- 02リクエスト、レスポンス、状態、遅延の記録
- 03障害とサーバー状態の分析
- 04ローカルダッシュボードでの呼び出し確認
- 05保存記録内のシークレットのマスキング
- 06単体HTML形式でのセッション出力
活用シーン
- 01未使用なのにコンテキストコストを増やすサーバーの特定
- 02失敗または重複したツール呼び出しの追跡
- 03遅延やプロトコル破損のあるサーバーの確認
- 04記録したセッションの確認と共有
MCP 対応
mcpwatchはMCP通信をプロキシして記録し、MCPサーバーとしても動作します。コスト、障害、状態、呼び出し履歴を照会するツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
👁 mcpwatch
インストールしたすべての MCP サーバーが、セッションのたびにトークンを消費しています。 請求額を確認して、削減しましょう。
mcpwatch は、コーディングエージェント(Claude Code、Codex、Cursor、 Claude Desktop)と MCP サーバー間の実際の通信を記録し、その構成がコンテキストを どれだけ消費しているかを明細にして、何を削除すればよいかを正確に教えてくれます。
コマンドは 1 つ。すべてローカルで完結。設定不要。アカウントも一切不要です。
MCP サーバーをインストールするとき、誰も教えてくれないことがあります。そのサーバーを使うかどうかにかかわらず、ツール定義は毎回のセッション開始時にエージェントのコンテキストへ注入されます。 50 個のツールを備えた大規模なベンダー統合では、ひと言も入力する前に 15,000 トークン以上を消費することがあります。次のセッションでも、その次のセッションでも、同じコストがかかります。
さらに、必要なのは 1 行だけなのに 200 kB を返すツールの応答や、失敗して再試行される呼び出し、すでに取得した情報をエージェントが再取得することにもコストがかかります。
こうしたコストはどこにも表示されません。mcpwatch は実際に通信したバイト数を記録し、明細付きの請求額にまとめます。
10 秒でコストを確認
セットアップ不要、再起動不要、待ち時間もありません。設定済みの各 MCP サーバーを起動し、クライアントと同じ方法でツール一覧を取得してサイズを測定した後、終了します。
npx @sreelal727/mcpwatch audit
Every new session pays ~9,262 tokens ($0.05) to load these tool definitions,
before you type a word:
github 8,825 tokens 52 tools 95% Cursor
filesystem 437 tokens 6 tools 5% Cursor
9,262 tokens every session
At 10 sessions a day that is ~2,778,600 tokens a month ($13.89 at $5/M) spent
before any work happens.
"github" alone is 95% of that. If you do not use it in every project, moving it to
the projects that need it is the single biggest win available to you.
これは固定コストであり、何も記録しなくても把握できます。
実際に使っているものを確認
実際の通信が必要なのは、どのツールを呼び出しているかです。一度計測を設定して、1 日いつもどおりに作業してから、次のコマンドを実行してください。
npx @sreelal727/mcpwatch init # then restart your client
npx @sreelal727/mcpwatch cost # a day later
Your MCP setup costs ~12,486 tokens per session before you type a word ($0.06 at $5/M tokens).
PER-SESSION TAX — tool definitions loaded into every new session:
github 10,762 tokens 46 tools, none used ← never called
filesystem 780 tokens 8 tools, 2 used
postgres 944 tokens 9 tools, 1 used
12,486 tokens, every session
AT YOUR ACTUAL PACE — 34.9 server startups/day over 11.3 days:
~4,362,755 tokens/month ($21.81) on tool definitions alone, before any work happens
~4,939,089 tokens/month ($24.70) all in
BIGGEST SAVINGS — ~1,510,287 tokens ($7.55) of the above bought you nothing:
1. 1,420,584 tokens (10,762 of them every session) — github: 46 tools loaded into
every session, never called
→ Remove "github" from your MCP config (or load it only in projects that need it).
2. 85,523 tokens — filesystem: 132 repeat calls with identical arguments in the same session
→ The agent re-fetched the same thing — usually a sign it lost the earlier result.
3. 4,180 tokens — postgres: 33 failed calls
→ Fix or remove postgres's failing calls — each one costs context and a retry too.
最初の 2 つの数字を合わせて見てください。月額請求額 24.70 ドルのうち、21.81 ドルはツール定義のコストです。サーバーを設定しているだけでかかるコストであり、エージェントが役に立つ作業を 1 つでも行う前から発生しています。そして、最もコストの高いサーバーは一度も呼び出されていません。
このツールの目的はそこにあります。「ダッシュボードを用意したので、何か探してください」ではなく、設定からこの 1 行を削除して、一度も使っていないサーバーに毎セッション 10,762 トークンを払い続けるのをやめましょうということです。
予測には、あなたの記録から観測したあなたの起動頻度を使用します。推測ではなく、十分な履歴が集まるまでは表示されません。
(npm i -g @sreelal727/mcpwatch で一度インストールすれば、あとはすべて mcpwatch … で実行できます。)
エージェントも請求額を確認できます
init は mcpwatch を MCP サーバーとしても登録するため、追加設定なしでエージェントが次のツールを利用できます。
| ツール | 回答する質問 |
|---|---|
token_costs | 「MCP の構成にいくらかかっていますか?何を削除すべきですか?」 |
recent_failures | 「何が壊れましたか?どんな引数を使い、サーバーは何と応答しましたか?」 |
server_health | 「そのサーバーはクラッシュしていますか、遅いですか、応答が止まっていますか、それともプロトコルを破損させていますか?」 |
find_calls | 「このツールが正常に動作したことはありますか?前回はどんな引数を使いましたか?」 |
get_call | 「呼び出し #412 の正確なリクエストとレスポンスの JSON を表示してください。」 |
そのため、いつも使っているクライアントで、ただ質問するだけです。
あなた: コンテキストがすぐいっぱいになるのですが、何が消費していますか?
エージェント: (
token_costsを呼び出します)githubサーバーはツール定義を 46 個読み込んでおり、 すべてのセッションで 10,762 トークンを消費していますが、過去 30 日間に一度も呼び出されていません。 この期間で約 140 万トークンに相当します。ファイルシステムサーバーも、同じファイルを 132 回読み直しています。 設定から github を削除しましょうか?
説明はトリガー条件として書かれているため、エージェントはツールの存在を教えられるのを待たずに、自分で必要なツールを呼び出します。たとえば、ツール呼び出しの失敗後には recent_failures を、コンテキストやコストについて話題にしたときには token_costs を使います。
問題の内容も確認できます
同じ記録を使って、信頼性に関する疑問にも、1 つのコマンドで答えられます。
$ mcpwatch doctor
2 error(s) in 19 MCP calls across 3 server(s) in the last 24h.
! web-fetch 5 calls, no errors, avg 152ms last seen 32s ago
1 non-protocol stdout line (this server logs to stdout, which corrupts MCP)
✗ database 7 calls, 2 errors (29%), avg 227ms last seen 34s ago
high error rate
slowest: run_query at 1.3s
✓ filesystem 7 calls, no errors, avg 54ms last seen 36s ago
[#14] 2s ago database/does_not_exist tool_error (2ms)
error: MCP error -32602: Tool does_not_exist not found
session fd14d19f · full payloads: get_call(14)
mcpwatch tail は呼び出しを 1 行ずつリアルタイムで出力します。すべてのコマンドで --json を使えるため、シェルアクセスしかないエージェント(VS Code ターミナルの Codex、フック、CI)も読み取れます。また、自分で確認したい場合は、mcpwatch ui で 127.0.0.1 上にローカルダッシュボードを開けます。
利用できる機能
- 10 秒でわかる数値 —
mcpwatch auditは、計測機能の追加も、クライアントの再起動も、トラフィックの発生を待つ必要もなく、設定済みのサーバーのコストを算出します。 - 項目別のトークン請求額 —
mcpwatch costは、サーバーごとのセッションあたりのコストを算出し、実際の利用状況に基づいて予測したうえで、削除候補を順位付けします。使われていないサーバー、肥大化したツール一覧、サイズの大きすぎるレスポンス、繰り返された呼び出し、失敗した呼び出しを確認できます。 - エージェントが読み取れる記録 — MCP ツールとして利用できる
token_costs、recent_failures、server_health、find_calls、get_callに加え、シェルしか使えないエージェント向けに、すべてのコマンドで--jsonを利用できます。エージェントが自分のツール呼び出しについて推測する必要がなくなります。 - ライブダッシュボード — エージェントの動作中にセッションがリアルタイムで表示されます。呼び出しのタイムライン、ステータス表示、レイテンシバー、リクエスト/レスポンスの JSON 全体の確認、フィルタリング、ダーク/ライトモードに対応しています。
- すべての呼び出しを記録 — 所要時間とステータス(
ok/rpc_error/tool_error)を含む、リクエストとレスポンスのペアを記録します。クライアントが気づかれないまま握りつぶすことの多い、インバンドのツールエラーも対象です。 - 問題のあるサーバーを検出 — stdout にログを書き込むサーバーは MCP プロトコルを破損させます。mcpwatch はそのような行を記録してフラグを付けるため、プロトコルを壊しません。
- シークレットの自動マスキング(デフォルトで有効) — API キー、Bearer トークン、JWT、パスワードに見える JSON フィールドを、保存されたコピー から削除します(ライブストリームには影響しません)。無効にするには
--no-redactを指定し、パターンを追加するにはMCPWATCH_REDACT_EXTRAを使います。 - セッションのエクスポート —
mcpwatch export <id>は、自己完結型の HTML ファイルを 1 つ生成します。実際に起きたことを正確に共有できる、スクリプトを含まないバグレポートです。 - HTTP サーバーにも対応 —
mcpwatch http <url>は、Streamable HTTP サーバー(SSE レスポンスを含む)用の記録機能付きリバースプロキシです。 - データもディスクも自分のもの — 保存期間の管理には
mcpwatch gcを使います。~/.mcpwatchを削除すれば、データは消去されます。SaaS も、アカウントも、テレメトリーも一切ありません。
仕組み
your agent ──stdio──▶ mcpwatch run ──stdio──▶ your MCP server
▲ │
│ └── tee ──▶ SQLite (~/.mcpwatch)
│ │
└──── mcpwatch mcp ◀─────────────────────┤ the agent reads its own history
│
mcpwatch ui / doctor / tail ◀──────┘ you read it, when you want to
mcpwatch init は、クライアントの設定にある各 stdio サーバーのエントリを書き換え、mcpwatch run 経由で実行するようにします。プロキシはバイト列をそのまま通し、ストリームのコピーを解析します。キャプチャはパススルーとは独立して動作するため、記録に失敗してもエージェントは動き続けます。パススルーは最優先という原則は、設計原則の第 1 条です。コードで徹底され、実際の MCP クライアントをプロキシ経由で動かすエンドツーエンドテストで検証されています。
init は mcpwatch 自身も MCP サーバーとしてクライアントに追加し、一連の仕組みを完成させます。これにより、レコーダーがエージェントから呼び出せるツールになります。mcpwatch が自分自身のプロキシでラップされることはありません。そうしなければ、通信についてエージェントが尋ねるたびに、通信がさらに増えてしまいます。
比較
| mcpwatch | MCP Inspector | mcpsnoop | SaaS エージェントオブザーバビリティ | |
|---|---|---|---|---|
| セットアップにかかるトークンコストを確認できます | ✅ cost | ❌ | ❌ | 一部対応(支出額は確認できますが、サーバーごとのコストは確認できません) |
| エージェントが記録を検索できます | ✅ MCP ツール | ❌ | ❌ | ❌ |
| 実際のクライアントで記録した実セッション | ✅ | ❌ 手動の開発ツール | ✅ | ✅ |
| ヘッドレス/ターミナルのみのワークフロー | ✅ doctor、tail | ❌ | ✅ | ❌ |
| Web ダッシュボード | ✅ | ✅ | ❌ ターミナル TUI | ✅ |
| クライアント全体を 1 コマンドでセットアップ | ✅ init | ❌ | ❌ サーバーごと | ❌ SDK/エージェントの変更が必要 |
| ライブテール | ✅ | ❌ | ✅ | ✅ |
| 自己完結型 HTML セッションエクスポート | ✅ | ❌ | ❌ | ❌ |
| 100%ローカル、アカウント不要 | ✅ | ✅ | ✅ | ❌ |
| ポリシーガードレール | 🔜 v1.0 | ❌ | ❌ | さまざま |
(どのツールも優れています。それぞれがどの用途に向いているかを比較しています。Inspector は開発中のサーバーを試すのに最適です。mcpsnoop は優れたターミナルビューアーです。SaaS プラットフォームは、自社インフラ上でフリート管理機能を追加します。)
コマンド
| コマンド | 機能 |
|---|---|
mcpwatch audit [--json] | 設定済みサーバーのセッションあたりのコストを今すぐ測定します。セットアップは不要です |
mcpwatch init [--dry-run] | クライアントを計測し、エージェントに mcpwatch ツールを提供します(バックアップあり、元に戻せます) |
mcpwatch cost [--since 30d] [--rate N] [--json] | トークン料金の内訳を表示します。セッションあたりのコスト、月次予測、削減額ランキングを確認できます |
mcpwatch doctor [--json] | エラー、クラッシュ、応答停止、速度低下、またはプロトコル破損を起こしているサーバーを一括でヘルスレポートにまとめます |
mcpwatch tail [--json] | ターミナルで呼び出しをリアルタイムに追跡し、1 行ずつ表示します |
mcpwatch mcp | mcpwatch を MCP サーバーとして実行します(クライアントが起動するため、通常は自分で実行する必要はありません) |
mcpwatch connect | Claude Code/Codex/Cursor 用のコピー&ペースト可能なセットアップを表示します |
mcpwatch unwrap | 元の設定に復元します |
mcpwatch status | 計測対象を表示します |
mcpwatch ui [--port 4680] | ローカルダッシュボード |
mcpwatch run --name X -- <cmd> | 1 つの stdio サーバーを手動でラップします |
mcpwatch http <url> [--port 4681] | Streamable HTTP サーバー用の記録リバースプロキシ |
mcpwatch sessions / calls <id> | 記録データを CLI で表示します |
mcpwatch export <id> [--out f.html] | 自己完結型 HTML セッションエクスポート |
mcpwatch gc [--keep-days 30] | 古いセッションを削除し、データベースを圧縮します |
FAQ
トークン数はどの程度正確ですか? 実際のトークナイザーを使わず、記録されたバイト数からトークンあたり約 4 文字として推定しています。CLI はグローバルにインストールされるため、実際のトークナイザーを組み込むにはネイティブ依存関係が必要になります。どの処理にコストがかかるかを順位付けしたり、サーバー同士を比較したりするには十分な精度です。実際に役立つのはそうした用途です。この数値を請求書と照合しないでください。金額は --rate で設定できるレート(デフォルトでは 100 万トークンあたり 5 ドル)を適用しており、前提とするレートは常に表示されます。
ホスティングやデータベースの請求額は下がりますか? 直接は下がりません。mcpwatch はローカルで記録するツールであり、インフラストラクチャではありません。表示されるのは、バックエンドに対して繰り返される同一の呼び出し、過剰に大きなクエリ、再試行ループといった無駄な処理です。これらを修正すれば、API のクォータとデータベースの負荷を減らせます。ただし、率直に言えば、主なメリットはコンテキストトークンの削減であり、実際に節約できるのはそこです。
記録そのものにトークンを消費しますか? いいえ。キャプチャはお使いのマシン上で行われるバイトレベルのティーであり、プロンプトには何も追加されません。エージェントツールがコンテキストに入るのは、エージェントが実際に呼び出したときだけです。また、その回答は内容をそのまま出力するのではなく、上限を設けて要約されます。
オーバーヘッドはありますか? プロキシはバイトレベルのティーです。解析と保存はコピーに対して行われ、プロトコルのクリティカルパス上では実行されません。キャプチャに失敗した場合(ディスク容量不足など)は、キャプチャを無効にして、トラフィックの処理を継続します。
データは安全ですか? データがマシンの外部に送信されることはありません。SQLite データベースは ~/.mcpwatch に保存され、ダッシュボードは 127.0.0.1 にバインドされ、シークレットはデフォルトで書き込み時に秘匿化されます。エージェントツールは同じ秘匿化済みのローカルデータベースを読み取ります。エージェントに記録データを渡しても、もともと送信される予定のなかった場所にデータが送信されることはありません。
クライアントが自動検出されませんでした。 mcpwatch connect を実行すると、Claude Code(claude mcp add)、Codex(~/.codex/config.toml)、Cursor、その他の MCP クライアント向けに、コピーして貼り付けられる設定スニペットが表示されます。エージェントツールは Claude 専用ではなく、標準的な MCP サーバーです。
エージェントは毎回、履歴全体を読み取りますか? いいえ。ツールが返すのは、上限を設けて要約した回答(最大 12 行、引数はプレビュー表示)で、デフォルトでは直近の時間範囲が対象です。完全なペイロードが返されるのは、エージェントが特定の呼び出しを指定して要求した場合だけです。
ガードレールについてはどうなっていますか? それは v1.0 で対応予定です。サーバー/ツールごとの許可・拒否ルール、危険な呼び出しに対する確認プロンプト、ツールの説明の変化に関するアラート(「ラグプル」攻撃)を追加します。現在お使いのレコーダーが、その基盤となります。ROADMAP.md をご覧ください。
開発
npm install && npm run build && npm test
モノレポ:packages/cli(プロキシ+CLI+ダッシュボードサーバー)、packages/ui(React ダッシュボード。CLI パッケージ内にビルドされます)。
UI の開発に使えるデモデータ:
cd packages/cli
npx tsx scripts/seed-demo.ts /tmp/mcpwatch-demo.db --keep-running &
node dist/index.js ui --db /tmp/mcpwatch-demo.db
コントリビューションを歓迎します。今後の予定についてはロードマップをご覧ください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。