Skip to main content
Glama

GitOps Safe MCP

Ein bewusst schmaler stdio-MCP-Server, extrahiert aus spectrenet-mcp-Commit 2e63f009d8f4642e17398685baef0251811d6637. Er stellt nur Folgendes bereit:

  • repository_status: Git-Status und fünf letzte Commits (nur lesend).

  • diff_summary: Statistiken zu nicht gestagten Diffs und Namen des Arbeitsverzeichnisses (nur lesend).

  • tofu_validate: tofu fmt -check -recursive und tofu validate -no-color.

  • ansible_syntax: ein enthaltenes YAML-Playbook über einen festgelegten/operator-verwalteten ansible-playbook --syntax-check-Befehl.

Es gibt keine Tools für Git-Schreibzugriff, OpenTofu-Plan/Apply, Ansible-Playbook-Ausführung, Shell oder beliebige Befehle.

Wichtige Ansible-Warnung

Der Ansible-Syntaxcheck ist nicht garantiert inert: Lookup-Plugins und einige Collection-/Plugin-Ladevorgänge können beim Parsen eines Playbooks Code ausführen. Behandeln Sie das konfigurierte Repository und die Abhängigkeiten als vertrauenswürdigen Code. Führen Sie diesen Server unter einem dedizierten, nicht privilegierten Konto aus, mit einer bereinigten Umgebung, einem schreibgeschützten Repository-Mount, ohne Produktionsanmeldeinformationen und mit eingeschränktem Netzwerk-/Dateisystemzugriff. Die ausführbare Datei muss als absoluter, operator-verwalteter Pfad (oder als absoluter, operator-eigener Wrapper) konfiguriert sein; sie wird niemals aus einem Tool-Argument akzeptiert.

Related MCP server: Gumi-MCP

Sicherheitsgrenzen

Alle konfigurierten untergeordneten Pfade und angeforderten Playbooks werden aufgelöst (einschließlich Symlinks), müssen relativ sein, müssen existieren und müssen strikt unterhalb ihres erlaubten aufgelösten Wurzelverzeichnisses bleiben. Jeder Unterprozess erhält dieselbe explizite minimale Whitelist (PATH, grundlegende Benutzer-/Locale-/Terminal-/Temp-Variablen und XDG_*); nur Ansible erhält zusätzlich die enthaltene ANSIBLE_CONFIG. Nicht zusammenhängende Prozessanmeldeinformationen, Cloud-Tokens und Provider-Geheimnisse werden nicht vererbt. Unterprozesse verwenden argv-Arrays, feste Verben/Flags, Timeouts und begrenzte stdout/stderr. Audit-JSONL enthält Zeitstempel, UUID-Anfrage-ID, Tool/Ziel, Nicht-Mutationsmarker, Exit-Code, Timeout-Status und Dauer – aber keine Befehlsausgabe oder Umgebungsvariablen.

Dies ist Verteidigung in der Tiefe, keine Sandbox. Siehe Sicherheit und Architektur.

Installation und Ausführung

Python 3.11+ und uv werden empfohlen:

uv sync --extra test
cp .env.example .env.reference  # reference only; the package does not load dotenv files
uv run gitops-safe-mcp

Fügen Sie Einstellungen mit einem Dienstmanager oder einem Geheimnis-/Konfigurationsmanager ein. Stellen Sie sicher, dass das Audit-Verzeichnis nur vom Dienst/Operator beschreibbar ist.

Verifizieren

uv run --extra test pytest
uv run python -m compileall -q src tests
uv build

Tests verwenden temporäre Fake-Repositories und Fake-Ausführbare. Sie führen OpenTofu oder Ansible nicht gegen echte Infrastruktur aus.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to safely inspect a local repository's code and metadata while blocking private data from leaving the machine, providing read-only tools for search, change tracking, and integrity verification.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI clients to securely inspect local source repositories with read-only tools for listing files, reading files, and searching text, while enforcing path traversal protection and sensitive-file filtering.
    3
    MIT