Удалённые MCP-серверы: что проверить перед подключением

Локальный MCP-сервер и удалённый выглядят одинаково, когда уже работают: тот же список инструментов в клиенте, тот же диалог, тот же результат. Разница — в том, что вы отдали, чтобы туда попасть. Локальный сервер — программа на вашей машине, которую клиент запускает и с которой говорит через стандартный ввод и вывод, и отдаёте вы командную строку. Удалённый сервер — чужой HTTPS-эндпоинт, и отдаёте вы учётные данные, а вместе с ними всё, что они открывают, — на всё время, пока вы их не отзовёте.

Поэтому полезный вопрос перед тем, как вставить URL в диалог подключения, — не «можно ли доверять этому серверу»: по странице каталога на него всё равно никто не ответит. Полезны три более узких вопроса, у которых ответы есть: на что выписан токен, куда идти, чтобы его забрать, и что на самом деле проверил каталог, в котором вы нашли сервер. Ответы ниже — по спецификации MCP и документации вендоров в том виде, в каком они были 16 августа 2026 года.

Локальный и удалённый — разные решения о доверии, а не разные шаги настройки

Текущая ревизия спецификации, 2026-07-28, рассматривает два транспорта как разные контексты безопасности. Авторизация в MCP необязательна, и где она применяется — сказано явно: реализациям на HTTP-транспорте следует соответствовать спецификации OAuth, а stdio-реализациям — не следовать ей вовсе и брать учётные данные из окружения. HTTP+SSE, более старый удалённый транспорт, объявлен устаревшим; ожидать стоит Streamable HTTP.

Локальный (stdio) Удалённый (Streamable HTTP)
Что вы отдаёте Команду, которую запустит клиент URL и обычно OAuth-грант
Где выполняется код Ваша машина, ваша учётная запись Инфраструктура, которую держит кто-то другой
Учётные данные Берутся из окружения Токен доступа, привязанный к одному этому серверу
Что делает «отключить» Перестаёт запускать процесс Удаляет копию токена у клиента; грант может остаться
Худший случай, если автор враждебен Произвольный код с вашими правами Всё, до чего дотягиваются одобренные scopes

Безопасного столбца здесь нет. Локальный сервер — произвольный код, работающий от вашего имени; ровно поэтому спецификация требует, чтобы клиент, предлагающий настройку локального сервера в один клик, показывал точную команду, которую выполнит, без сокращений, и сначала получал явное согласие. Удалённый сервер не кладёт код на вашу машину, но уводит ваши данные оператору и оставляет путь доступа, который переживёт ваше внимание. Эти два ломаются в разные стороны; наше сравнение того, что видит каждый вид разбирает это подробнее.

На что на самом деле даёт право токен

Модель авторизации — OAuth 2.1, и пользователю здесь стоит понять привязку к аудитории. Клиенты обязаны реализовать Resource Indicators for OAuth 2.0 (RFC 8707): параметр resource должен отправляться и в запросе авторизации, и в запросе токена, называя конкретный сервер, для которого токен выписан. Серверы обязаны проверять, что токены выписаны именно им, принимать только токены, действительные для их собственных ресурсов, и не принимать и не пропускать никакие другие. Передача клиентского токена дальше, в нижележащий API, — «token passthrough» — запрещена прямо.

Значит, корректно реализованный токен бесполезен на другом сервере. Это закрывает replay, переиспользование учётных данных между сервисами и целый класс атак «запутанного заместителя» — и ничего не говорит о самом операторе. Привязка к аудитории отвечает на вопрос, где токен работает, а не на то, что компания на другом конце делает с тем, что её инструменты забирают от вашего имени. На это отвечает их политика конфиденциальности, а не протокол.

Scopes — вот где на самом деле решается ваш риск. Спецификация подталкивает серверы к минимуму привилегий: scopes_supported задуман как минимальный набор, нужный для базовой функциональности, а всё сверх запрашивается постепенно, при первой попытке привилегированной операции. Серверы, которые этому следуют, просят мало на входе; те, которые нет, показывают один экран согласия со всем сразу. Этот экран — последняя точка, где решение ещё за вами.

Где его на самом деле отзывают

Поверхностей отзыва две, и большинство пользуется только первой.

В ассистенте. В Claude пользовательские коннекторы живут в разделе Customize > Connectors, где коннектор добавляют, вставив URL сервера; пользователям Free доступен один. На той же странице его отключают и включают или выключают отдельные инструменты сервера вместо того, чтобы принимать их все. Anthropic формулирует позицию по доверию прямо в справочном центре: пользовательские коннекторы позволяют подключить Claude к произвольным сервисам, не проверенным Anthropic. В ChatGPT удалённые серверы попадают через режим разработчика — Settings → Security and login, в вебе, принимаются эндпоинты SSE и streaming HTTP. Собственная документация OpenAI называет это мощным, но опасным, перечисляет среди рисков prompt injection и разрушительные действия записи и по умолчанию требует подтверждения для действий записи.

В сервисе, которым вы авторизовались. Вот этот шаг и пропускают. Удаление коннектора убирает копию токена у вашего клиента; грант, записанный в вашей учётной записи Google, GitHub, Atlassian или Notion, — отдельный объект со своим сроком жизни, а привязанный к нему refresh-токен может пережить коннектор надолго. Рекомендации Anthropic говорят ровно это: отзывать, отключая коннектор в настройках Claude или в настройках безопасности стороннего сервиса. Делайте и то и другое, а страницу подключённых приложений найдите до подключения.

Чек-лист на пять минут

  1. Кто держит этот эндпоинт? Сопоставьте имя хоста с компанией. Если домен URL и компания продукта не совпадают очевидным образом — на этом остановитесь.
  2. Стабильно ли имя хоста и HTTPS ли это? URL туннеля или голый IP-адрес у того, чем вы собираетесь пользоваться постоянно, говорят, что сервис к этому не готов.
  3. Какой учётной записью вы авторизуетесь? Грант наследует всё, до чего дотягивается эта запись: рабочий аккаунт Google и личный — очень разные радиусы поражения за одной и той же кнопкой.
  4. Соответствуют ли запрошенные scopes задаче? Инструмент для заметок по встречам, просящий полную запись в почтовый ящик, — это не нюанс, это и есть ответ.
  5. Можно ли выключить ненужные инструменты? Сделайте это до первого запроса.
  6. Где страница отзыва? Найдите её сейчас, у провайдера.
  7. Что оператор хранит? Срок хранения — вопрос политики, у протокола на этот счёт мнения нет.
  8. Есть ли локальная альтернатива? Если данные и так лежат у вас на диске, удалённый сервер добавляет оператора к задаче, где его не было.

Что говорит листинг в реестре, а что нет

Официальный реестр MCP по адресу registry.modelcontextprotocol.io — естественное место для поиска серверов, и значение листинга легко переоценить. Устав его рабочей группы конкретен. Публикация и доверие покрывают потоки аутентификации — GitHub OAuth, GitHub OIDC, проверку через DNS и HTTP — плюс владение пространством имён, инструменты модерации и жалобы сообщества. Явно вне области: ранжирование или выбор между реализациями MCP-серверов за клиентов или конечных пользователей, а также размещение, распространение и выполнение серверного кода, потому что реестр — каталог метаданных, а не реестр пакетов.

Значит, подтверждённое пространство имён доказывает, что тот, кто опубликовал запись, контролирует GitHub-организацию или домен в её имени. Это реальный сигнал: он усложняет тайпсквоттинг и даёт того, с кого спросить. Это не ревью кода, не аудит безопасности и не одобрение — личность установлена, поведение по-прежнему неизвестно.

Даже добропорядочный сервер — это ввод, а не авторитет

Один принцип из спецификации стоит нести в каждое подключение: описания поведения инструментов, включая аннотации, следует считать недоверенными, если они получены не от доверенного сервера, а хосты обязаны получить явное согласие пользователя перед вызовом любого инструмента. Описание инструмента — текст, который пишет удалённая сторона, а читает ваша модель: это и есть определение недоверенного ввода и причина, по которой «сервер сказал, что он только для чтения» — не средство защиты.

Конкретный прецедент — CVE-2025-6514, опубликованная 9 июля 2025 года против mcp-remote, прокси, через который многие клиенты добирались до удалённых серверов. С оценкой 9.6 она позволяла вредоносному серверу выполнить инъекцию команд ОС на подключающейся машине через подделанное значение authorization_endpoint в потоке OAuth. Затронуты версии с 0.0.5 по 0.1.16, исправление — в 0.1.16. Ничего не нужно было одобрять в чате: атакой было само подключение. Всё, что присылает удалённый сервер, — это данные, которые разбирает ваш софт, и само подключение — часть вашей поверхности атаки.

Когда более короткий ответ — локальный сервер

Всё перечисленное — цена доступа к тому, что и правда живёт в чужом облаке: к трекеру задач, CRM, календарю. Для них это разумная цена и странная — для файлов, которые уже лежат у вас на диске; поэтому Speak-Y поставляет локальный сервер, а не размещённый эндпоинт.

Его MCP-сервер — процесс, который ваш клиент запускает на вашей машине. Чтению больше ничего не нужно: результаты поиска, расшифровки, резюме встреч и задачи берутся прямо из библиотеки на том же компьютере, без выданного токена и без ретранслятора посередине. Команды, которые что-то меняют, — поставить тег на запись, назвать говорящих, поделиться в командный канал — идут через запущенное приложение, объявляются вашему клиенту как изменяющие данные, поэтому он сначала спрашивает, и логируются там, где их можно выключить. Добавление --read-only в аргументы сервера означает, что изменяющие команды этому клиенту вообще не публикуются, — гарантия более сильная, чем описание, обещающее хорошее поведение. Установка — в один клик из раздела Настройки → Интеграции, бесплатно на любом тарифе, включая Free.

Размен работает в обе стороны: локальный сервер не может обслужить ChatGPT во вкладке браузера и работает только там, где работает приложение. Если это ограничение важно, следующее сравнение для чтения — какие клиенты вообще умеют запускать локальный сервер; а если вопрос в том, что ассистенту стоит разрешать менять после подключения, — где проходит граница по доступу на запись. Обзор MCP перечисляет, что отдаёт сервер Speak-Y.

FAQ

Чем локальный MCP-сервер отличается от удалённого?

Локальный сервер — программа на вашей машине, которую клиент запускает и с которой говорит через стандартный ввод и вывод: вы отдаёте командную строку, и никакого токена не выдаётся. Удалённый сервер — HTTPS-эндпоинт, который держит кто-то другой: вы отдаёте учётные данные, обычно токен доступа OAuth 2.1, а данные, которых касаются инструменты, уезжают в инфраструктуру этого оператора.

На что на самом деле даёт право токен, выданный удалённому MCP-серверу?

По спецификации авторизации MCP токен привязан к одному серверу и одному набору scopes. Клиенты обязаны отправлять индикатор ресурса RFC 8707 с именем сервера и в запросе авторизации, и в запросе токена, а сервер обязан проверять, что токены выписаны именно ему, и не принимать и не пересылать никакие другие. Это исключает повторное использование токена в другом сервисе. О том, что оператор делает с данными, которые его инструменты забирают от вашего имени, это не говорит ничего.

Как отозвать доступ у удалённого MCP-сервера?

В двух местах, и большинство делает только первое. Удаление коннектора в ассистенте стирает копию токена у клиента; OAuth-грант, записанный в сервисе, которым вы авторизовались, — отдельный объект, и он обычно остаётся жив. Рекомендации Anthropic говорят отзывать доступ, отключая коннектор в настройках Claude или в настройках безопасности стороннего сервиса. Найдите страницу подключённых приложений у провайдера до подключения, а не после.

Значит ли листинг в официальном реестре MCP, что сервер безопасен?

Нет. Реестр подтверждает владение пространством имён — имя io.github.* через аутентификацию GitHub, имя на основе домена через проверку DNS или HTTP, — и это доказывает, что издатель контролирует это имя. Его устав явно выносит за область ранжирование и выбор между реализациями серверов и указывает, что реестр — каталог метаданных, а не реестр пакетов: он не размещает, не распространяет и не выполняет серверный код.

Может ли удалённый MCP-сервер прочитать данные, которых вы ему не отправляли?

Только то, до чего дотягиваются одобренные вами scopes. Риск в том, что scopes шире задачи: токен, выданный на весь почтовый ящик или диск, доступен любому инструменту этого сервера всё время жизни гранта. Читайте экран согласия, а не страницу с описанием, и пользуйтесь настройками по инструментам там, где клиент их даёт: в настройках коннекторов Claude отдельные инструменты можно включать и выключать, а режим разработчика ChatGPT по умолчанию требует подтверждения действий записи.