mcpField
M
mcpwatch

mcpwatch

ローカル
github.com開発ツール08 週間前に更新

mcpwatch について

mcpwatchは、コーディングエージェントを使う開発者向けの、MCP通信を記録・分析するローカルツールです。サーバーごとのトークンコストを集計し、コマンドライン、ダッシュボード、MCPツールで呼び出し履歴や状態を確認できます。

主な機能

  1. 01セッションごとのツール定義コストの監査
  2. 02リクエスト、レスポンス、状態、遅延の記録
  3. 03障害とサーバー状態の分析
  4. 04ローカルダッシュボードでの呼び出し確認
  5. 05保存記録内のシークレットのマスキング
  6. 06単体HTML形式でのセッション出力

活用シーン

  1. 01未使用なのにコンテキストコストを増やすサーバーの特定
  2. 02失敗または重複したツール呼び出しの追跡
  3. 03遅延やプロトコル破損のあるサーバーの確認
  4. 04記録したセッションの確認と共有

MCP 対応

mcpwatchはMCP通信をプロキシして記録し、MCPサーバーとしても動作します。コスト、障害、状態、呼び出し履歴を照会するツールを公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"sreelal727-mcpwatch": {
"command": "npx",
"args": [
"-y",
"@sreelal727/mcpwatch"
]
}
}
}
起動コマンドnpx -y @sreelal727/mcpwatch

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@sreelal727/mcpwatch0.4.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

👁 mcpwatch

インストールしたすべての MCP サーバーが、セッションのたびにトークンを消費しています。 請求額を確認して、削減しましょう。

mcpwatch は、コーディングエージェント(Claude Code、Codex、Cursor、 Claude Desktop)と MCP サーバー間の実際の通信を記録し、その構成がコンテキストを どれだけ消費しているかを明細にして、何を削除すればよいかを正確に教えてくれます。

コマンドは 1 つ。すべてローカルで完結。設定不要。アカウントも一切不要です。

npm CI License: MIT Node ≥ 22 PRs welcome


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 が自分自身のプロキシでラップされることはありません。そうしなければ、通信についてエージェントが尋ねるたびに、通信がさらに増えてしまいます。

比較

mcpwatchMCP InspectormcpsnoopSaaS エージェントオブザーバビリティ
セットアップにかかるトークンコストを確認できます✅ 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 mcpmcpwatch を MCP サーバーとして実行します(クライアントが起動するため、通常は自分で実行する必要はありません)
mcpwatch connectClaude 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

コントリビューションを歓迎します。今後の予定についてはロードマップをご覧ください。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。