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.
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:
| Herramienta | La 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 servidorgithubcarga 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 segundos —
mcpwatch auditcalcula el precio de tus servidores configurados sin instrumentación, sin reiniciar el cliente y sin esperar tráfico. - Una factura de tokens detallada —
mcpwatch costcalcula 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 agente —
token_costs,recent_failures,server_health,find_calls,get_callcomo herramientas MCP, además de--jsonen 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-redactpara desactivar,MCPWATCH_REDACT_EXTRApara agregar patrones. - Exportación de sesión —
mcpwatch export <id>produce un archivo HTML autocontenido: un informe de error compartible y sin scripts de exactamente lo que sucedió. - También servidores HTTP —
mcpwatch http <url>es un proxy inverso de grabación para servidores HTTP Streamable (respuestas SSE incluidas). - Tus datos, tu disco —
mcpwatch gcpara retención; elimina~/.mcpwatchy 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
| mcpwatch | MCP Inspector | mcpsnoop | Observabilidad SaaS de agentes | |
|---|---|---|---|---|
| Te dice cuánto cuesta tu configuración en tokens | ✅ cost | ❌ | ❌ | parcial (gasto, no impuesto por servidor) |
| Tu agente puede consultar la grabación | ✅ Herramientas MCP | ❌ | ❌ | ❌ |
| Sesiones reales de tu cliente real | ✅ | ❌ herramienta de desarrollo manual | ✅ | ✅ |
| Flujo de trabajo sin interfaz / solo terminal | ✅ doctor, tail | ❌ | ✅ | ❌ |
| Panel web | ✅ | ✅ | ❌ TUI de terminal | ✅ |
| Configuración de todo el cliente con un comando | ✅ init | ❌ | ❌ 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.0 | ❌ | ❌ | varí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
| Comando | Qué 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 mcp | Ejecuta mcpwatch como un servidor MCP (tu cliente lo inicia; normalmente no lo harás) |
mcpwatch connect | Imprime la configuración de copiar y pegar para Claude Code / Codex / Cursor |
mcpwatch unwrap | Restaura las configuraciones originales |
mcpwatch status | Muestra 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.