Référence des tunnels MCP
Champs de configuration du proxy, l'API REST Tunnels, exigences relatives aux certificats et le composant de configuration.
Configuration du proxy
Le proxy lit sa configuration depuis /etc/mcp-gateway/config.yaml (Compose) ou depuis la ConfigMap rendue (Helm, renseignée à partir de gateway.config.*).
| Champ | Description | Valeur par défaut |
|---|---|---|
listen_addr | Adresse et port sur lesquels écouter. | Obligatoire |
log_level | Verbosité de la journalisation : debug, info, warn ou error. | info |
shutdown_timeout | Durée d'attente des requêtes en cours lors d'un arrêt progressif. | 30s |
tunnel_domain | Domaine de base attribué au tunnel. Lorsqu'il est défini, la recherche de route supprime ce suffixe des noms d'hôte entrants afin que les clés de routes puissent être de simples sous-domaines (wiki). Lorsqu'il est vide, les clés de routes doivent être des noms d'hôte complets exacts. | Obligatoire lorsque les clés de routes sont de simples sous-domaines |
tls.cert_file | Chemin vers le certificat TLS du serveur. | Obligatoire |
tls.key_file | Chemin vers la clé privée TLS du serveur. | Obligatoire |
routes | Correspondance entre sous-domaine ou nom d'hôte complet et URL en amont. Voir Correspondance des routes. | Obligatoire |
upstream.allowed_ips | Plages CIDR IPv4 ou adresses uniques auxquelles le proxy est autorisé à se connecter. Mutuellement exclusif avec disable_ip_validation. | Plages privées RFC1918 |
upstream.disable_ip_validation | Désactive entièrement la validation des IP en amont. Mutuellement exclusif avec allowed_ips. | false |
upstream.tls.ca_file | Bundle d'autorités de certification pour la validation du TLS en amont. | Aucune |
upstream.tls.include_system_cas | Faire également confiance au bundle d'autorités de certification du système pour le TLS en amont. | false |
Pour les routes en amont en https://, définissez au moins l'un des champs upstream.tls.ca_file ou upstream.tls.include_system_cas ; sinon, le proxy ne dispose d'aucune ancre de confiance pour le certificat en amont.
Correspondance des routes
routes est une table de chaînes plate (map[string]string), et non une liste. Le proxy recherche d'abord le nom d'hôte entrant par correspondance exacte, puis en supprimant le suffixe tunnel_domain et en faisant correspondre le sous-domaine restant. La correspondance ne prend en compte que le nom d'hôte ; le chemin de la requête et la chaîne de requête sont transmis inchangés au serveur MCP en amont.
Chaque valeur en amont doit être exactement de la forme scheme://host:port. Le port est obligatoire. L'inclusion d'un chemin est rejetée au chargement de la configuration avec l'erreur invalid upstream (must be scheme://host:port).
API Tunnels
L'API REST Tunnels se trouve à l'adresse /v1/tunnels et permet de créer, lister et archiver des tunnels, d'enregistrer des certificats d'autorité de certification, ainsi que de révéler ou de renouveler le jeton du tunnel. Consultez la référence de l'API Tunnels pour tous les points de terminaison, les schémas de requête et de réponse, ainsi que des exemples.
En-têtes obligatoires pour chaque requête :
| En-tête | Valeur |
|---|---|
Authorization | Bearer <token> (le jeton échangé via WIF) |
anthropic-version | 2023-06-01 |
anthropic-beta | mcp-tunnels-2026-06-22 |
Exigences relatives aux certificats
Le composant de configuration génère automatiquement des certificats conformes. Ces exigences ne s'appliquent que si vous émettez des certificats via votre propre PKI.
Certificat d'autorité de certification
Téléversez-le avec POST /v1/tunnels/{tunnel_id}/certificates. Un tunnel peut contenir jusqu'à deux certificats d'autorité de certification actifs à la fois, ce qui permet une rotation sans interruption de service.
- Encodé en PEM, certificat unique, jusqu'à 8 ko.
- Extension
BasicConstraintsprésente avecCA:TRUE, marquée comme critique. - Extension
SubjectKeyIdentifierprésente. KeyUsageinclutkeyCertSign.- Dans sa période de validité.
- RSA 2048 bits ou plus, ou ECDSA P-256 ou plus, avec une signature SHA-256 ou plus forte.
Certificat serveur
Présenté par le proxy lors du TLS interne.
- Signé directement par une autorité de certification enregistrée (sans intermédiaires).
- Extension
AuthorityKeyIdentifierprésente et correspondant auSubjectKeyIdentifierde l'autorité de certification. - Le Subject Alternative Name inclut un nom DNS correspondant à
<route>.<tunnel-domain>. Un joker*.<tunnel-domain>couvre toutes les routes. - Si l'extension
ExtendedKeyUsageest présente, elle inclutserverAuth. - Dans sa période de validité.
- RSA 2048 bits ou plus, ou ECDSA P-256 ou plus, avec une signature SHA-256 ou plus forte.
Le composant de configuration génère une autorité de certification ECDSA P-256 d'une validité de cinq ans et un certificat serveur RSA 4096 bits avec un SAN joker et une validité de 90 jours.
Composant de configuration
Le composant de configuration est fourni dans l'image mcp-proxy sous la forme du binaire setup. Exécutez-le avec docker compose run --rm setup <subcommand> (Compose) ou appuyez-vous sur les hooks et CronJobs du chart (Helm).
setup init
S'attache à un tunnel existant (ou en crée un lorsqu'aucun ID de tunnel n'est fourni), puis génère une autorité de certification et un certificat serveur, enregistre l'autorité de certification, récupère le jeton du tunnel et écrit toutes les sorties vers la destination.
| Option | Description | Valeur par défaut |
|---|---|---|
--api-url | URL de base de l'API Claude. Également lue depuis API_URL. | Obligatoire |
--tunnel-id | ID du tunnel auquel s'attacher (tnl_...). Également lu depuis TUNNEL_ID. Lorsqu'il est omis, un nouveau tunnel est créé ; un ID de tunnel déjà stocké dans la sortie est réutilisé lors des exécutions suivantes. | Aucune (crée un tunnel) |
--output | Destination de sortie : dir:/path ou k8s-secret:NAME. Le chart Helm transmet k8s-secret:<release>. | k8s-secret:mcp-tunnel (détecté automatiquement lors de l'exécution dans un pod Kubernetes ; obligatoire sinon) |
--cert-duration | Période de validité du certificat serveur. | 2160h (90 jours) |
--token-version | Chaîne de détection de changement. Une nouvelle valeur déclenche la rotation du jeton lors d'une nouvelle exécution. Le chart Helm et l'exemple Compose transmettent tous deux 1 comme valeur initiale. | Aucune |
La commande s'authentifie via la Workload Identity Federation. Elle lit ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_WORKSPACE_ID (facultatif), et exactement l'une des variables ANTHROPIC_IDENTITY_TOKEN_FILE ou ANTHROPIC_IDENTITY_TOKEN. Consultez la référence WIF pour la sémantique actuelle de ces variables ; le composant de configuration déduit le compte de service à partir de la règle de fédération, il ne nécessite donc pas ANTHROPIC_SERVICE_ACCOUNT_ID séparément.
setup renew-cert
Émet un nouveau certificat serveur signé par l'autorité de certification stockée. N'effectue aucun appel API.
| Option | Description | Valeur par défaut |
|---|---|---|
--output | Destination de sortie : dir:/path ou k8s-secret:NAME. Le chart Helm transmet k8s-secret:<release>. | k8s-secret:mcp-tunnel (détecté automatiquement lors de l'exécution dans un pod Kubernetes ; obligatoire sinon) |
--cert-duration | Période de validité du nouveau certificat. | 2160h (90 jours) |
--renew-before | Ignore le renouvellement si le certificat existant dispose d'une durée restante supérieure à cette valeur. | 0 (toujours renouveler) |
Définir --renew-before=720h fait de la commande une opération sans effet lorsqu'il reste plus de 30 jours de validité, de sorte qu'elle peut être exécutée en toute sécurité selon un calendrier fixe.
Was this page helpful?