/ Directorio / Playground / PerformanceMonitor
● Comunidad erikdarlingdata ⚡ Instantáneo

PerformanceMonitor

por erikdarlingdata · erikdarlingdata/PerformanceMonitor

¿Por qué SQL Server es lento? Obtén estadísticas de espera, cadenas de bloqueo y análisis de planes en lenguaje natural a través del MCP de Erik Darling.

PerformanceMonitor es la aplicación gratuita de monitoreo de SQL Server de Erik Darling con un servidor MCP integrado. Expone más de 50 herramientas de diagnóstico de solo lectura (estadísticas de espera, bloqueos, deadlocks, analizador de planes, tempdb, memoria) sobre HTTP en localhost, permitiendo que un agente de IA haga el triaje de primera pasada en un servidor lento o atascado.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

performancemonitor.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "performancemonitor": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/erikdarlingdata/PerformanceMonitor"
      ],
      "_inferred": true
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "performancemonitor": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/erikdarlingdata/PerformanceMonitor"
      ],
      "_inferred": true
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "performancemonitor": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/erikdarlingdata/PerformanceMonitor"
      ],
      "_inferred": true
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "performancemonitor": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/erikdarlingdata/PerformanceMonitor"
      ],
      "_inferred": true
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "performancemonitor",
      "command": "TODO",
      "args": [
        "See README: https://github.com/erikdarlingdata/PerformanceMonitor"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "performancemonitor": {
      "command": {
        "path": "TODO",
        "args": [
          "See README: https://github.com/erikdarlingdata/PerformanceMonitor"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add performancemonitor -- TODO 'See README: https://github.com/erikdarlingdata/PerformanceMonitor'

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: PerformanceMonitor

Triaje de un SQL Server lento durante un incidente

👤 DBAs, SREs en guardia para problemas de base de datos ⏱ ~5 min intermediate

Cuándo usarlo: Los usuarios reportan timeouts y necesitas saber quién está bloqueando a quién en los próximos 60 segundos.

Requisitos previos
  • Aplicación PerformanceMonitor instalada y conectada al servidor de destino — Descárgala desde GitHub releases y apúntala a tu base de datos de monitoreo
  • El login de destino tiene VIEW SERVER STATE — GRANT VIEW SERVER STATE TO [monitor_login]
  • MCP registrado con tu cliente — claude mcp add --transport http --scope user sql-monitor http://localhost:5151/
Flujo
  1. Obtén el resumen de salud
    Ejecuta el chequeo de salud — ¿hay banderas rojas en esperas, bloqueos o presión de memoria ahora?✓ Copiado
    → Lista corta de métricas elevadas
  2. Profundiza en el problema principal
    Si el bloqueo es el problema principal, muéstrame la cadena de bloqueadores principal y el texto SQL de la sesión bloqueadora.✓ Copiado
    → SPID específico + texto de consulta
  3. Obtén una recomendación
    ¿Debo matar ese SPID, esperar, o hay un índice faltante que evitaría esto? Sé específico.✓ Copiado
    → Una acción recomendada clara con justificación

Resultado: Un incidente diagnosticado con una acción específica siguiente — matar, esperar, índice o escalar — en menos de 5 minutos.

Errores comunes
  • Matar un bloqueador que estaba a punto de hacer commit puede causar más daño — Siempre pregunta cuánto tiempo lleva ejecutándose y si mantiene una transacción abierta antes de matarlo
  • Las métricas de la base de datos de monitoreo retrasan el servidor real por el intervalo del colector — Para vista en vivo, usa las herramientas de 'estado actual' en lugar de historial agregado
Combinar con: sentry

Analizar un plan de consulta lento con revisión asistida por IA

👤 Desarrolladores backend y DBAs sintonizando consultas ⏱ ~15 min intermediate

Cuándo usarlo: Una consulta es lenta y el plan tiene 200 operadores — no quieres leerlo manualmente.

Flujo
  1. Obtén el plan
    Obtén el plan más reciente para el hash de consulta 0xA1B2C3 y ejecuta el PlanAnalyzer en él.✓ Copiado
    → Plan + lista de hits de reglas
  2. Explica el hit de regla peor
    Explica el hit de regla #1 en lenguaje comprensible — qué está pasando y por qué es malo.✓ Copiado
    → Explicación de 2-3 frases en lenguaje claro sin jerga
  3. Sugiere una solución
    Sugiere el cambio más pequeño para solucionarlo: índice, reescritura o actualización de estadísticas. Estima el impacto.✓ Copiado
    → DDL concreta o reescritura

Resultado: Una acción de sintonización específica respaldada tanto por evidencia de plan como por la regla del PlanAnalyzer.

Errores comunes
  • El plan fue almacenado en caché en una ruta diferente de parameter sniffing — Regenera el plan con OPTION(RECOMPILE) antes de confiar en su forma

Producir un resumen de salud semanal de SQL Server

👤 Propietarios de bases de datos que quieren monitoreo pasivo, no guardia en vivo ⏱ ~20 min beginner

Cuándo usarlo: Resumen del viernes por la tarde; sabe antes de que los usuarios te lo digan.

Flujo
  1. Extrae estadísticas de semana a semana
    Compara las esperas principales y las consultas principales esta semana vs la semana pasada. Marca cualquier cosa que se haya puesto materialmente peor.✓ Copiado
    → Deltas con porcentajes
  2. Redacta un resumen comprensible para el equipo
    Escribe un resumen de salud de una página — bueno/malo/feo — para el canal de ingeniería.✓ Copiado
    → Post de markdown listo para pegar

Resultado: Un post de salud compartible semanal con items concretos para rastrear la próxima semana.

Combinar con: sentry

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

performancemonitor + sentry

Sentry marca un pico de timeout; haz referencia cruzada con el bloqueo de SQL Server en la misma marca de tiempo

El evento de Sentry a las 14:03 UTC muestra SqlException. ¿Qué estaba pasando en la base de datos entre 14:02 y 14:04 — hay picos de bloqueo o esperas?✓ Copiado
performancemonitor + github

Encuentra el commit que introdujo una consulta lenta

El hash de consulta 0xA1B2 comenzó a aparecer en el top 10 el 2026-03-22. Encuentra commits de GitHub en la capa de acceso a datos alrededor de esa fecha.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
get_top_waits server_name?: str, hours_back?: int Primera parada en cualquier triaje — en qué está esperando realmente el servidor 1 consulta SQL en la base de datos de monitoreo
get_active_blocking server_name?: str Investigación de bloqueo en vivo 1 consulta
get_deadlocks server_name?: str, hours_back?: int Cualquier vez que alguien diga 'tuvimos un deadlock' 1 consulta
analyze_query_plan plan_handle: bin, or xml: str Sintonización de una consulta lenta específica 1 consulta + 30 evaluaciones de reglas
get_memory_clerks server_name?: str Investigación de presión de memoria 1 consulta
get_tempdb_usage server_name?: str Tempdb se está llenando o spills en planes 1 consulta

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Sin cuota externa; limitado por la capacidad de tu base de datos de monitoreo
Tokens por llamada
La mayoría de herramientas devuelven 200-2000 tokens; el plan XML puede ser 10k+
Monetario
Gratuito, código abierto (ediciones Lite y Full)
Consejo
La edición Lite es suficiente para la mayoría de tiendas de instancia única. Full agrega monitoreo entre servidores.

Seguridad

Permisos, secretos, alcance

Ámbitos mínimos: VIEW SERVER STATE en la instancia de destino
Almacenamiento de credenciales: Cadena de conexión de la base de datos de monitoreo gestionada en la configuración de la aplicación — permanece en tu máquina
Salida de datos: MCP se vincula solo a localhost; sin llamadas salientes desde el proceso MCP
No conceder nunca: sysadmin o db_owner — VIEW SERVER STATE es suficiente

Resolución de problemas

Errores comunes y soluciones

No se puede conectar a http://localhost:5151/

La aplicación no se está ejecutando o MCP está deshabilitado en Configuración. Abre la aplicación, habilita MCP y confirma el puerto.

Verificar: curl http://localhost:5151/
Error de inicio de sesión para el usuario

Las credenciales de la base de datos de monitoreo son incorrectas. Vuelve a introducirlas en la aplicación y confirma VIEW SERVER STATE.

Verificar: sqlcmd -S <server> -U <user> -P <pwd> -Q 'SELECT 1'
El analizador de planes no devuelve hallazgos en una consulta claramente lenta

El plan puede no estar en caché. Vuelve a ejecutar la consulta con OPTION(RECOMPILE) e intenta de nuevo.

Verificar: SELECT plan_handle FROM sys.dm_exec_query_stats WHERE ...
Puerto 5151 ya está en uso

Cambia el puerto MCP en Configuración (rango 1024-65535) y vuelve a registrarte con tu cliente.

Verificar: netstat -an | grep 5151

Alternativas

PerformanceMonitor vs otros

AlternativaCuándo usarlaContrapartida
sp_BlitzFirst / Brent Ozar scriptsPrefieres ejecutar procedimientos T-SQL directamente sin una aplicaciónSin MCP — pegas la salida en el chat tú mismo
SentryOne / Redgate SQL MonitorEntornos empresariales que ya tienen un monitor comercialPagado; la mayoría no exponen una superficie MCP
postgres MCPEstás en Postgres, no en SQL ServerBase de datos completamente diferente

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills