Atomno labs

Безопасность MCP-серверов: чек-лист

Что проверять перед подключением чужого MCP. Изоляция, env-vars, autoApprove, audit log, защита креденшелов.

Обновлено:

MCP — мощная штука, и поэтому к ним надо относиться так же серьёзно, как к npm-пакетам или плагинам браузера. Чужой MCP получает доступ к вашему окружению (env-vars), может делать сетевые запросы, читать файлы (если ему дали соответствующий тул).

1. Перед установкой — проверьте автора

Минимум:

  • Open-source ли? Source code на GitHub доступен?
  • Сколько ⭐ / форков на GitHub? Активный ли репо?
  • Кто автор? Известная организация / трастовый разработчик / random anon?
  • Когда был последний коммит? Если 2+ года назад — настораживает.
  • Glama score (если есть)? AAA / AA / A — норма. F или not-tested — повод задуматься.

Все 7 публичных MCP семьи Atomno Labs — open-source MIT, hosted org atomno-labs, проверяются Glama-analyzer’ом.

2. Env-vars: храните секреты правильно

Никогда не коммитьте mcp.json с реальными токенами в публичный репозиторий.

Плохо:

{
  "mcpServers": {
    "atomno-fns-check": {
      "env": { "MCP_FNS_CHECK_TOKEN": "atl_REAL_LIVE_TOKEN_xxx" }
    }
  }
}

Хорошо:

{
  "mcpServers": {
    "atomno-fns-check": {
      "env": { "MCP_FNS_CHECK_TOKEN": "${env:MCP_FNS_CHECK_TOKEN}" }
    }
  }
}

Затем — настоящий токен в ~/.zshrc / ~/.bashrc / системных env-vars.

В Cursor / Cline переменные ${env:VAR} подставляются из текущего окружения процесса IDE.

3. autoApprove — только для read-only

В Cline / Continue / Cursor можно настроить autoApprove: список тулов, которые агент вызывает без подтверждения у пользователя.

Безопасно автоапрувить:

  • get_* — чтения данных.
  • check_* — проверки.
  • search_* — поиск.
  • list_* — выборки.

НЕ автоапрувьте:

  • create_* — создание чего-либо в провайдере (например, платежей в ЮKassa!).
  • delete_* — удаление.
  • update_* — изменение.
  • Любые тулы с финансовыми последствиями.

Пример безопасного autoApprove для mcp-fns-check (все тулы только читают):

"autoApprove": ["check_inn", "check_ogrn", "mass_address_check", "director_disqualification"]

Для mcp-yukassa (commercial) — никаких автоапрувов. Каждый платёж — явное подтверждение.

4. Изоляция MCP-процессов

Каждый MCP — отдельный процесс. Это значит:

  • Если один MCP скомпрометирован, он не получает доступ к другим MCP.
  • MCP не делит память с IDE.
  • Креденшелы одного MCP не доступны другому (env-vars передаются индивидуально).

Это хорошо. Это — feature. Не пытайтесь обойти изоляцию через shell-инъекции в args.

5. Project-scope MCP в git

Если используете project-scope (.cursor/mcp.json в корне проекта или .mcp.json для Claude Code) и коммитите в репозиторий — он попадёт ко всем кто склонирует репо.

Правила:

  • Коммитьте только команду и args, не env-vars с секретами.
  • В env используйте ${env:VAR}-подстановки (см. п.2 выше).
  • Документируйте в README, какие env-vars нужны.

6. Audit log — следите что делает агент

Cursor / Claude / Cline пишут логи всех MCP-вызовов:

  • Какой тул вызван.
  • С какими аргументами.
  • Что вернулось.

Регулярно проверяйте — особенно после exposure нового MCP. Если агент вызвал что-то странное — это повод разобраться.

В Cursor: Settings → MCP → Logs.

7. Disclaimer от Atomno Labs

Все MCP семьи atomno-mcp-*:

  • Не делают write-операций без env-токена (для open-core / commercial).
  • Не отправляют ваши данные на наши сервера для open-source MCP (всё локально).
  • Hosted backend (Pro / commercial) — все вызовы аудируются, audit log выдаётся клиенту.
  • Source code открыт для всех 7 публичных MCP.
  • Не аффилированы с провайдерами данных (ФНС, Росреестр, ЮKassa, 1С, и т.д.).

Полные условия — в Terms of Service.

Чек-лист перед production-использованием

  • Source code MCP проверен (репо, автор, активность).
  • Env-vars не в git (.gitignore корректный).
  • autoApprove только для read-only тулов.
  • Audit log включён, проверяется еженедельно.
  • Для commercial MCP — sandbox-режим протестирован.
  • Лимиты провайдера известны и учтены.
  • Команда знает какие MCP подключены и зачем.

Что дальше