Перейти к содержимому
Trading Terminal
Личный кабинет
Опубликовано

Как безопасно устанавливать MCP-серверы: практический чек-лист

Локальный MCP — это программа с правами вашего пользователя, а не безобидное расширение чата. До запуска проверьте источник и entrypoint, закрепите версии, ограничьте файлы, сеть, секреты и инструменты, затем тестируйте в изолированном профиле.

MCPбезопасностьCodex
Защитные слои вокруг локального MCP-сервера

MCP стандартизирует описание инструментов, но не делает исполняемый код безопасным автоматически. Локальный сервер запускается на вашем компьютере и наследует доступ процесса. Удаленный сервер получает переданные данные и токены. Поэтому модель доверия должна быть такой же, как для CLI-утилиты или интеграции с API.

Четыре вопроса до установки

  1. Кто написал и распространяет сервер?
  2. Какой код фактически будет запущен?
  3. К каким данным и действиям он получит доступ?
  4. Что произойдет при компрометации сервера или его зависимости?

Если на один вопрос нет ответа, не подключайте production-секреты.

Чек-лист безопасной установки MCP-сервера

MCP-сервер — реальная граница доверия

Описание tool видит модель, но операционная система исполняет программу. Красивое имя read_chart не мешает коду дополнительно читать домашнюю папку или отправлять телеметрию, если права и сеть это позволяют.

В официальных Security Best Practices MCP локальный компрометированный сервер рассматривается как источник произвольного выполнения кода, утечки данных и потери файлов. Документ требует осознанного согласия перед запуском локальной команды и рекомендует показывать пользователю точную команду.

1. Проверяйте источник, а не название

Найдите официальный сайт автора и ссылку на репозиторий с него. Остерегайтесь похожих имен пакетов, форков без объяснений и инструкций, которые предлагают запуск одной длинной команды с загрузкой скрипта.

Проверьте:

  • возраст репозитория и историю коммитов;
  • авторов последних релизов;
  • issues о безопасности и неожиданных запросах;
  • лицензию;
  • наличие lock-файла;
  • опубликованный package соответствует репозиторию или нет;
  • изменялась ли команда установки недавно.

Для TradingView важно помнить: официального MCP нет. Список сторонних вариантов и их архитектура собраны в статье лучшие MCP для TradingView.

2. Читайте entrypoint и установочные скрипты

Перед первым запуском найдите:

  • package.json scripts и зависимости;
  • pyproject.toml, requirements и entrypoint;
  • postinstall/preinstall hooks;
  • вызовы shell и дочерних процессов;
  • чтение файлов за пределами рабочей папки;
  • сетевые домены;
  • сбор cookies и браузерных профилей;
  • телеметрию и crash reports.
Признак Почему важен Безопасное действие
`curl … sh` Код меняется между просмотром и запуском
npx -y package@latest Каждый запуск может получить новую версию Закрепить точную версию
Postinstall Код выполняется при установке Прочитать script до install
Полный browser profile Доступ к cookies многих сайтов Создать отдельный профиль
Shell tool без ограничений Произвольные команды Не включать или изолировать

3. Закрепляйте версию и зависимости

Запуск из main, latest или непроверенного git URL делает код подвижным. Сегодня проверена одна версия, завтра исполнится другая.

Практика:

  1. выберите release или commit hash;
  2. сохраните lock-файл;
  3. проверьте checksum артефакта, если он опубликован;
  4. отключите автоматическое обновление для production;
  5. обновляйте отдельным процессом с diff и тестом.

Даже надежный автор может потерять учетную запись или выпустить уязвимую зависимость. Pinning уменьшает непредсказуемость, но не заменяет аудит.

4. Давайте минимум секретов

Ключ должен иметь минимальные scopes, отдельный аккаунт и ограниченный срок. Для чтения данных не выдавайте право торговли, удаления или администрирования.

Не передавайте секрет:

  • в аргументах команд — они видны в списке процессов;
  • в prompt — он может попасть в историю;
  • в config.toml, который синхронизируется или коммитится;
  • в URL query;
  • в обычных логах.

Используйте переменную окружения или системный secret store. В Codex для STDIO можно разрешить конкретную переменную через env_vars, а для HTTP указать имя переменной bearer token. Формат описан в официальной документации Codex MCP.

5. Ограничивайте tools на стороне клиента

Если сервер предлагает десять инструментов, а нужны два, включите allowlist. Для новых write-tools задайте подтверждение.

Пример Codex:

[mcp_servers.market_data]
command = "node"
args = ["C:/mcp/market-data/index.js"]
enabled_tools = ["get_quote", "get_history"]
disabled_tools = ["place_order", "delete_file"]
default_tools_approval_mode = "prompt"

Allowlist уменьшает случайные вызовы модели. Он не защищает от вредоносного кода внутри разрешенного процесса, поэтому нужен вместе с изоляцией ОС.

