Skip to main content
Glama
glassity

FOCUS MCP Server

by glassity

FOCUS-MCP-Server

Fragen Sie Ihren KI-Assistenten, was Ihre Cloud tatsächlich kostet. Dieser MCP-Server (Model Context Protocol) verbindet Claude oder einen anderen MCP-Client mit Ihren FOCUS-Abrechnungsdaten, sodass Fragen wie diese zu Einzeilen-Prompts werden, statt handgeschriebenem SQL:

  • "Was sind meine teuersten Dienste nach Region in diesem Monat?"

  • "Zeig mir die Trends bei der Nutzung von Verpflichtungsrabatten."

  • "Welche Konten weisen ungewöhnliche Ausgabemuster auf?"

  • "Erkläre den Unterschied zwischen BilledCost und EffectiveCost."

Im Hintergrund fragt DuckDB Ihre Parquet-Exporte direkt ab, egal ob sie auf der lokalen Festplatte, in S3 oder in GCS liegen. Es muss keine Data Warehouse aufgesetzt werden. Der Server bündelt 254 Abfragen aus dem offiziellen FOCUS-Anwendungsfall-Katalog, als separate Sammlung pro Spezifikationsversion (36 für v1.0, 41 für v1.1, 53 für v1.2, 58 für v1.3, 66 für v1.4), und jede Abfrage zitiert die Seite, aus der sie stammt.

Was ist FOCUS?

FOCUS (FinOps Open Cost & Usage Specification) ist der offene Standard für Cloud-Abrechnungsdaten. AWS, Microsoft und Google Cloud exportieren ihn nativ, sodass ein Schema und eine Reihe von Abfragen über alle Anbieter hinweg funktionieren.

Related MCP server: MCP Cloud Services Server

Schnellstart

1. FOCUS-Daten beschaffen

Jeder Anbieter hat einen offiziellen Exportpfad:

Der Server liest Parquet mit Hive-Partitionierung:

/path/to/your/focus/data/
├── billing_period=2025-05/
│   ├── file1.parquet
│   └── file2.parquet
├── billing_period=2025-06/
│   └── ...

2. Server starten

Der schnellste Weg benötigt keinen Container. uvx holt und führt das veröffentlichte Paket in einem Schritt aus:

claude mcp add focus -e FOCUS_DATA_LOCATION=/path/to/your/focus/data -- uvx focus-mcp

Für Claude Desktop fügen Sie dies zu claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "focus": {
      "command": "uvx",
      "args": ["focus-mcp"],
      "env": {
        "FOCUS_DATA_LOCATION": "/path/to/your/focus/data",
        "FOCUS_VERSION": "1.0"
      }
    }
  }
}

Das Lesen von GCS mit Application Default Credentials erfordert das gcs-Extra, das uvx installiert, wenn Sie es benennen:

claude mcp add focus -e FOCUS_DATA_LOCATION=gs://your-bucket/focus \
  -- uvx --from 'focus-mcp[gcs]' focus-mcp

Docker bleibt verfügbar und ist die bessere Wahl, wenn Sie ein gepinntes, attestiertes Image möchten:

Images werden bei jeder Veröffentlichung auf Docker Hub und GitHub Container Registry veröffentlicht:

docker pull glassity/focus-mcp:latest          # Docker Hub
docker pull ghcr.io/glassity/focus-mcp:latest  # GHCR

Für Claude Code, ein Befehl:

claude mcp add focus -- docker run -i --rm \
  -v /path/to/your/focus/data:/data:ro \
  -e FOCUS_DATA_LOCATION=/data \
  glassity/focus-mcp:latest

Für Claude Desktop fügen Sie dies zu claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "focus": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/path/to/your/focus/data:/data:ro",
        "-e", "FOCUS_DATA_LOCATION=/data",
        "-e", "FOCUS_VERSION=1.0",
        "glassity/focus-mcp:latest"
      ]
    }
  }
}

