Skip to main content
Glama

platform-mcp

Ein schreibgeschützter Model Context Protocol-Server, der einen KI-Agenten (Claude Code, Claude Desktop oder einen beliebigen MCP-Client) in einen GCP-Plattformingenieur verwandelt. Richten Sie ihn auf Ihre Google-Cloud-Projekte aus und bitten Sie ihn, Vorfälle zu untersuchen, Bestandsaufnahmen zu machen und Kostenoptimierungsmöglichkeiten aufzuzeigen – ganz ohne die Möglichkeit, Ihre Infrastruktur zu verändern.

Nur Beobachtung. Kein Tool in diesem Server verändert den Zustand. In Kombination mit einer Nur-Ansicht-Identität (unten) ergibt das eine harte Defense-in-Depth-Garantie, dass ein Agent schauen, aber niemals anfassen kann.

Was es kann

Bereich

Werkzeuge

Umgebungen

list_environments

Logs & Fehler

query_logs, get_recent_errors, list_error_groups

Metriken & Alarmierung

query_metric, list_alert_policies, list_uptime_checks

Kosten & Empfehlungen

get_cost_breakdown, get_billing_info, list_cost_recommendations, list_recommendations

Ressourceninventar

search_assets, list_compute_instances, list_cloud_run_services, list_gke_clusters, list_sql_instances

Typische Prompts, sobald es verbunden ist:

  • "Was sind die häufigsten Fehlergruppen der letzten 24 Stunden und welche ist die neueste?"

  • "Welche GKE-Knotenpools sind überdimensioniert? Zeige die durchschnittliche CPU im Vergleich zum Maschinentyp."

  • "Wo kann ich in diesem Projekt Ausgaben reduzieren?"

Related MCP server: k8s-readonly-mcp

Mehrere Umgebungen

Ein Server kann mehrere Projekte erreichen. Definieren Sie sie unter PLATFORM_MCP_ENVIRONMENTS (siehe Konfiguration) und der Agent wählt anhand der Formulierung Ihres Prompts eines aus:

  • "Gibt es in der letzten Stunde Fehler in staging?"

  • "Vergleiche Cloud Run-Dienste zwischen staging und prod."

Jedes Tool akzeptiert ein optionales environment-Argument. Lassen Sie es weg und die Standardumgebung wird verwendet; übergeben Sie environment="production", um eine andere anzusprechen. Namen, von Ihnen definierte Aliase, gebräuchliche Kurzformen (prod, stg, qa, …) und nackte Projekt-IDs werden alle aufgelöst. Ein nicht erkannter Name ist ein Fehler, der die gültigen Optionen auflistet – ein Tippfehler kann niemals stillschweigend das falsche Projekt anvisieren.

Jede Umgebung hat ihr eigenes Dienstkonto, sodass Staging und Produktion über getrennte Identitäten aus demselben Prozess erreicht werden, und jedes Ergebnis gibt die environment und das project, aus denen es stammt, zurück.

Voraussetzungen

  • Python 3.11+

  • Ein Google-Cloud-Projekt und Anmeldedaten (eigener Login oder ein Dienstkonto)

  • Die gcloud-CLI für die einmalige Einrichtung

Installation

git clone https://github.com/deBilla/platform-mcp.git
cd platform-mcp
python3 -m venv .venv
./.venv/bin/pip install -e .

Einmalige GCP-Einrichtung

Führen Sie diese einmal pro Projekt aus, das Sie erreichen möchten – Staging und Produktion benötigen jeweils ihre eigenen aktivierten APIs und ihr eigenes schreibgeschütztes Dienstkonto.

1. Aktivieren Sie die APIs, von denen die Tools abhängen:

gcloud services enable \
  logging.googleapis.com monitoring.googleapis.com clouderrorreporting.googleapis.com \
  recommender.googleapis.com cloudasset.googleapis.com cloudbilling.googleapis.com \
  bigquery.googleapis.com \
  --project YOUR_PROJECT_ID

2. Gewähren Sie der Identität, unter der der Server läuft, schreibgeschützten Zugriff.

Für die lokale Entwicklung mit Ihrem eigenen Login (Application Default Credentials):

gcloud auth application-default login

Die Identität benötigt diese Viewer-Rollen auf dem Projekt sowie roles/billing.viewer auf dem Abrechnungskonto:

