Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mcp-inventory

CI License: MIT

¿Qué herramientas MCP tienen realmente cargadas tus agentes?

Hoy ningún dev puede responderlo con certeza. Los servidores MCP viven repartidos en varios archivos de config (Claude Code, Claude Desktop, Cursor, VS Code) y lo único que ves es el nombre del servidor, nunca las tools que expone. mcp-inventory descubre esos configs, se conecta a cada servidor declarado, hace el handshake MCP y pide tools/list. El resultado es un inventario real, medido — no una suposición.

Uso

npx mcp-inventory

Sin instalación previa. Solo necesitás Node.js ≥ 18.

5 servidores · 41 herramientas

  Claude Code (global)
    context7             2 tools    stdio
    playwright           24 tools   stdio
    sequential-thinking  1 tool     stdio
    obsidian-vault       14 tools   stdio

  Claude Code (project: /Users/jose)
    github               — error: missing required Authorization header

Un servidor que falla (falta credencial, binario inexistente, se cuelga) aparece como error en su fila y no tumba el resto de la corrida.

Detección de cambios ("rug pull")

Un servidor MCP puede cambiar sus tools bajo tus pies entre una corrida y otra: aparece/desaparece un servidor, se agrega/elimina una tool, o una tool cambia su description o su inputSchema (vector de prompt injection). mcp-inventory guarda un baseline que vos aprobás y te avisa cuando algo cambia.

npx mcp-inventory lock     # aprueba el estado actual → escribe mcp-inventory.lock
npx mcp-inventory check    # compara el estado actual vs el baseline
✗ drift detectado · 2 cambios

  + tool nueva:     playwright @ ~/.claude.json → browser_teleport
  ~ tool cambiada:  context7 @ ~/.claude.json → query-docs
  • Commiteá mcp-inventory.lock a tu repo: es el baseline compartido del equipo.
  • check sale con exit code 1 si hay drift, 0 si no, 2 ante error → úsalo en CI o en un pre-commit hook.
  • Un servidor que no responde ahora (ej: falta credencial) se reporta como unreachable, no como "tools eliminadas". El drift real no se confunde con ruido de configuración.

Opciones

Flag Descripción
--json Salida estructurada (inventario y check)
--timeout=<ms> Timeout por servidor (default: 5000)
--lockfile=<p> Ruta del lockfile (default: mcp-inventory.lock)
-h, --help Ayuda
npx mcp-inventory --json
{
  "summary": { "servers": 5, "tools": 41, "ok": 4, "failed": 1 },
  "servers": [
    {
      "name": "context7",
      "client": "Claude Code (global)",
      "source": "/Users/jose/.claude.json",
      "transport": "stdio",
      "ok": true,
      "toolCount": 2,
      "tools": ["resolve-library-id", "query-docs"],
      "serverInfo": { "name": "context7", "version": "1.0.0" }
    }
    // ...
  ]
}

Qué mira

Busca configs de MCP en las ubicaciones estándar por SO de cada cliente, más los archivos de proyecto del directorio actual:

Cliente Ubicación
Claude Code ~/.claude.json (global + servers por proyecto anidados)
Claude Desktop claude_desktop_config.json (macOS / Linux / Windows)
Cursor ~/.cursor/mcp.json, ./.cursor/mcp.json
VS Code mcp.json de usuario, ./.vscode/mcp.json (clave servers)
Proyecto ./.mcp.json

Cubre los transportes stdio y Streamable HTTP. El transporte legacy HTTP+SSE (protocolo 2024-11-05) queda fuera de esta fase.

Garantías

  • Solo lectura sobre los configs. Nunca los escribe ni modifica.
  • El único archivo que escribe es su propio mcp-inventory.lock, y solo con el comando lock.
  • Nunca ejecuta herramientas (tools/call): solo initialize + tools/list.
  • Nada cuelga la corrida: el timeout por servidor lo garantiza.
  • Sin telemetría, sin red propia. Todo local.

Alcance

  • Fase 0 — inventario (descubrir → tools/list → imprimir). ✅
  • Fase 1 — lockfile + detección de cambios (lock / check). ✅
  • Backlog: proxy / interceptación de tráfico, políticas / bloqueo, dashboard.

Cubre los transportes stdio y Streamable HTTP; el legacy HTTP+SSE (2024-11-05) queda fuera. Un límite deliberado: los archivos de proyecto se buscan solo en el directorio actual, no en un crawl de todo el disco (los servidores de Claude Code sí salen completos porque van en ~/.claude.json).

Desarrollo

git clone https://github.com/JoseFredes/mcp-inventory
cd mcp-inventory
npm install
npm run build
node dist/cli.js

Licencia

MIT

About

Inventario read-only de las herramientas MCP que tus agentes realmente tienen cargadas

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages