Claude Platform Docs
MessagesТуннели MCP

Справочник по туннелям MCP

Поля конфигурации прокси, REST API туннелей, требования к сертификатам и компонент настройки.

Конфигурация прокси

Прокси читает свою конфигурацию из /etc/mcp-gateway/config.yaml (Compose) или из сформированного ConfigMap (Helm, заполняется из gateway.config.*).

ПолеОписаниеПо умолчанию
listen_addrАдрес и порт для прослушивания.Обязательно
log_levelУровень детализации журналирования: debug, info, warn или error.info
shutdown_timeoutКак долго ждать завершения выполняющихся запросов при корректном завершении работы.30s
tunnel_domainБазовый домен, назначенный туннелю. Если задан, при поиске маршрута этот суффикс удаляется из входящих имён хостов, так что ключи routes могут быть простыми поддоменами (wiki). Если пуст, ключи routes должны быть точными полными именами хостов.Обязательно, если ключи routes являются простыми поддоменами
tls.cert_fileПуть к серверному TLS-сертификату.Обязательно
tls.key_fileПуть к закрытому ключу серверного TLS.Обязательно
routesОтображение поддомена или полного имени хоста на URL вышестоящего сервера. См. Сопоставление маршрутов.Обязательно
upstream.allowed_ipsДиапазоны IPv4 CIDR или отдельные адреса, к которым прокси разрешено подключаться. Взаимоисключающее с disable_ip_validation.Частные диапазоны RFC1918
upstream.disable_ip_validationПолностью отключить проверку IP вышестоящего сервера. Взаимоисключающее с allowed_ips.false
upstream.tls.ca_fileНабор сертификатов CA для проверки TLS вышестоящего сервера.Нет
upstream.tls.include_system_casТакже доверять системному набору сертификатов CA для TLS вышестоящего сервера.false

Для вышестоящих маршрутов https:// задайте хотя бы один из параметров upstream.tls.ca_file или upstream.tls.include_system_cas; в противном случае у прокси не будет якоря доверия для сертификата вышестоящего сервера.

Сопоставление маршрутов

routes — это плоское отображение строк (map[string]string), а не список. Прокси сначала ищет входящее имя хоста по точному совпадению, затем удаляет суффикс tunnel_domain и сопоставляет оставшийся поддомен. При сопоставлении учитывается только имя хоста; путь запроса и строка запроса передаются вышестоящему серверу MCP без изменений.

Каждое значение вышестоящего сервера должно иметь строго вид scheme://host:port. Порт обязателен. Указание пути отклоняется при загрузке конфигурации с ошибкой invalid upstream (must be scheme://host:port).

API туннелей

REST API туннелей находится по адресу /v1/tunnels и поддерживает создание, получение списка и архивирование туннелей, регистрацию сертификатов CA, а также раскрытие или ротацию токена туннеля. См. справочник по API туннелей, где описаны все конечные точки, схемы запросов и ответов, а также примеры.

Обязательные заголовки в каждом запросе:

ЗаголовокЗначение
AuthorizationBearer <token> (токен, полученный в результате обмена WIF)
anthropic-version2023-06-01
anthropic-betamcp-tunnels-2026-06-22

Требования к сертификатам

Компонент настройки автоматически генерирует соответствующие требованиям сертификаты. Эти требования применяются только в том случае, если вы выпускаете сертификаты через собственную PKI.

Сертификат CA

Загружается с помощью POST /v1/tunnels/{tunnel_id}/certificates. Туннель может одновременно содержать до двух активных сертификатов CA, что позволяет выполнять ротацию без простоя.

  • В кодировке PEM, один сертификат, размером до 8 кБ.
  • Присутствует расширение BasicConstraints со значением CA:TRUE, помеченное как критическое.
  • Присутствует расширение SubjectKeyIdentifier.
  • KeyUsage включает keyCertSign.
  • В пределах срока действия.
  • RSA 2048 бит или больше либо ECDSA P-256 или больше, с подписью SHA-256 или более стойкой.

Серверный сертификат

Предъявляется прокси во время внутреннего TLS.

  • Подписан непосредственно зарегистрированным CA (без промежуточных сертификатов).
  • Присутствует расширение AuthorityKeyIdentifier, совпадающее с SubjectKeyIdentifier CA.
  • Subject Alternative Name включает DNS-имя, соответствующее <route>.<tunnel-domain>. Подстановочный знак *.<tunnel-domain> покрывает все маршруты.
  • Если присутствует расширение ExtendedKeyUsage, оно включает serverAuth.
  • В пределах срока действия.
  • RSA 2048 бит или больше либо ECDSA P-256 или больше, с подписью SHA-256 или более стойкой.

Компонент настройки генерирует CA ECDSA P-256 со сроком действия пять лет и серверный сертификат RSA 4096 бит с подстановочным SAN и сроком действия 90 дней.

Компонент настройки

Компонент настройки поставляется внутри образа mcp-proxy в виде исполняемого файла setup. Запускайте его командой docker compose run --rm setup <subcommand> (Compose) или полагайтесь на хуки и CronJob чарта (Helm).

setup init

Подключается к существующему туннелю (или создаёт новый, если идентификатор туннеля не указан), затем генерирует CA и серверный сертификат, регистрирует CA, получает токен туннеля и записывает все результаты в место назначения.

ФлагОписаниеПо умолчанию
--api-urlБазовый URL Claude API. Также читается из API_URL.Обязательно
--tunnel-idИдентификатор туннеля для подключения (tnl_...). Также читается из TUNNEL_ID. Если не указан, создаётся новый туннель; идентификатор туннеля, уже сохранённый в выходных данных, повторно используется при последующих запусках.Нет (создать туннель)
--outputМесто назначения вывода: dir:/path или k8s-secret:NAME. Чарт Helm передаёт k8s-secret:<release>.k8s-secret:mcp-tunnel (определяется автоматически при запуске в поде Kubernetes; в остальных случаях обязательно)
--cert-durationСрок действия серверного сертификата.2160h (90 дней)
--token-versionСтрока для обнаружения изменений. Новое значение запускает ротацию токена при повторном запуске. И чарт Helm, и пример Compose передают 1 в качестве начального значения.Нет

Команда выполняет аутентификацию через Workload Identity Federation. Она читает ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_WORKSPACE_ID (необязательно) и ровно одну из переменных ANTHROPIC_IDENTITY_TOKEN_FILE или ANTHROPIC_IDENTITY_TOKEN. Актуальную семантику этих переменных см. в справочнике по WIF; компонент настройки определяет сервисный аккаунт по правилу федерации, поэтому ему не требуется отдельно ANTHROPIC_SERVICE_ACCOUNT_ID.

setup renew-cert

Выпускает новый серверный сертификат, подписанный сохранённым CA. Не выполняет вызовов API.

ФлагОписаниеПо умолчанию
--outputМесто назначения вывода: dir:/path или k8s-secret:NAME. Чарт Helm передаёт k8s-secret:<release>.k8s-secret:mcp-tunnel (определяется автоматически при запуске в поде Kubernetes; в остальных случаях обязательно)
--cert-durationСрок действия нового сертификата.2160h (90 дней)
--renew-beforeПропустить обновление, если у существующего сертификата осталось больше указанного срока.0 (всегда обновлять)

Установка --renew-before=720h превращает команду в пустую операцию, если остаётся более 30 дней срока действия, поэтому её безопасно запускать по фиксированному расписанию.

Was this page helpful?