Für S3- oder GCS-Daten entfernen Sie den Volume-Mount und zeigen Sie mit FOCUS_DATA_LOCATION auf den Bucket. Siehe Datenorte für die Anmeldeoptionen.

3. Etwas fragen

Starten Sie Ihren Client und versuchen Sie:

Show me what FOCUS data is loaded.

Der Assistent ruft get_data_info auf und meldet Zeilenzahlen, Datumsbereiche und Anbieter. Von dort aus fragen Sie in einfacher Sprache:

Run the service costs by region analysis for the last 3 months.
Show me the top 10 most expensive services across all accounts.
Find unused capacity reservations I can optimize.
Compare costs across providers and regions.
What columns are available in FOCUS v1.4?

Werkzeuge

Acht Werkzeuge, in zwei Gruppen.

Daten und Abfrage:

Werkzeug

Was es tut

get_data_info

Untersucht die geladenen Daten: Zeilenzahlen, Datumsbereiche, Anbieter

list_use_cases

Durchsucht die vordefinierten Analyseabfragen für Ihre FOCUS-Version

get_use_case

Eine Abfrage im Detail: SQL, Parameter, Zitat zur Spezifikation

execute_query

Führt eine vordefinierte Abfrage oder benutzerdefiniertes SQL gegen Ihre Daten aus

Schema und Spezifikation

Tool

Was es tut

list_columns

Alle FOCUS-Spalten mit Typ und Anforderungsstufe

get_column_details

Vollständige Definition einer Spalte

list_attributes

FOCUS-Formatierungsstandards und -konventionen

get_attribute_details

Vollständige Anforderungen eines Attributs

Die Schema-Werkzeuge antworten aus der FOCUS-Spezifikation selbst, sodass der Assistent erklären kann, was eine Spalte bedeutet, und sie auch abfragen kann.

Abfragebibliothek

Jede Abfrage ist aus dem offiziellen FOCUS-Anwendungsfall-Katalog extrahiert und trägt ein Zitat zurück zu ihrer Quellseite:

  • FOCUS v1.0: 36 Abfragen

  • FOCUS v1.1: 41 Abfragen

  • FOCUS v1.2: 53 Abfragen

  • FOCUS v1.3: 58 Abfragen

  • FOCUS v1.4: 66 Abfragen

Die Abdeckung umfasst Kostenverteilung, Verfolgung von Vertragsrabatten, Anomalieerkennung, Budgetabgleich und Anbietervergleich. FOCUS_VERSION wählt aus, welche Sammlung aktiv ist; passen Sie sie an das an, was Ihr Anbieter exportiert. Die Spezifikation läuft den Exporten voraus – AWS Data Exports liefert derzeit FOCUS 1.0 und 1.2 – sodass die Sammlungen für 1.3 und 1.4 bereit sind für den Tag, an dem ein Anbieter sie ausliefert.

Datenorte

Lokale Dateien

export FOCUS_DATA_LOCATION="/path/to/your/focus/data"

Eine heruntergeladene Kopie eines AWS Data Exports (aws s3 sync, ein gemountetes Volume) wird über die Manifeste geladen, mit denen sie kopiert wurde, genau wie der Bucket selbst – siehe unten.

Amazon S3

export FOCUS_DATA_LOCATION="s3://your-bucket/focus-exports"
export AWS_REGION="us-west-2"        # defaults to us-east-1

Zeigen Sie den Ort auf die Exportwurzel, das Präfix, das sowohl data/ als auch metadata/ enthält. AWS Data Exports listen jede Datei ihrer neuesten Lieferung in einem Manifest pro Abrechnungszeitraum unter metadata/ auf, und der Server lädt diese Dateien, wenn die Manifeste vorhanden sind: überholte Blöcke und erneut gelieferte Zeiträume, die auf dem Präfix zurückgelassen wurden, werden ignoriert, statt doppelt gezählt zu werden. Orte ohne Manifeste – ein BigQuery-Export, ein Verzeichnis mit Parquet-Dateien – werden durch Globbing aller darunterliegenden Parquet-Dateien gelesen. get_data_info meldet, welche der beiden verwendet wurde, und die Dateiliste wird alle paar Minuten aktualisiert, sodass neue Lieferungen keinen Neustart erfordern.

