MCP Prometheus - MCP Server Seguro por ALMC Security 2025

MCP Prometheus

Ver en GitHub

MCP Prometheus

Un completo servidor de Protocolo de Contexto de Modelo (MCP) para Prometheus, escrito en Go.

Proporciona acceso completo a sus métricas, consultas e información del sistema Prometheus a través de interfaces MCP estandarizadas, permitiendo a los asistentes de IA ejecutar consultas PromQL, descubrir métricas, explorar etiquetas y analizar su infraestructura de monitorización.

Características

ejecución de consultas

  • Consultas instantáneas con marca de tiempo opcional y parámetros mejorados
  • Consultas de rango con límites de tiempo, intervalos de paso y opciones de rendimiento
  • Optimización de consultas con parámetros de tiempo de espera, límite y estadísticas
  • Truncamiento de resultados con guía inteligente del usuario para grandes conjuntos de datos

descubrimiento de métricas

  • Lista de todas las métricas disponibles con filtrado y selección basada en el tiempo
  • Obtenga metadatos detallados para métricas específicas
  • Exploración de métricas con opciones de filtrado mejoradas

🏷️ Descubrimiento de etiquetas y series

  • Listar todos los nombres de etiquetas con filtrado y límites
  • Obtenga valores de etiqueta para etiquetas específicas con filtrado avanzado
  • Búsqueda de series mediante comparadores de etiquetas con límites temporales
  • Coincidencia avanzada de etiquetas con selectores complejos

información sobre objetivos y sistemas

  • Raspe la información del objetivo y el estado de salud
  • Información de compilación y detalles de versión
  • Información de tiempo de ejecución y estado del sistema
  • Inspección de configuración y banderas
  • Estadísticas TSDB e información de cardinalidad

alertas y reglas

  • Supervisión de alertas activas
  • Detección y estado de AlertManager
  • Inspección de reglas de grabación y alerta

funciones avanzadas

  • Consultas de ejemplos para la correlación de trazas
  • Exploración de metadatos de destino
  • Soporte multi-tenant con IDs de organización dinámicos
  • Configuración dinámica del cliente por consulta

autenticación y transporte

  • Múltiples métodos de autenticación (Basic, Bearer token)
  • Cabeceras de organización multi-tenant (Cortex, Mimir, Thanos)
  • Múltiples protocolos de transporte (stdio, SSE, HTTP)
  • Distribución binaria multiplataforma

Instalación

Binarios precompilados

Descargue el último binario para su plataforma desde la página de versiones.

Desde el código fuente

git clone https://github.com/giantswarm/mcp-prometheus.git cd mcp-prometheus go build -o mcp-prometheus

Configuración

Configure el servidor MCP mediante variables de entorno (todas opcionales):

# Opcional: Configuración por defecto del servidor Prometheus export PROMETHEUS_URL=http://your-prometheus-server:9090 # Opcional: Credenciales de autenticación (elija una) # Para autenticación básica exportar PROMETHEUS_USERNAME=su_nombre_de_usuario exportar PROMETHEUS_PASSWORD=su_contraseña # Para autenticación de token de portador exportar PROMETHEUS_TOKEN=su_token # Opcional: ID de organización por defecto para configuraciones multi-tenant export PROMETHEUS_ORGID=your_organization_id

Configuración dinámica: Todas las herramientas MCP admiten los parámetros prometheus_url y org_id para la configuración por consulta, lo que le permite consultar múltiples instancias y organizaciones de Prometheus de forma dinámica.

Uso

Línea de comandos

Inicie el servidor con transporte stdio (por defecto):

./mcp-prometheus

Iniciar con transporte HTTP para clientes basados en web:

./mcp-prometheus serve --transport sse --http-addr :8080

Configuración del cliente MCP

Añada la configuración del servidor a su cliente MCP. Por ejemplo, con Claude Desktop:

