Skip to main content
Glama

GitOps Safe MCP

Намеренно узкий stdio MCP-сервер, извлечённый из spectrenet-mcp коммита 2e63f009d8f4642e17398685baef0251811d6637. Он предоставляет только:

  • repository_status: статус Git и пять последних коммитов (только чтение).

  • diff_summary: статистика незакоммиченных изменений и имена файлов в рабочем дереве (только чтение).

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

  • ansible_syntax: один изолированный YAML-плейбук через закреплённую/управляемую оператором команду ansible-playbook --syntax-check.

Нет инструментов для записи в Git, plan/apply OpenTofu, запуска плейбуков Ansible, shell или произвольных команд.

Важное предупреждение об Ansible

Проверка синтаксиса Ansible не гарантированно инертна: lookup-плагины и некоторая загрузка коллекций/плагинов могут выполнять код при разборе плейбука. Относитесь к настроенному репозиторию и зависимостям как к доверенному коду. Запускайте этот сервер под выделенной непривилегированной учётной записью, с очищенным окружением, репозиторием, смонтированным только для чтения, без производственных учётных данных и с ограниченным доступом к сети/файловой системе. Исполняемый файл должен быть настроен как абсолютный путь, управляемый оператором (или абсолютная обёртка, принадлежащая оператору); он никогда не принимается из аргумента инструмента.

Related MCP server: Gumi-MCP

Границы безопасности

Все настроенные дочерние пути и запрашиваемые плейбуки разрешаются (включая симлинки), должны быть относительными, должны существовать и должны оставаться строго ниже своего разрешённого корня. Каждый подпроцесс получает один и тот же явный минимальный список разрешений (PATH, базовые переменные пользователя/локали/терминала/временных файлов и XDG_*); только Ansible дополнительно получает изолированный ANSIBLE_CONFIG. Не связанные с процессом учётные данные, облачные токены и секреты провайдеров не наследуются. Подпроцессы используют массивы argv, фиксированные глаголы/флаги, таймауты и ограниченные stdout/stderr. Аудит JSONL включает временную метку, UUID идентификатора запроса, инструмент/цель, маркер отсутствия изменений, код выхода, статус таймаута и длительность — но не вывод команд или значения окружения.

Это защита в глубину, а не песочница. См. Безопасность и Архитектура.

Установка и запуск

Рекомендуются Python 3.11+ и uv:

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

Внедрите настройки с помощью менеджера служб или менеджера секретов/конфигурации. Убедитесь, что каталог аудита доступен для записи только службе/оператору.

Проверка

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

В тестах используются временные фиктивные репозитории и фиктивные исполняемые файлы. Они не запускают OpenTofu или Ansible против реальной инфраструктуры.

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