MCP и OAuth: как подключить защищённый удалённый сервер
На странице · 4 разделов
Для защищённого удалённого MCP-сервера клиент получает адрес сервера авторизации из метаданных, проходит вход через браузер и посылает выданный ему токен доступа в заголовке запроса. Сервер обязан проверить не только действительность токена, но и то, что тот предназначен именно ему. Ниже — порядок проверки на собственном изолированном стенде, а не подтверждение безопасности конкретного сервиса: Modelium такой вход не запускал.
Инженерный гайд, не домашний рецепт. Нужны собственный изолированный HTTPS MCP-сервер с авторизацией, работающий сервер входа (authorization server), тестовый клиент и право смотреть HTTP-статусы и серверный журнал. Инструкция сверена со спецификацией MCP от 28 июля 2026 года на закреплённой ревизии
db4bfcff; Modelium не поднимал эти серверы и не проверял готовую интеграцию. ОС, модель и память определяются вашим стеком: этот протокольный тест сам по себе не запускает языковую модель. s1 s3
Когда удалённому MCP нужен OAuth?
MCP даёт приложению доступ к внешним инструментам. Для защищённого сервера, доступного по HTTP, OAuth в пользовательском сценарии позволяет человеку разрешить клиенту запросы от своего имени. Спецификация называет этот механизм необязательным: у локального сервера stdio, который клиент запускает как дочерний процесс, другая схема получения учётных данных. «OAuth 2.1» здесь — проект стандарта, на который опирается версия MCP; само по себе название не означает, что любой MCP-сервер уже поддерживает вход. s1
Представьте учебный инструмент read_sample, который возвращает синтетическую метку test-001. Цель проверки: после входа клиент видит разрешённый ответ, а без входа или с токеном для другого тестового ресурса сервер не выдаёт данные. Это предложенный сценарий для вашей среды, а не результат эксперимента Modelium. Реальные токены, документы и URL рабочего контура в отчёт не помещайте. s1 s3
Что подготовить перед подключением?
Зафиксируйте HTTPS-адрес своего MCP endpoint, адрес сервера входа и отдельную тестовую учётную запись с минимально необходимыми правами. Нужен клиент, который поддерживает авторизацию удалённого MCP по версии спецификации вашего сервера, а также два контролируемых вами тестовых ресурса, если проверяется отказ токену с неверным назначением. Требования к ОС и оборудованию задаёт установленное приложение; этот материал не предлагает разворачивать кластер или скачивать веса модели. Не открывайте учебный endpoint наружу только ради проверки. s1 s3
Как проходит вход по шагам?
- Подключите адрес своего защищённого MCP endpoint в тестовом клиенте и выполните безвредный запрос. Если авторизация требуется, ожидайте ответ HTTP 401. Из заголовка
WWW-Authenticateклиент берёт адрес метаданных ресурса; если его там нет, спецификация предписывает поиск по/.well-known/oauth-protected-resourceс учётом пути endpoint. Метаданные содержатauthorization_servers, а клиент затем получает описание выбранного сервера входа. Если адреса неожиданно ведут на чужой домен, остановите вход и выясните причину. s1 s2 - Пройдите вход в браузере через совместимый клиент. Для такого потока клиент должен запрашивать токен с
resource, указывающим точный адрес этого MCP-сервера, и передавать этот параметр и при авторизации, и при обмене кода на токен. PKCE — защита кода авторизации; спецификация требует поддержки PKCE клиентом и проверки объявления этой возможности сервером входа. Не подставляйте вручную токен от другого сервиса и не вставляйте его в URL. s1 s3 - Повторите безвредный запрос через клиент. На своём стенде проверьте не только появление
read_sampleв перечне, но и фактический вызов сtest-001: сохраните статус HTTP, запись серверного решения и ответ инструмента. Сверьте метку с входом; текст, который лишь написала языковая модель, не подтверждает вызов. Токен доступа клиент передаёт в заголовкеAuthorization: Bearer, а сервер проверяет его срок, права и назначение. s1 s3
Как проверить отказ и не раскрыть токен?
На собственном изолированном стенде запустите серверный интеграционный тест с тестовыми токенами от одного вашего сервера входа: один выпущен для ресурса A, второй — только для ресурса B. Проверьте, что A обрабатывает разрешённый запрос с первым токеном и возвращает HTTP 401 для второго, не вызывая инструмент; отказ должен быть виден в журнале A без записи самого токена. Это проверка сервера на неверное назначение токена, а не рекомендация клиенту посылать чужие токены: спецификация запрещает клиенту направлять на MCP-сервер токен другого ресурса. Если нет двух контролируемых тестовых ресурсов или возможности провести серверный тест, не объявляйте проверку назначения успешной. s1 s3
Отдельно повторите запрос без токена и с просроченным тестовым токеном: для обязательной авторизации или недействительного токена спецификация предусматривает HTTP 401. Недостаточные права при действительном токене — другой случай, HTTP 403; не лечите его подменой токена и не приписывайте HTTP 401 ошибке языковой модели. Зафиксируйте ожидаемый и фактический статусы, аудит решения и отсутствие выданных данных. Если тест не прошёл, не подключайте рабочие документы. s1
Граница: успешный вход не гарантирует безопасные действия всех инструментов или локальную работу модели. Сервер MCP должен проверять права на операции отдельно; пересылать полученный токен в сторонний API без отдельного обмена нельзя. После проверки входа откройте чек-лист прав MCP-инструментов и проведите разрешённый и запрещённый вызовы на синтетических данных. s3
Источники
- MCP specification 2026-07-28 — Authorization — revision db4bfcff3d60f5df01a21bdf6b78f7012cac4634. Получено 22.10.2026.
- MCP specification 2026-07-28 — Authorization Server Discovery — revision db4bfcff3d60f5df01a21bdf6b78f7012cac4634. Получено 22.10.2026.
- MCP specification 2026-07-28 — Authorization Security Considerations — revision db4bfcff3d60f5df01a21bdf6b78f7012cac4634. Получено 22.10.2026.