mcpwatch

Descubre cuánto te cuestan tus servidores MCP en tokens y recórtalo. Registra cada llamada de herramienta MCP y detalla el impuesto de tokens por sesión que cobra cada servidor, luego clasifica qué eliminar. También expone la grabación a tu agente como herramientas. 100% local, MIT.

Documentación

👁 mcpwatch

Cada servidor MCP que has instalado te está cobrando tokens en cada sesión. Mira la factura — y recórtala.

mcpwatch registra el tráfico real entre tu agente de codificación (Claude Code, Codex, Cursor, Claude Desktop) y tus servidores MCP, y luego detalla lo que esa configuración te cuesta realmente en contexto — y te dice exactamente qué eliminar.

Un comando. Todo local. Cero configuración. Sin cuenta, nunca.

npm CI License: MIT Node ≥ 22 PRs welcome


Esto es lo que nadie te cuenta cuando instalas un servidor MCP: sus definiciones de herramientas se inyectan en el contexto de tu agente al inicio de cada sesión, uses o no ese servidor. Una integración grande de un proveedor con 50 herramientas puede costarte más de 15,000 tokens antes de que escribas una palabra. Lo pagas de nuevo en la siguiente sesión, y en la siguiente.

Además, estás pagando por respuestas de herramientas que devuelven 200 kB cuando necesitabas una fila, llamadas que fallan y se reintentan, y agentes que vuelven a buscar cosas que ya tenían.

Nada de eso aparece en ningún lado. mcpwatch registra los bytes reales en el cable y los convierte en una factura detallada.

Ve tu número en diez segundos

Sin configuración, sin reinicio, sin esperas. Esto inicia cada servidor MCP que ya tienes configurado, le pide su lista de herramientas como lo hace tu cliente, lo mide y lo apaga:

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.

Ese es el costo fijo, y se puede conocer sin registrar nada.

Luego descubre lo que realmente usas

Cuáles de esas herramientas llamas sí requiere tráfico real. Instrumenta una vez, trabaja con normalidad durante un día y pregunta:

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.

Mira esos dos primeros números juntos: $21.81 de esos $24.70 de factura mensual son definiciones de herramientas — el costo de simplemente tener servidores configurados, antes de que tu agente haga una sola cosa útil. Y el más grande nunca ha sido llamado.

Ese es el punto de toda la herramienta. No es "aquí tienes un panel, ve a buscar algo", sino elimina esta línea de tu configuración y deja de pagar 10,762 tokens cada sesión por un servidor que nunca has usado.

La proyección usa tu tasa de inicio observada de tu grabación — no es una suposición, y no aparece en absoluto hasta que hay suficiente historial para ser honesto.

(Instala una vez con npm i -g @sreelal727/mcpwatch y cada comando es solo mcpwatch ….)

Tu agente también puede leer la factura

init también registra mcpwatch como un servidor MCP, para que tu agente obtenga estas herramientas sin configuración adicional:

HerramientaLa pregunta que responde
token_costs"¿Cuánto me está costando mi configuración MCP y qué debería eliminar?"
recent_failures"¿Qué acaba de fallar, con qué argumentos y qué dijo el servidor?"
server_health"¿Ese servidor está fallando, lento, colgado o corrompiendo el protocolo?"
find_calls"¿Esta herramienta ha funcionado alguna vez? ¿Qué argumentos usé la última vez?"
get_call"Muéstrame el JSON exacto de solicitud y respuesta de la llamada #412."

Así que puedes simplemente preguntar, en el cliente que ya usas:

Tú: mi contexto se sigue llenando, ¿qué lo está consumiendo?

Agente: (llama a token_costs) Tu servidor github carga 46 definiciones de herramientas — 10,762 tokens — en cada sesión, y no lo has llamado ni una vez en los últimos 30 días. Eso son aproximadamente 1.4M de tokens en ese período. Tu servidor de sistema de archivos también releyó archivos idénticos 132 veces. ¿Quieres que quite github de tu configuración?

Las descripciones están escritas como condiciones de activación, para que el agente las use por sí solo — recent_failures después de una llamada de herramienta fallida, token_costs cuando mencionas contexto o costo — en lugar de esperar a que le digan que existen.

También te dice qué está roto

La misma grabación responde las preguntas de confiabilidad, en un comando:

