Prometheus MCP Server
Ein Model Context Protocol (MCP)-Server für Prometheus.
Dies ermöglicht den Zugriff auf Ihre Prometheus-Metriken und -Abfragen über standardisierte MCP-Schnittstellen, sodass KI-Assistenten PromQL-Abfragen ausführen und Ihre Metrikdaten analysieren können.
Merkmale
[x] PromQL-Abfragen gegen Prometheus ausführen
[x] Metriken entdecken und erkunden
[x] Liste der verfügbaren Metriken
[x] Metadaten für bestimmte Metriken abrufen
[x] Sofortige Abfrageergebnisse anzeigen
[x] Ergebnisse der Bereichsabfrage mit unterschiedlichen Schrittweiten anzeigen
[x] Authentifizierungsunterstützung
[x] Grundlegende Authentifizierung über Umgebungsvariablen
[x] Bearer-Token-Authentifizierung aus Umgebungsvariablen
[x] Unterstützung für Docker-Containerisierung
[x] Bereitstellung interaktiver Tools für KI-Assistenten
Die Liste der Tools ist konfigurierbar, sodass Sie auswählen können, welche Tools dem MCP-Client zur Verfügung gestellt werden sollen. Dies ist nützlich, wenn Sie bestimmte Funktionen nicht nutzen oder das Kontextfenster nicht zu sehr beanspruchen möchten.
Related MCP server: Prometheus MCP Server
Verwendung
Stellen Sie sicher, dass Ihr Prometheus-Server von der Umgebung aus zugänglich ist, in der Sie diesen MCP-Server ausführen.
Konfigurieren Sie die Umgebungsvariablen für Ihren Prometheus-Server, entweder über eine
.envDatei oder über Systemumgebungsvariablen:
# Required: Prometheus configuration
PROMETHEUS_URL=http://your-prometheus-server:9090
# Optional: Authentication credentials (if needed)
# Choose one of the following authentication methods if required:
# For basic auth
PROMETHEUS_USERNAME=your_username
PROMETHEUS_PASSWORD=your_password
# For bearer token auth
PROMETHEUS_TOKEN=your_token
# Optional: For multi-tenant setups like Cortex, Mimir or Thanos
ORG_ID=your_organization_idFügen Sie die Serverkonfiguration zu Ihrer Client-Konfigurationsdatei hinzu. Beispiel für Claude Desktop:
{
"mcpServers": {
"prometheus": {
"command": "uv",
"args": [
"--directory",
"<full path to prometheus-mcp-server directory>",
"run",
"src/prometheus_mcp_server/main.py"
],
"env": {
"PROMETHEUS_URL": "http://your-prometheus-server:9090",
"PROMETHEUS_USERNAME": "your_username",
"PROMETHEUS_PASSWORD": "your_password"
}
}
}
}Hinweis: Wenn in Claude Desktop
Error: spawn uv ENOENTangezeigt wird, müssen Sie möglicherweise den vollständigen Pfad zuuvangeben oder die UmgebungsvariableNO_UV=1in der Konfiguration festlegen.
Docker-Nutzung
Dieses Projekt umfasst Docker-Unterstützung für einfache Bereitstellung und Isolierung.
Vorgefertigtes Docker-Image
Am einfachsten lässt sich dieses Projekt mit dem vorgefertigten Image aus dem GitHub Container Registry verwenden:
docker pull ghcr.io/pab1it0/prometheus-mcp-server:latestSie können auch bestimmte Versionen mit Tags verwenden:
docker pull ghcr.io/pab1it0/prometheus-mcp-server:1.0.0Lokales Erstellen des Docker-Images
Wenn Sie das Image lieber selbst erstellen möchten:
docker build -t prometheus-mcp-server .Ausführen mit Docker
Sie können den Server mit Docker auf verschiedene Arten ausführen:
Verwenden von Docker Run mit dem vorgefertigten Image:
docker run -it --rm \
-e PROMETHEUS_URL=http://your-prometheus-server:9090 \
-e PROMETHEUS_USERNAME=your_username \
-e PROMETHEUS_PASSWORD=your_password \
ghcr.io/pab1it0/prometheus-mcp-server:latestVerwenden von Docker Run mit einem lokal erstellten Image:
docker run -it --rm \
-e PROMETHEUS_URL=http://your-prometheus-server:9090 \
-e PROMETHEUS_USERNAME=your_username \
-e PROMETHEUS_PASSWORD=your_password \
prometheus-mcp-serverVerwenden von Docker-Compose:
Erstellen Sie eine .env Datei mit Ihren Prometheus-Anmeldeinformationen und führen Sie dann Folgendes aus:
docker-compose upAusführen mit Docker in Claude Desktop
Um den Containerserver mit Claude Desktop zu verwenden, aktualisieren Sie die Konfiguration zur Verwendung von Docker mit den Umgebungsvariablen:
{
"mcpServers": {
"prometheus": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "PROMETHEUS_URL",
"-e", "PROMETHEUS_USERNAME",
"-e", "PROMETHEUS_PASSWORD",
"ghcr.io/pab1it0/prometheus-mcp-server:latest"
],
"env": {
"PROMETHEUS_URL": "http://your-prometheus-server:9090",
"PROMETHEUS_USERNAME": "your_username",
"PROMETHEUS_PASSWORD": "your_password"
}
}
}
}Diese Konfiguration übergibt die Umgebungsvariablen von Claude Desktop an den Docker-Container, indem sie das Flag -e nur mit dem Variablennamen verwendet und die tatsächlichen Werte im env bereitstellt.
Hinweis zur Docker-Implementierung : Das Docker-Setup wurde aktualisiert und entspricht nun der Struktur des Chess-MCP-Projekts, das nachweislich mit Claude einwandfrei funktioniert. Die neue Implementierung verwendet einen mehrstufigen Build-Prozess und führt das Einstiegspunktskript direkt ohne zwischengeschaltetes Shell-Skript aus. Dieser Ansatz gewährleistet die korrekte Handhabung von stdin/stdout für die MCP-Kommunikation.
Entwicklung
Beiträge sind willkommen! Bitte melden Sie ein Problem oder senden Sie einen Pull Request, wenn Sie Vorschläge oder Verbesserungen haben.
Dieses Projekt verwendet uv zur Verwaltung von Abhängigkeiten. Installieren Sie uv gemäß den Anweisungen für Ihre Plattform:
curl -LsSf https://astral.sh/uv/install.sh | shAnschließend können Sie eine virtuelle Umgebung erstellen und die Abhängigkeiten mit folgendem Befehl installieren:
uv venv
source .venv/bin/activate # On Unix/macOS
.venv\Scripts\activate # On Windows
uv pip install -e .Projektstruktur
Das Projekt wurde mit einer src Verzeichnisstruktur organisiert:
prometheus-mcp-server/
├── src/
│ └── prometheus_mcp_server/
│ ├── __init__.py # Package initialization
│ ├── server.py # MCP server implementation
│ ├── main.py # Main application logic
├── Dockerfile # Docker configuration
├── docker-compose.yml # Docker Compose configuration
├── .dockerignore # Docker ignore file
├── pyproject.toml # Project configuration
└── README.md # This fileTesten
Das Projekt umfasst eine umfassende Testsuite, die die Funktionalität sicherstellt und hilft, Regressionen zu vermeiden.
Führen Sie die Tests mit pytest aus:
# Install development dependencies
uv pip install -e ".[dev]"
# Run the tests
pytest
# Run with coverage report
pytest --cov=src --cov-report=term-missingDie Tests sind wie folgt organisiert:
Konfigurationsvalidierungstests
Serverfunktionalitätstests
Fehlerbehandlungstests
Hauptanwendungstests
Wenn Sie neue Funktionen hinzufügen, fügen Sie bitte auch entsprechende Tests hinzu.
Werkzeuge
Werkzeug | Kategorie | Beschreibung |
| Abfrage | Führen Sie eine PromQL-Sofortabfrage gegen Prometheus aus |
| Abfrage | Führen Sie eine PromQL-Bereichsabfrage mit Startzeit, Endzeit und Schrittintervall aus |
| Entdeckung | Listen Sie alle verfügbaren Metriken in Prometheus auf |
| Entdeckung | Abrufen von Metadaten für eine bestimmte Metrik |
| Entdeckung | Erhalten Sie Informationen zu allen Scrape-Zielen |
Lizenz
MIT