Die Authentifizierung verwendet die Standard-AWS-Anmeldekette, in dieser Reihenfolge: IAM-Rolle (automatisch auf EC2/ECS/Lambda), AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY-Umgebungsvariablen, AWS_PROFILE, dann ~/.aws/credentials.

export AWS_PROFILE="billing-reader"   # use a specific profile

Einige Buckets speichern Schlüssel mit einem führenden Schrägstrich; wenn die Auflistung fehlschlägt, versuchen Sie einen doppelten Schrägstrich nach dem Bucket-Namen: s3://your-bucket//focus/path.

Wenn Sie in Docker ausführen, übergeben Sie Anmeldedaten als -e-Variablen oder mounten Sie das Profil schreibgeschützt:

docker run -i --rm \
  -v "$HOME/.aws:/home/mcp/.aws:ro" \
  -e FOCUS_DATA_LOCATION="s3://your-bucket/focus-exports" \
  -e AWS_REGION="us-west-2" \
  -e AWS_PROFILE="billing-reader" \
  glassity/focus-mcp:latest

Google Cloud (GCS + BigQuery-FOCUS-Export)

Google Cloud exportiert Abrechnung nativ im FOCUS-Format: Billing → Billing export → FOCUS usage cost (Vorschau) schreibt eine FOCUS-Tabelle in BigQuery. Exportieren Sie sie als Parquet in einen GCS-Bucket:

EXPORT DATA OPTIONS (
  uri = 'gs://your-bucket/focus-export/*.parquet',
  format = 'PARQUET',
  overwrite = true
) AS
SELECT * FROM `your-project.your_focus_dataset.your_focus_table`;

Planen Sie diese Anweisung als geplante BigQuery-Abfrage, um den Bucket frisch zu halten; dies archiviert auch Ihre Daten über die 2-Jahres-TTL des FOCUS-Exports hinaus. Dann:

export FOCUS_DATA_LOCATION="gs://your-bucket/focus-export"

Die Authentifizierung wird in dieser Reihenfolge versucht:

  1. HMAC-Schlüssel: setzen Sie GCS_HMAC_KEY_ID und GCS_HMAC_SECRET (erstellen mit gcloud storage hmac create <service-account-email>). Dieser Pfad verwendet DuckDBs native GCS-Unterstützung über die S3-Interoperabilitäts-API und benötigt keine zusätzlichen Abhängigkeiten.

  2. Application Default Credentials: im Docker-Image enthalten; aus einem Quell-Checkout installieren Sie das Extra mit uv sync --extra gcs. Dann authentifizieren Sie sich wie gewohnt: gcloud auth application-default login, eine Service-Konto-JSON über GOOGLE_APPLICATION_CREDENTIALS oder Workload-Identität auf GCE/GKE.

  3. Keine Anmeldedaten: nur öffentliche Buckets.

Zwei Methoden existieren, weil DuckDBs eingebaute GCS-Unterstützung nur HMAC spricht; ADC stammt aus der optionalen gcsfs-Abhängigkeit. Anmeldedaten werden nur innerhalb des Serverprozesses gelesen und niemals an MCP-Clients weitergegeben.

Konfiguration

Variable

Standard

Beschreibung

FOCUS_DATA_LOCATION

data/focus-export

Wo das Parquet liegt: ein lokaler Pfad, s3://… oder gs://…

FOCUS_VERSION

1.0

FOCUS-Spezifikationsversion: 1.0, 1.1, 1.2, 1.3 oder 1.4. Wählt aus, welche Abfragesammlung geladen wird

AWS_REGION

us-east-1

Region für S3-Zugriff

AWS_PROFILE

(nicht gesetzt)

AWS-Profil für S3-Authentifizierung

AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY

(nicht gesetzt)