$ 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 transmite llamadas en vivo, una línea cada una. Todo toma --json, para que los agentes con solo acceso a shell (Codex en una terminal de VS Code, hooks, CI) también puedan leerlo. Y mcpwatch ui abre un panel local en 127.0.0.1 cuando prefieres mirar tú mismo.

Lo que obtienes

  • Un número en diez segundosmcpwatch audit calcula el precio de tus servidores configurados sin instrumentación, sin reiniciar el cliente y sin esperar tráfico.
  • Una factura de tokens detalladamcpwatch cost calcula el precio del impuesto por sesión de cada servidor, lo proyecta hacia adelante desde tu propio uso y clasifica qué eliminar: servidores sin usar, listas de herramientas infladas, respuestas sobredimensionadas, llamadas repetidas, llamadas fallidas.
  • Grabación legible por el agentetoken_costs, recent_failures, server_health, find_calls, get_call como herramientas MCP, además de --json en todo para agentes que solo tienen un shell. Tu agente deja de adivinar sobre sus propias llamadas de herramientas.
  • Panel en vivo — las sesiones se transmiten mientras tu agente trabaja: línea de tiempo de llamadas, puntos de estado, barras de latencia, inspección completa de JSON de solicitud/respuesta, filtrado, oscuro/claro.
  • Cada llamada registrada — solicitud/respuesta emparejadas con duración y estado (ok / rpc_error / tool_error), incluyendo fallos de herramientas en banda que los clientes a menudo tragan en silencio.
  • Detección de servidores con mal comportamiento — los servidores que escriben registros en stdout corrompen el protocolo MCP; mcpwatch registra esas líneas y las marca en lugar de romperse.
  • Redacción de secretos, activada por defecto — claves API, tokens bearer, JWTs y campos JSON con forma de contraseña se eliminan de la copia almacenada (nunca de la transmisión en vivo). --no-redact para desactivar, MCPWATCH_REDACT_EXTRA para agregar patrones.
  • Exportación de sesiónmcpwatch export <id> produce un archivo HTML autocontenido: un informe de error compartible y sin scripts de exactamente lo que sucedió.
  • También servidores HTTPmcpwatch http <url> es un proxy inverso de grabación para servidores HTTP Streamable (respuestas SSE incluidas).
  • Tus datos, tu discomcpwatch gc para retención; elimina ~/.mcpwatch y desaparece. Sin SaaS, sin cuentas, sin telemetría, nunca.

Cómo funciona

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 reescribe cada entrada de servidor stdio en la configuración de tu cliente para enrutar a través de mcpwatch run. El proxy canaliza los bytes sin tocarlos y analiza una copia de la transmisión — la captura está conectada independientemente del paso directo, así que incluso si la grabación falla, tu agente sigue funcionando. El paso directo es sagrado es el principio de diseño #1, aplicado en código y cubierto por pruebas de extremo a extremo que manejan un cliente MCP real a través del proxy.

init también agrega mcpwatch a tu cliente como un servidor MCP, lo que cierra el ciclo: el grabador se convierte en una herramienta que el agente puede llamar. Nunca es envuelto por su propio proxy — de lo contrario, cada pregunta que el agente hiciera sobre el tráfico se convertiría en más tráfico.

Cómo se compara

mcpwatchMCP InspectormcpsnoopObservabilidad SaaS de agentes
Te dice cuánto cuesta tu configuración en tokenscostparcial (gasto, no impuesto por servidor)
Tu agente puede consultar la grabaciónHerramientas MCP
Sesiones reales de tu cliente real❌ herramienta de desarrollo manual
Flujo de trabajo sin interfaz / solo terminaldoctor, tail
Panel web❌ TUI de terminal
Configuración de todo el cliente con un comandoinit❌ por servidor❌ cambios de SDK/agente
Seguimiento en vivo
Exportación de sesión HTML autocontenida
100% local, sin cuenta
Salvaguardas de políticas🔜 v1.0varía

(Todas son buenas herramientas — esto se trata de para qué trabajo sirve cada una. Inspector es excelente para probar un servidor que estás desarrollando; mcpsnoop es un visor de terminal sólido; las plataformas SaaS agregan funciones de flota en su infraestructura.)

Comandos