roles/viewer                # broad read (compute, run, gke, sql via Asset Inventory)
roles/logging.viewer
roles/monitoring.viewer
roles/errorreporting.viewer
roles/recommender.viewer
roles/cloudasset.viewer
roles/bigquery.dataViewer    # only for get_cost_breakdown
roles/bigquery.jobUser       # only for get_cost_breakdown

3. (Empfohlen) Verwenden Sie ein dediziertes schreibgeschütztes Dienstkonto anstelle Ihres Logins:

PROJECT=YOUR_PROJECT_ID
gcloud iam service-accounts create platform-mcp-ro \
  --display-name "platform-mcp read-only" --project $PROJECT

SA=platform-mcp-ro@$PROJECT.iam.gserviceaccount.com
for ROLE in roles/viewer roles/logging.viewer roles/monitoring.viewer \
  roles/errorreporting.viewer roles/recommender.viewer roles/cloudasset.viewer; do
  gcloud projects add-iam-policy-binding $PROJECT \
    --member="serviceAccount:$SA" --role="$ROLE"
done

# Let your own login impersonate it (no key file to manage):
gcloud iam service-accounts add-iam-policy-binding $SA \
  --member="user:you@example.com" \
  --role="roles/iam.serviceAccountTokenCreator" --project $PROJECT

Referenzieren Sie es dann als impersonate-Wert dieser Umgebung in PLATFORM_MCP_ENVIRONMENTS (bevorzugt – keine Schlüsseldatei) oder zeigen Sie über GOOGLE_APPLICATION_CREDENTIALS auf einen heruntergeladenen Schlüssel.

Die Impersonation wird von der Identität durchgeführt, auf die Ihre ADC aufgelöst wird. Wenn Ihre ADC selbst ein impersoniertes Dienstkonto ist, benötigt dieses SA – nicht Ihr Benutzer – roles/iam.serviceAccountTokenCreator auf jedem platform-mcp-ro.

Sicherheitsmodell

Schreibgeschützt wird durch IAM, nicht durch OAuth-Bereiche erzwungen. Der Server fordert den breiten cloud-platform-Bereich an und bleibt nur deshalb schreibgeschützt, weil er nie eine mutierende API aufruft. Verlassen Sie sich nicht allein auf den Code – führen Sie ihn unter einer Nur-Ansicht-Identität (Schritt 3 oben) aus, sodass die Anmeldedaten selbst nicht schreiben können, unabhängig davon, welcher Code ausgeführt wird. Das ergibt zwei unabhängige Ebenen: Der Server versucht nicht zu schreiben, und die Identität könnte es nicht, selbst wenn sie es wollte.

Bei mehreren Umgebungen bleibt dies pro Projekt: Jede Umgebung authentifiziert sich mit ihrem eigenen Dienstkonto, sodass eine Staging-Identität niemals verwendet wird, um die Produktion zu erreichen. Gewähren Sie jeder nur Ansichtszugriff auf ihr eigenes Projekt.

Konfiguration

Kopieren Sie die Beispielkonfiguration und füllen Sie Ihre Werte aus:

cp .mcp.json.example .mcp.json

.mcp.json ist git-ignoriert, sodass Ihre Projekt-IDs und Dienstkonto-E-Mails lokal bleiben. Umgebungsvariablen, die es (oder Ihre Shell) setzen kann:

Variable

Zweck

PLATFORM_MCP_ENVIRONMENTS

JSON-Zuordnung von Umgebungsname → Einstellungen. Die empfohlene Methode zur Konfiguration des Servers.

PLATFORM_MCP_DEFAULT_ENVIRONMENT

Umgebung, die verwendet wird, wenn ein Toolaufruf environment weglässt. Standardmäßig staging, falls konfiguriert, sonst der erste Eintrag.

GOOGLE_APPLICATION_CREDENTIALS

Pfad zu einer schreibgeschützten SA-Schlüsseldatei (Alternative zur Impersonation).

PLATFORM_MCP_DEFAULT_LIMIT

Standardmäßige maximale Zeilenanzahl für listenartige Tools (Standard 50).

PLATFORM_MCP_ENVIRONMENTS enthält ein JSON-Objekt; jeder Eintrag akzeptiert:

Schlüssel

Zweck

project

Erforderlich. GCP-Projekt-ID.

impersonate

Schreibgeschütztes SA, das für diese Umgebung impersoniert werden soll (keine Schlüsseldatei erforderlich).

