Справочник по туннелям 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 туннелей, где описаны все конечные точки, схемы запросов и ответов, а также примеры.
Обязательные заголовки в каждом запросе:
| Заголовок | Значение |
|---|---|
Authorization | Bearer <token> (токен, полученный в результате обмена WIF) |
anthropic-version | 2023-06-01 |
anthropic-beta | mcp-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, совпадающее сSubjectKeyIdentifierCA. - 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?