{ "mcpServers": { "prometheus": { "command": "/ruta/a/mcp-prometheus", "args": ["serve"], "env": { "PROMETHEUS_URL": "http://your-prometheus-server:9090", "PROMETHEUS_ORGID": "your-default-org" } } }

Herramientas disponibles

🔍 Herramientas de ejecución de consultas

HerramientaDescripciónParámetros obligatoriosParámetros opcionales
mcp_prometheus_ejecutar_consultaEjecutar consulta instantánea PromQLconsultaprometheus_url, org_id, time, timeout, limit, stats, lookback_delta, unlimited
mcp_prometheus_ejecutar_consulta_de_rangoEjecutar consulta de rango PromQLconsulta, inicio, fin, pasoprometheus_url, org_id, timeout, limit, stats, lookback_delta, unlimited

📊 Herramientas de descubrimiento de métricas

HerramientaDescripciónParámetros obligatoriosParámetros opcionales
mcp_prometheus_list_metricsLista todas las métricas disponibles-prometheus_url, org_id, start_time, end_time, coincidencias
mcp_prometheus_get_metadata_métricaObtener los metadatos de una métrica específicamétricaprometheus_url, org_id, limit

🏷️ Herramientas de descubrimiento de etiquetas y series

HerramientaDescripciónParámetros obligatoriosParámetros opcionales
mcp_prometheus_list_label_namesObtener todos los nombres de etiquetas disponibles-prometheus_url, org_id, start_time, end_time, coincidencias, límite
mcp_prometheus_list_label_valuesObtener los valores de una etiqueta específicaetiquetaprometheus_url, org_id, start_time, end_time, coincidencias, límite
mcp_prometheus_encontrar_seriesBuscar series por coincidencias de etiquetascoincidenciasprometheus_url, org_id, start_time, end_time, limit

🎯 Herramientas de información sobre objetivos y sistemas

HerramientaDescripciónParámetros obligatoriosParámetros opcionales
mcp_prometheus_get_targetsObtener información de destino de raspado-prometheus_url, org_id
mcp_prometheus_get_build_infoObtener información de construcción de Prometheus-prometheus_url, org_id
mcp_prometheus_get_runtime_infoObtener información sobre el tiempo de ejecución de Prometheus-prometheus_url, org_id
mcp_prometheus_get_flagsObtener banderas de tiempo de ejecución de Prometheus-prometheus_url, org_id
mcp_prometheus_get_configObtener la configuración de Prometheus-prometheus_url, org_id
mcp_prometheus_get_tsdb_statsObtener estadísticas de cardinalidad de TSDB-prometheus_url, org_id, limit

🚨 Herramientas de alertas y reglas

HerramientaDescripciónParámetros obligatoriosParámetros opcionales
mcp_prometheus_get_alertsObtener alertas activas-prometheus_url, org_id
mcp_prometheus_get_alertmanagersObtener información de descubrimiento de AlertManager-prometheus_url, org_id
mcp_prometheus_get_rulesObtener reglas de grabación y alerta-prometheus_url, org_id

🔬 Herramientas avanzadas

HerramientaDescripciónParámetros obligatoriosParámetros opcionales
mcp_prometheus_query_exemplarsEjemplares de consulta para trazasconsulta, inicio, finprometheus_url, org_id
mcp_prometheus_get_targets_metadataObtener metadatos de objetivos específicos-prometheus_url, org_id, match_target, métrica, límite

parámetros mejorados

Parámetros de conexión (disponibles en todas las herramientas):

  • prometheus_url: URL del servidor Prometheus (por ejemplo,'http://localhost:9090')
  • org_id: ID de organización para configuraciones multi-tenant (por ejemplo, 'tenant-123')

Parámetros de mejora de consultas:

  • timeout: Tiempo de espera de la consulta (por ejemplo, '30s', '1m', '5m')
  • limit: número máximo de entradas devueltas
  • stats: Incluir estadísticas de consulta ('all')
  • lookback_delta: Delta de retroceso de la consulta (por ejemplo, '5m')
  • unlimited: Establecer como "true" para una salida ilimitada (ADVERTENCIA: puede afectar al rendimiento)

Parámetros de filtrado de tiempo:

  • start_time, end_time: Marcas de tiempo RFC3339 para el filtrado
  • coincidencias: Matriz de comparadores de etiquetas (por ejemplo, ['{job="prometheus"}', '{__name__=~"http_.*"}'])

Ejemplo de uso

Ejecución de consulta básica

{ "consulta": "up", "prometheus_url": "http://prometheus:9090", "org_id": "production" }

Consulta mejorada con opciones de rendimiento

{ "query": "rate(http_requests_total[5m])", "prometheus_url": "http://prometheus:9090", "timeout": "30s", "limit": "100", "stats": "all" }

Consulta de rango con límites temporales

{ "consulta": "cpu_usage_percent", "start": "2025-01-27T00:00:00Z", "end": "2025-01-27T01:00:00Z", "step": "1m", "prometheus_url": "http://prometheus:9090" }

Descubrimiento de etiquetas con filtrado

{ "prometheus_url": "http://prometheus:9090", "matches": ["up{job="kubernetes-nodos"}"], "limit": "20" }

Series Discovery

{"coincidencias": ["{__name__=~\"http_.*\", job="api-server"}"], "prometheus_url": "http://prometheus:9090", "start_time": "2025-01-27T00:00:00Z", "limit": "50" }

Consulta multiinquilino

{ "consulta": "container_memory_usage_bytes", "prometheus_url": "http://cortex-gateway:8080/prometheus", "org_id": "equipo-plataforma" }

Optimización del resultado de las consultas

El servidor MCP incluye una gestión inteligente de los resultados de las consultas:

  • Truncamiento automático para resultados > 50k caracteres
  • Guía del usuario para la optimización de consultas cuando los resultados son extensos
  • Consejos de rendimiento que incluyen funciones de agregación y filtrado
  • Opción de salida ilimitada con advertencias de rendimiento

Ejemplo de mensaje de truncamiento:

⚠️ RESULTADO TRUNCADO: La consulta devolvió un resultado muy grande (>50k caracteres). 💡 Para optimizar la consulta y obtener menos salida, considere: - Añadir filtros de etiquetas más específicos: {app="specific-app", namespace="specific-ns"} - Utilizar funciones de agregación: sum(), avg(), count(), etc. - Utilizar topk() o bottomk() para obtener sólo los N resultados superiores/inferiores 🔧 Para obtener el resultado completo sin truncar, añada "unlimited": "true" a los parámetros de consulta

Opciones de transporte

El servidor soporta múltiples protocolos de transporte:

stdio (por defecto)

./mcp-prometheus serve --transport stdio

SSE (Eventos enviados por el servidor)

./mcp-prometheus serve --transport sse --http-addr :8080

Streamable HTTP

./mcp-prometheus serve --transport streamable-http --http-addr :8080

Desarrollo

Arquitectura

El servidor sigue una arquitectura moderna y DRY:

  • Registro modular de herramientas con reutilización de parámetros
  • Creación dinámica de clientes para soporte multi-instancia
  • Gestión de errores y validación de parámetroscentralizadas
  • Funciones auxiliares para reducir la repetición de código en un 90%

Estructura del proyecto

mcp-prometheus/ ├── cmd/ # Comandos CLI e info de versión ├── internal/ │ ├── server/ # Contexto y configuración del servidor │ └── tools/prometheus/ # 18 herramientas MCP completas ├── main.go # Punto de entrada de la aplicación ├── go.mod # Dependencias de Go └── README.md # Esta documentación

Mejoras en la calidad del código

  • 500+ líneas reducidas a ~85 líneas en el registro principal
  • Eliminadas 255+ líneas de boilerplate redundante
  • Funciones de ayuda de parámetros para definiciones de parámetros DRY
  • Gestión centralizada de clientes con configuración dinámica
  • Gestión de errores coherente en todas las herramientas

Construcción y pruebas

# Build the binary go build -o mcp-prometheus # Run tests go test ./..

Autenticación

Autenticación básica

export PROMETHEUS_USERNAME=miusuario export PROMETHEUS_PASSWORD=micontraseña

Autenticación por token portador

export PROMETHEUS_TOKEN=mi-token de portador

Soporte multi-tenant

Perfecto para Cortex, Mimir, Thanos y otras configuraciones multi-tenant:

export PROMETHEUS_ORGID=tenant-123

Gestión de errores

Completa gestión de errores con mensajes detallados:

  • Falta de orientación en la configuración
  • Detalles defallos de autenticación
  • Solución de problemas deconectividad de red
  • Asistencia para consultasPromQL no válidas
  • Explicaciones deerrores de la API de Prometheus
  • Gestión de errores decreación de clientes dinámicos

Contribución

  1. Fork del repositorio
  2. Cree una rama de características(git checkout -b feature/amazing-feature)
  3. Confirme sus cambios(git commit -m 'Add some amazing feature')
  4. Empuja a la rama(git push origin feature/amazing-feature)
  5. Abrir una Pull Request

Licencia

Este proyecto está licenciado bajo los mismos términos que la implementación original en Python.


Relacionados en Servicio en la nube - MCP Servers Seguros

ServidorResumenAcciones
Servidor ONOS MCPUna implementación de servidor de Protocolo de Contexto de Modelo (MCP) que proporciona capacidades...Ver
AlpacaSe trata de un servidor de Protocolo de Contexto de Modelo (MCP) para Alpaca, que permite a LLMs com...Ver
Servidor MCP KubernetesVer
ThingsPanel MCPServidor MCP (Model Context Protocol) de ThingsPanel IoT Platform.Ver
Observabilidad de Alibaba Cloud阿里云可观测 MCP服务,提供了一系列访问阿里云可观测各产品的工具能力,覆盖产品包含阿里云日志服务SLS、...Ver
Servidor MCP Wuying AgentBayEspañol | 中文Ver