billing_export_table

Vollqualifizierte BigQuery-Abrechnungsexporttabelle, nur für get_cost_breakdown erforderlich (z. B. YOUR_PROJECT_ID.billing.gcp_billing_export_v1_XXXXXX).

aliases

Zusätzliche Namen, die der Agent für diese Umgebung verwenden kann.

Ein nackter Zeichenfolgenwert ist eine Kurzform für {"project": "..."}. Als JSON innerhalb von .mcp.json müssen die Anführungszeichen maskiert werden; ohne Maskierung lautet es:

{
  "staging": {
    "project": "my-app-staging",
    "impersonate": "platform-mcp-ro@my-app-staging.iam.gserviceaccount.com"
  },
  "production": {
    "project": "my-app",
    "impersonate": "platform-mcp-ro@my-app.iam.gserviceaccount.com",
    "billing_export_table": "my-app.billing.gcp_billing_export_v1_XXXXXX"
  }
}

Einzelumgebungsmodus. Wenn PLATFORM_MCP_ENVIRONMENTS nicht gesetzt ist, verhält sich der Server wie zuvor und stellt eine Umgebung namens default bereit:

Variable

Zweck

GCP_PROJECT

Zielprojekt. Fällt auf Ihr ADC-Standardprojekt zurück, wenn nicht gesetzt.

IMPERSONATE_SERVICE_ACCOUNT

Schreibgeschütztes SA, das impersoniert werden soll. Auch der Fallback für Registry-Einträge ohne impersonate.

BILLING_EXPORT_TABLE

Abrechnungsexporttabelle. Auch der Fallback für Registry-Einträge ohne billing_export_table.

Bei einem Client registrieren

Claude Code / Claude Desktop – fügen Sie den Block aus .mcp.json.example zu Ihrer MCP-Konfiguration hinzu (.mcp.json in einem Projekt für Claude Code oder claude_desktop_config.json für Desktop) und zeigen Sie mit command auf das Konsolenskript des venv, sodass keine globale Installation erforderlich ist:

{
  "mcpServers": {
    "platform-mcp": {
      "command": "/absolute/path/to/platform-mcp/.venv/bin/platform-mcp",
      "env": {
        "PLATFORM_MCP_DEFAULT_ENVIRONMENT": "staging",
        "PLATFORM_MCP_ENVIRONMENTS": "{\"staging\":{\"project\":\"YOUR_STAGING_PROJECT_ID\",\"impersonate\":\"platform-mcp-ro@YOUR_STAGING_PROJECT_ID.iam.gserviceaccount.com\"},\"production\":{\"project\":\"YOUR_PROD_PROJECT_ID\",\"impersonate\":\"platform-mcp-ro@YOUR_PROD_PROJECT_ID.iam.gserviceaccount.com\"}}"
      }
    }
  }
}

MCP Inspector – für interaktive Tests:

./.venv/bin/mcp dev src/platform_mcp/server.py

Hinweise

  • Alle Tools begrenzen die Anzahl der Ergebnisse und kürzen lange Nutzlasten, um tokenfreundlich zu bleiben.

  • GCP-Clients werden lazy erstellt und pro Umgebung zwischengespeichert, sodass ein Wechsel zwischen Staging und Produktion mitten im Gespräch jeweils nur eine Client-Erstellung kostet.

  • Kostenempfehlungen sind zonal/regional; list_cost_recommendations entdeckt automatisch die Standorte, an denen Sie Ressourcen haben (über Asset Inventory), und verteilt sich, wobei Standorte und Empfehlungsgeber übersprungen werden, die leer oder nicht verfügbar sind.

  • get_cost_breakdown verwendet parametrisierte BigQuery-Abfragen mit einer Whitelist von Group-by-Spalten.

Lizenz

MIT © 2026 Dimuthu Wickramanayake

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A read-only MCP server for inspecting Kubernetes clusters, allowing LLMs to list resources, describe pods, and read logs without mutation.
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A read-only MCP server that lets an LLM inspect an AWS account — list EC2 instances, S3 buckets, IAM users, and cost — with a structural guarantee against any mutations.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    A secure, read-only MCP server for AI-powered system monitoring. It provides real-time OS metrics, config discovery, and safe log tailing to enable autonomous infrastructure audits without shell access risks.
    4

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/deBilla/platform-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server