Skip to main content
Glama
waTeim

CloudNativePG MCP Server

by waTeim

CloudNativePG MCP-Server

Ein MCP-Server zur Verwaltung von PostgreSQL-Clustern über den CloudNativePG-Operator.

Diese Version verwendet das MCP-Base-Grundgerüst für das Server-Layout, die Authentifizierung, den Container-Build, das Helm-Chart, die Prompt-Registrierung und die Testumgebung. Die vorherige manuelle Implementierung wurde zu Referenzzwecken unter deprecated-v1/ beibehalten.

Tool-Oberfläche

Der Server stellt die CloudNativePG-Tools aus der v1-Implementierung bereit:

  • list_postgres_clusters

  • get_cluster_status

  • create_postgres_cluster

  • scale_postgres_cluster

  • delete_postgres_cluster

  • list_postgres_roles

  • create_postgres_role

  • update_postgres_role

  • delete_postgres_role

  • list_postgres_databases

  • create_postgres_database

  • delete_postgres_database

Zusätzlich sind MCP-Base-Admin-Tools für die Prompt-Verwaltung enthalten:

  • admin_reload_prompts

  • admin_get_prompt_manifest

Related MCP server: PostgreSQL MCP Server

Layout

  • src/cnpg_mcp_server.py: Produktiver FastMCP-HTTP-Einstiegspunkt

  • src/cnpg_mcp_test_server.py: Test-Einstiegspunkt ohne Authentifizierung/OIDC

  • src/cnpg_mcp_tools.py: CloudNativePG-Tool-Implementierungen und Registrierung

  • src/mcp_context.py: MCP-Kontext-Wrapper mit Extraktion der Benutzeridentität

  • src/auth_*.py: Unterstützung für die MCP-Base-Authentifizierung

  • chart/: Helm-Deployment-Assets

  • test/: MCP-Plugin-Testumgebung

  • SCAFFOLD_INVENTORY.md: Artefakt-Hashes des MCP-Base-Grundgerüsts

Entwicklung

Erstellen Sie eine Umgebung und installieren Sie die Abhängigkeiten:

python -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt -r test/requirements.txt

Führen Sie den Smoke-Test für die Registrierung des Grundgerüsts aus:

python bin/smoke_test.py

Führen Sie die lokale MCP-Testsuite ohne Authentifizierung aus:

python test/run-local-tests.py

Führen Sie die CloudNativePG-Kubernetes-Integrationstests aus, die von deprecated-v1/test/plugins adaptiert wurden:

python test/run-local-tests.py --include-integration
# or
make test-integration

Diese Tests erstellen, skalieren, aktualisieren und löschen echte CloudNativePG-Ressourcen. Nützliche optionale Einstellungen:

  • CNPG_MCP_TEST_NAMESPACE: Namespace für Testressourcen

  • CNPG_MCP_TEST_CLUSTER_PREFIX: Präfix für generierte Clusternamen

  • CNPG_MCP_TEST_STORAGE_SIZE: Speichergröße pro Instanz, Standard 1Gi

  • CNPG_MCP_TEST_CREATE_WAIT_SECONDS: Timeout für die Cluster-Bereitschaft, Standard 300

  • CNPG_MCP_TEST_SCALE_WAIT_SECONDS: Timeout für die Skalierungs-Bereitschaft, Standard 300

Lokale Ausführung

Der Einstiegspunkt des Grundgerüsts verwendet HTTP-Transport:

python src/cnpg_mcp_server.py --host 0.0.0.0 --port 4200

Der Testserver kann ohne Authentifizierung ausgeführt werden:

python src/cnpg_mcp_test_server.py --host 127.0.0.1 --port 4201 --no-auth

Kubernetes-Zugriff

Die Tools verwenden den Kubernetes-Python-Client. Sie laden die Konfiguration in dieser Reihenfolge:

  1. In-Cluster-Service-Account-Konfiguration

  2. Lokale kubeconfig aus ~/.kube/config oder KUBECONFIG

Die meisten Tools akzeptieren einen optionalen namespace. Wenn dieser weggelassen wird, wird der aktuelle Kubernetes-Kontext-Namespace verwendet, mit einem Fallback auf default.

Für In-Cluster-Helm-Deployments verwendet der Server den Service-Account des Deployments. Standardmäßig gewährt das Chart diesem Service-Account nur CNPG- und Secret-Berechtigungen im Namespace des Helm-Releases. Um CNPG-Ressourcen in einem anderen Namespace zu verwalten, übergeben Sie das namespace-Argument des Tools und gewähren Sie dem Service-Account dort Zugriff:

rbac:
  targetNamespaces:
    - application-databases

Für ein geteiltes MCP-Deployment, das in beliebigen Namespaces operieren muss, aktivieren Sie clusterweites RBAC:

rbac:
  clusterWide: true

Der clusterweite Modus gewährt Secret-Zugriff über Namespaces hinweg; bevorzugen Sie daher explizite targetNamespaces, wenn die Zielmenge bekannt ist.

Deployment

Das MCP-Base-Grundgerüst enthält Docker- und Helm-Assets:

make build
make push
make helm-install

Verwenden Sie python bin/configure-make.py, um make.env für Image- und Namespace-Einstellungen zu generieren, bevor Sie die Deployment-Ziele verwenden.

Related MCP Connectors

Related MCP Servers