ComandoQué hace
mcpwatch audit [--json]Mide el costo por sesión de tus servidores configurados ahora mismo — sin configuración
mcpwatch init [--dry-run]Instrumenta tus clientes y le da a tu agente las herramientas de mcpwatch (copias de seguridad + reversible)
mcpwatch cost [--since 30d] [--rate N] [--json]Factura de tokens detallada: impuesto por sesión, proyección mensual, ahorros clasificados
mcpwatch doctor [--json]Informe de salud de una sola vez: servidores con errores, fallos, colgados, lentos o que corrompen el protocolo
mcpwatch tail [--json]Sigue las llamadas en vivo en la terminal, una línea cada una
mcpwatch mcpEjecuta mcpwatch como un servidor MCP (tu cliente lo inicia; normalmente no lo harás)
mcpwatch connectImprime la configuración de copiar y pegar para Claude Code / Codex / Cursor
mcpwatch unwrapRestaura las configuraciones originales
mcpwatch statusMuestra qué está instrumentado
mcpwatch ui [--port 4680]Panel local
mcpwatch run --name X -- <cmd>Envuelve un servidor stdio manualmente
mcpwatch http <url> [--port 4681]Proxy inverso de grabación para un servidor HTTP Streamable
mcpwatch sessions / calls <id>Vistas CLI de datos grabados
mcpwatch export <id> [--out f.html]Exportación de sesión HTML autocontenida
mcpwatch gc [--keep-days 30]Elimina sesiones antiguas, compacta la base de datos

Preguntas frecuentes

¿Qué tan precisos son los números de tokens? Se estiman a partir de los recuentos de bytes grabados a aproximadamente 4 caracteres por token, no se pasan por un tokenizador real — incluir uno significaría una dependencia nativa en una CLI que la gente instala globalmente. Son lo suficientemente precisos para clasificar qué es caro y para comparar servidores entre sí, que es en lo que actúas. No concilies una factura con ellos. Las cifras en dólares aplican una tarifa que puedes configurar con --rate (por defecto $5 por millón de tokens), y la tarifa asumida siempre se imprime.

¿Esto reducirá mi factura de hosting o base de datos? No directamente — mcpwatch es un grabador local, no infraestructura. Lo que sí muestra es trabajo redundante que golpea tus backends: llamadas idénticas repetidas, consultas sobredimensionadas, bucles de reintento. Arreglar eso reduce la cuota de API y la carga de la base de datos. Pero el titular honesto son los tokens de contexto, y ahí es donde están los ahorros realmente.

¿La grabación en sí cuesta tokens? No. La captura es una derivación a nivel de bytes en tu máquina; nada se agrega a ningún prompt. Las herramientas del agente solo entran en contexto cuando el agente realmente llama a una, y sus respuestas están limitadas y resumidas en lugar de volcadas.

¿Sobrecarga? El proxy es una derivación a nivel de bytes; el análisis y el almacenamiento ocurren en copias, fuera de la ruta crítica del protocolo. Si la captura alguna vez falla (disco lleno, lo que sea), se desactiva a sí misma y el tráfico sigue fluyendo.

¿Mis datos están seguros? Nunca salen de tu máquina: SQLite en ~/.mcpwatch, panel vinculado a 127.0.0.1, secretos redactados al momento de escribir por defecto. Las herramientas del agente leen esa misma base de datos local redactada — darle la grabación a tu agente no la envía a ningún lugar donde no ya estaba yendo.

Mi cliente no fue detectado automáticamente. Ejecuta mcpwatch connect para un fragmento de copiar y pegar para Claude Code (claude mcp add), Codex (~/.codex/config.toml), Cursor o cualquier otro cliente MCP. Nada de las herramientas del agente es específico de Claude — es un servidor MCP simple.

¿El agente lee todo mi historial cada vez? No. Las herramientas devuelven respuestas limitadas y resumidas (una docena de filas, argumentos previsualizados) y por defecto usan una ventana de tiempo reciente. Los payloads completos solo vuelven cuando el agente pide una llamada específica.

¿Qué pasa con las salvaguardas? Eso es v1.0: reglas de permitir/denegar por servidor/herramienta, prompts de confirmación para llamadas peligrosas y alertas de desviación de descripciones de herramientas (el ataque de "tirar de la alfombra"). El grabador que usas hoy es la base para eso. Consulta ROADMAP.md.

Desarrollo

npm install && npm run build && npm test

Monorepo: packages/cli (proxy + CLI + servidor de panel), packages/ui (panel React, se compila dentro del paquete CLI). Datos de demostración para hackear la interfaz:

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

Las contribuciones son bienvenidas — consulta la hoja de ruta para ver hacia dónde se dirige todo.

Licencia

MIT