MCP Server Health Monitor

Monitoreo de salud para todos tus servidores MCP: sondas, seguimiento de SLA, gráficos de dependencias, reinicio automático

Documentación

MCP Server Health Monitor

Paquete npm mcp-server-health-monitor

Monitoreo de salud nativo de MCP que habla el protocolo, no solo HTTP. En lugar de hacer ping a un puerto, llama a list_tools en cada servidor — el mismo protocolo de negociación que usa tu agente — por lo que un estado verde significa que el servidor está realmente listo para atender solicitudes MCP. Todo el historial de salud permanece local en SQLite; no se requiere ningún servicio de monitoreo externo.

Referencia de herramientas | Configuración | Contribuciones | Solución de problemas

Características principales

  • Autodetección: Lee tus archivos de configuración MCP existentes (Claude Desktop, Cursor, VS Code) sin configuración adicional.
  • Sondeo no intrusivo: Solo llama a list_tools en los servidores objetivo — solo lectura, sin efectos secundarios.
  • Detección de desviación de versión: Compara los esquemas de herramientas entre comprobaciones para detectar cuándo se ha actualizado un servidor.
  • Tendencias históricas: Almacena el historial de latencia en SQLite; p50/p95 se calculan bajo demanda a partir del historial almacenado para detectar regresiones antes de que se conviertan en interrupciones.
  • Panel HTML: Genera un panel de salud autocontenido con minigráficos de disponibilidad por servidor.
  • Sondeo en segundo plano: Se ejecuta como un demonio para que los datos de salud estén siempre actualizados cuando los solicites.

¿Por qué esto en lugar de monitores de disponibilidad genéricos?

Los monitores de disponibilidad genéricos (UptimeRobot, Pingdom, BetterStack) verifican si un puerto está abierto o si un endpoint HTTP devuelve 200. Eso no es suficiente para los servidores MCP: un servidor puede estar en ejecución pero fallar al negociar el protocolo MCP o devolver un esquema de herramientas roto.

mcp-server-health-monitorMonitores de disponibilidad genéricos
Método de sondeoLlamada MCP list_tools — prueba el protocolo realPing HTTP o verificación de puerto TCP
Detección de desviación de esquemaDetecta cuando las firmas de herramientas cambian entre versionesNo es posible sin conocimiento del protocolo
Autodetección de configuraciónLee automáticamente las configuraciones de Claude Desktop, Cursor y VS CodeEntrada manual de URL por servidor
Residencia de datosSQLite local; sin servicio externoDatos de salud almacenados en la nube del proveedor
CostoGratuito, autoalojadoNivel gratuito limitado; de pago para historial/alertas

Si quieres saber que tus servidores MCP están genuinamente saludables — no solo «el proceso está en ejecución» — esta es la herramienta adecuada.

Requisitos

  • Node.js v20.19 o superior.
  • npm.

Primeros pasos

Añade la siguiente configuración a tu cliente MCP:

{
  "mcpServers": {
    "health-monitor": {
      "command": "npx",
      "args": ["-y", "mcp-server-health-monitor@latest"]
    }
  }
}

El monitor autodetecta otros servidores MCP del mismo archivo de configuración en el que está registrado. No se requiere configuración adicional.

Configuración del cliente MCP

Amp · Claude Code · Cline · Cursor · VS Code · Windsurf · Zed

Tu primer prompt

Introduce lo siguiente en tu cliente MCP para verificar que todo funciona:

Check the health of all my MCP servers.

Tu cliente debería devolver una tabla de estado que muestre cada servidor con su latencia actual y estado de salud.

Herramientas

Comprobaciones de salud (3 herramientas)

  • health_check_all — sondea todos los servidores configurados en paralelo mediante list_tools, mide la latencia y almacena los resultados. Acepta un parámetro opcional timeout_ms (predeterminado: 5000).
  • get_server_status — devuelve el detalle por servidor, incluidos latencia, hora de última vista, recuento de errores de 24 horas, último mensaje de error y percentiles de latencia p50/p95. Requiere server_name.
  • list_degraded — filtra los servidores que están fuera de línea o que tienen una latencia superior al umbral. Acepta una anulación opcional latency_threshold.

Historial (1 herramienta)

  • get_history — devuelve el historial bruto de comprobaciones de salud de un servidor específico, ordenado del más reciente al más antiguo. Requiere server_name; acepta limit opcional (predeterminado: 50, máximo: 500).