6. Изолируйте файлы и браузер

Запускайте незнакомый сервер:

  • под отдельным пользователем или в контейнере;
  • в каталоге без личных документов;
  • с read-only mount там, где запись не нужна;
  • с отдельным браузерным профилем;
  • без SSH-ключей, cloud credentials и production .env;
  • с ограниченной исходящей сетью.

Если MCP управляет TradingView Desktop через DevTools, считайте browser session секретом. Не открывайте в том же профиле почту, банк и админки.

7. Контролируйте сеть

Запишите все необходимые домены и заблокируйте остальные. Для удаленного MCP используйте HTTPS и проверяйте точный URL.

Официальные MCP security practices отдельно разбирают SSRF: злонамеренный сервер может подсовывать OAuth metadata URL во внутреннюю сеть, localhost или cloud metadata endpoint. Серверные клиенты должны проверять redirects, блокировать private ranges и использовать egress policy.

Для локальной разработки loopback может быть необходим. Разрешайте конкретный порт, а не всю частную сеть.

8. Не передавайте чужой токен насквозь

Token passthrough — схема, где MCP принимает токен, выпущенный для другого API, и просто передает его дальше. Спецификация запрещает этот анти-паттерн: сервер не может надежно проверить audience и теряет корректный аудит.

Токен должен быть выпущен для конкретного MCP resource server. Для downstream API сервер использует отдельный authorization flow с понятным согласием и scopes.

9. Учитывайте prompt injection

MCP может читать веб-страницы, документы, issue и сообщения. Внутри внешнего текста может находиться инструкция для модели: раскрыть секрет, вызвать другой tool или изменить файл.

Защита строится слоями:

  • внешний контент считается данными, а не системной инструкцией;
  • read и write tools разделены;
  • чувствительные действия требуют подтверждения;
  • секреты недоступны модели без необходимости;
  • ответы сервера очищаются и ограничиваются;
  • действия журналируются.

Спецификация MCP Tools требует от серверов валидировать inputs, применять access control, rate limit и очищать outputs; клиентам рекомендуется подтверждать чувствительные операции и показывать inputs пользователю.

10. Проверяйте OAuth и сессии

Для удаленного сервера убедитесь, что consent screen показывает правильного клиента, scopes и redirect URI. Redirect должен совпадать точно, а state быть одноразовым и проверяться на callback.

Session ID не является аутентификацией. Сервер обязан проверять каждый входящий запрос и связывать сессию с авторизованным пользователем.

11. Ведите журнал и план отзыва

Минимальный audit log содержит:

  • время;
  • сервер и версию;
  • имя tool;
  • нормализованные inputs без секретов;
  • результат и ошибку;
  • пользователя или задачу;
  • факт подтверждения.

До запуска ответьте, как быстро отключить сервер, отозвать токен, найти затронутые действия и восстановить данные. Backup без процедуры восстановления — слабая защита.

Безопасный первый запуск

  1. Создайте тестового пользователя ОС или контейнер.
  2. Подготовьте синтетические данные.
  3. Отключите write-tools.
  4. Запретите доступ к домашним секретам.
  5. Ограничьте сеть allowlist.
  6. Запустите сервер и зафиксируйте процессы и соединения.
  7. Вызовите каждый read-only tool с граничными inputs.
  8. Проверьте логи на секреты.
  9. Перезапустите и убедитесь, что версия не изменилась.
  10. Только затем подключайте минимальный рабочий scope.

Для TradingView-сервера продолжите по инструкции как подключить TradingView MCP к Codex, сохраняя read-only режим.

Вывод

Безопасность MCP определяется не протоколом, а границами процесса, токенами и набором разрешенных действий. Проверяйте точный код, фиксируйте версию, изолируйте окружение и включайте инструменты по одному. Любой сервер, способный читать внешний контент и выполнять запись, нужно проектировать с учетом prompt injection и обязательного подтверждения.

Частые вопросы

Опасен ли MCP-сервер без торговых инструментов?

Риск зависит не только от списка tools. Локальный процесс может читать доступные файлы и переменные, обращаться в сеть и запускать команды в пределах прав пользователя. Проверяйте фактический код и окружение.

Достаточно ли большого числа звезд на GitHub?

Нет. Звезды показывают интерес, но не подтверждают отсутствие вредоносного кода, безопасные обновления или корректную работу с секретами. Нужны аудит кода, истории релизов и зависимостей.

Где хранить API-ключ для MCP?

В менеджере секретов или переменной окружения с минимальными правами. Не помещайте ключ в args, prompt, репозиторий или обычный лог. По возможности используйте отдельный короткоживущий токен.

Какой набор прав дать новому MCP?

Начните с read-only инструментов и тестовых данных. Запись, удаление, отправку сообщений, заявки и доступ к чувствительным файлам включайте отдельно и с подтверждением.