Statische AWS-Anmeldedaten, wenn keine Rolle oder Profil verwendet wird

GCS_HMAC_KEY_ID / GCS_HMAC_SECRET

(nicht gesetzt)

HMAC-Anmeldedaten für GCS

GOOGLE_APPLICATION_CREDENTIALS

(nicht gesetzt)

Service-Konto-JSON für GCS über ADC

Entwicklung

git clone https://github.com/glassity/focus-mcp.git
cd focus-mcp

uv sync                 # install, including dev tools
uv sync --extra gcs     # + GCS ADC support

export FOCUS_DATA_LOCATION="/path/to/your/focus/data"
uv run focus-mcp

Zeigen Sie einen Client auf das Quell-Checkout statt auf das Docker-Image:

{
  "mcpServers": {
    "focus": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/focus-mcp", "focus-mcp"],
      "env": {
        "FOCUS_DATA_LOCATION": "/path/to/your/focus/data",
        "FOCUS_VERSION": "1.0"
      }
    }
  }
}

Bauen und führen Sie Ihr eigenes Image aus:

docker build -t focus-mcp:custom .
docker run -i --rm \
  -v "/path/to/your/focus/data:/data:ro" \
  -e FOCUS_DATA_LOCATION=/data \
  focus-mcp:custom

Siehe CONTRIBUTING.md für Konventionen und Prüfungen, bevor Sie einen Pull-Request öffnen.

Roadmap

  • Automatisierte Abfragesynchronisierung aus der FOCUS-Spezifikation, sodass neue Anwendungsfall-Seiten hier ohne manuelle Extraktion landen

  • Reichhaltigere Antwortformatierung: Zitate und pädagogischer Kontext inline in Abfrageergebnissen

  • Validierung jeder Anwendungsfall-Abfrage gegen echte Anbieter-Exporte (AWS liefert heute FOCUS 1.0 und 1.2; 1.3+ sobald Anbieter sie übernehmen)

  • Bewertung, ob Spalten- und Attributdefinitionen zu MCP-Ressourcen verschoben werden

  • Konformitätslücken-Hinweise aus der Spezifikation in den Werkzeugantworten anzeigen

Sicherheit

Melden Sie Schwachstellen an die Adresse in SECURITY.md, nicht an den Issue-Tracker. Kennen Sie das Vertrauensmodell: execute_query führt SQL aus, das der KI-Assistent schreibt, innerhalb des Serverprozesses. Ihre Parquet-Dateien sind eine Abfragequelle, keine beschreibbare Datenbank, und jedes Beispiel hier mountet sie :ro; behalten Sie das bei. Führen Sie das Docker-Image aus, statt eines nackten Prozesses, wenn Sie eine harte Grenze wollen, und geben Sie dem Server nur die Objektstore-Anmeldedaten, die er benötigt, begrenzt auf den Abrechnungs-Bucket.

Lizenz

Apache-2.0. Copyright Glassity. Siehe LICENSE.


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

Maintenance

Maintainers
Response time
Release cycle
1Releases (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

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables cost optimization and financial operations for Google BigQuery through natural language interactions. Provides insights into BigQuery spending, usage patterns, and cost management recommendations.
  • A
    license
    B
    quality
    D
    maintenance
    Provides a comprehensive suite of 76 tools for AWS cloud resource optimization, cost management, and infrastructure monitoring. It enables users to identify unused resources, analyze cost trends, right-size capacity, and maintain security compliance through natural language.
    76
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language analysis of AWS costs, automated FinOps waste audits, and budget monitoring across multiple profiles and regions while keeping credentials secure locally.
    181
    MIT

View all related MCP servers

Related MCP Connectors

  • Verified cloud cost forecasting for AI agents. AWS, GCP, Azure pricing matrix.

  • Verified cloud cost forecasting for AI agents. AWS, GCP, Azure pricing matrix.

  • Ask AI about your ads — query Meta, TikTok, and Google Ads performance in natural language.

View all MCP Connectors

Appeared in Searches

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/glassity/focus-mcp'

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