Registro de servidores (2 herramientas)

  • configure_server — registra un nuevo servidor MCP para monitorear. Los servidores añadidos de esta manera se almacenan en ~/.mcp/extra-servers.json y se fusionan con los servidores autodetectados. Requeridos: name, command. Opcionales: args, env.
  • remove_server — elimina un servidor registrado manualmente del monitoreo. Solo afecta a los servidores añadidos mediante configure_server; los servidores autodetectados no se ven afectados. Requiere name.

Actualizaciones (1 herramienta)

  • check_updates — detecta la desviación de versión calculando el hash de los esquemas de herramientas en cada sondeo y comparándolo con el último hash almacenado. Devuelve has_changed, previous_hash, current_hash y changed_at por servidor.

Exportación (1 herramienta)

  • export_dashboard — genera un panel HTML autocontenido de un solo archivo con tarjetas de resumen, tabla de estado por servidor con latencia p50/p95 y minigráficos de disponibilidad SVG integrados. Acepta un output_path opcional para escribir en disco.

Registro manual de servidores

Además de la autodetección desde archivos de configuración MCP, puedes registrar servidores que no estén en tu configuración de Claude Desktop usando la herramienta configure_server. Los servidores registrados manualmente se escriben en ~/.mcp/extra-servers.json (almacenados junto a la base de datos de salud) y se fusionan con los servidores autodetectados en cada sondeo.

Add a server named "my-internal-tool" running with command "node" and args ["/opt/tools/server.js"]

Para dejar de monitorear un servidor registrado manualmente:

Remove the server named "my-internal-tool" from monitoring

Los servidores descubiertos desde la configuración de Claude Desktop no se pueden eliminar mediante remove_server: edita tu archivo de configuración MCP directamente para eliminarlos.

Configuración

--interval / --interval-seconds

Con qué frecuencia sondear cada servidor MCP, en segundos.

Tipo: number Predeterminado: 60

--latency-threshold

Latencia en milisegundos por encima de la cual un servidor se marca como degradado.

Tipo: number Predeterminado: 1000

--db / --db-path

Ruta al archivo de base de datos SQLite utilizado para almacenar el historial de salud.

Tipo: string Predeterminado: ~/.mcp/health.db

--daemon

Se ejecuta como un demonio de sondeo en segundo plano. Los datos de salud se recopilan continuamente en lugar de bajo demanda.

Tipo: boolean Predeterminado: false

--startup-grace-seconds

Período de gracia en segundos antes de que un servidor recién iniciado se considere no saludable.

Tipo: number Predeterminado: 10

Pasa las banderas mediante la propiedad args en tu configuración JSON:

{
  "mcpServers": {
    "health-monitor": {
      "command": "npx",
      "args": ["-y", "mcp-server-health-monitor@latest", "--interval=30", "--latency-threshold=500"]
    }
  }
}

Listados

  • Listado en el Registro MCP — busca mcp-server-health-monitor.
  • Listado en MCP Market — busca mcp-server-health-monitor.

Verificación

Antes de publicar una nueva versión, verifica el servidor con MCP Inspector para confirmar que todas las herramientas se exponen correctamente y que el protocolo de negociación se completa con éxito.

Interfaz interactiva (abre el navegador):

npm run build && npm run inspect

Modo CLI (scripteado / apto para CI):

# List all tools
npx @modelcontextprotocol/inspector --cli node dist/index.js --method tools/list

# List resources and prompts
npx @modelcontextprotocol/inspector --cli node dist/index.js --method resources/list
npx @modelcontextprotocol/inspector --cli node dist/index.js --method prompts/list

# Call a tool (example — replace with a relevant read-only tool for this plugin)
npx @modelcontextprotocol/inspector --cli node dist/index.js \
  --method tools/call --tool-name health_check_all

# Call a tool with arguments
npx @modelcontextprotocol/inspector --cli node dist/index.js \
  --method tools/call --tool-name health_check_all --tool-arg key=value

Ejecuta antes de publicar para detectar regresiones en el registro de herramientas y en el arranque en tiempo de ejecución.

Contribuciones

Los módulos de sondeo viven en src/probes/. Cada sonda debe devolver un ProbeResult con status, latencyMs y un message opcional. Mantén todas las sondas de solo lectura: nunca desencadenes efectos secundarios en los servidores monitoreados.

npm install && npm test