For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale

Tunnel MCP sécurisé

Connectez des serveurs MCP privés aux produits OpenAI compatibles sans les exposer à l’Internet public.

Le tunnel MCP sécurisé vous permet de connecter des serveurs MCP privés aux produits OpenAI compatibles sans ouvrir de ports entrants dans le pare-feu ni exposer ces serveurs à l’Internet public. Exécutez tunnel-client au sein du réseau qui peut déjà accéder à votre serveur MCP ; il établit une connexion HTTPS sortante vers OpenAI, récupère les tâches MCP en attente, transmet les requêtes localement et renvoie les réponses par le même tunnel.

Le tunnel MCP sécurisé prend en charge les connexions MCP privées, y compris les tests en mode développeur. Il ne prend pas en charge la soumission ni la distribution de plugins publics. Les plugins publics nécessitent un point de terminaison MCP HTTPS stable et accessible publiquement. Si le serveur MCP doit rester privé, exposez un proxy HTTPS public qui lui transmet les requêtes. Consultez la section sur la soumission de plugins publics pour connaître les exigences relatives aux points de terminaison et à l’authentification.

Qu’est-ce qu’un tunnel MCP ?

Un tunnel MCP est une connexion exclusivement sortante entre un hôte de votre réseau et un point de terminaison MCP hébergé par OpenAI. Utilisez-le lorsque votre serveur MCP est privé, hébergé sur site ou protégé par un pare-feu, mais que ChatGPT, Codex, l’API Responses ou une autre interface OpenAI compatible doit tout de même pouvoir l’appeler.

Le tunnel MCP sécurisé garde le serveur MCP privé tout en offrant aux produits OpenAI compatibles un accès standard pour leurs requêtes MCP. tunnel-client interroge OpenAI pour récupérer les tâches, transmet les requêtes MCP localement et renvoie les réponses par le même tunnel.

Utilisez le tunnel MCP sécurisé lorsque

  • Votre serveur MCP s’exécute sur un réseau privé, sur site, sur une machine de développement ou derrière des contrôles d’accès existants.
  • Vous souhaitez que ChatGPT, Codex, l’API Responses ou une autre interface OpenAI compatible utilise ce serveur MCP sans le rendre public.
  • Votre réseau permet à l’hôte qui exécute tunnel-client d’envoyer des requêtes HTTPS sortantes vers api.openai.com:443 par défaut, ou vers mtls.api.openai.com:443 lorsque mTLS est configuré pour le plan de contrôle, et d’accéder au serveur MCP privé.
  • Commencez par le guide des serveurs MCP pour découvrir les concepts généraux de MCP.

Fonctionnement

  1. Créez ou gérez un point de terminaison de tunnel MCP hébergé par OpenAI dans les paramètres des tunnels de la plateforme.
  2. Exécutez tunnel-client au sein du réseau qui peut accéder à votre serveur MCP privé.
  3. Configurez tunnel-client avec l’identité du tunnel et l’adresse du serveur MCP privé.
  4. Les produits OpenAI envoient les requêtes MCP au point de terminaison du tunnel hébergé par OpenAI.
  5. tunnel-client récupère les tâches en attente par long polling, transmet chaque requête JSON-RPC au serveur MCP privé et renvoie la réponse par le tunnel.

Le serveur MCP privé n’a pas besoin d’un port d’écoute public. Le point de terminaison hébergé par OpenAI offre aux produits compatibles un accès standard pour leurs requêtes MCP, tandis que la connexion réseau est toujours initiée depuis votre périmètre. Lorsqu’un connecteur demande des résultats en streaming, le tunnel peut transmettre les événements intermédiaires envoyés par le serveur.

Les produits OpenAI appellent le point de terminaison du tunnel hébergé par OpenAI ; tunnel-client récupère les tâches en attente par long polling et renvoie la réponse MCP par le même tunnel.

Avant de commencer

Vous avez besoin des éléments suivants :

  • Un tunnel_id obtenu dans les paramètres des tunnels de la plateforme.
  • Une clé API pour l’exécution de tunnel-client.
  • Un serveur MCP auquel tunnel-client peut accéder via stdio ou HTTP depuis votre réseau.

Autorisations et accès

Les autorisations des tunnels de la plateforme et l’accès au mode développeur de ChatGPT sont distincts :

  • La création ou la modification d’un tunnel nécessite les autorisations Lecture + Gestion pour les tunnels.
  • L’exécution de tunnel-client ou la sélection du tunnel lors de la création d’une application nécessite les autorisations Lecture + Utilisation pour les tunnels.
  • Les autorisations des tunnels s’appliquent à une organisation de la plateforme. Un propriétaire de l’organisation ou un administrateur RBAC attribue le rôle relatif aux tunnels.
  • Le mode développeur de ChatGPT dépend d’une autorisation distincte au niveau de l’espace de travail. Pour Enterprise/Edu, un administrateur de l’espace de travail accorde l’accès au mode développeur ; l’utilisateur l’active ensuite dans Paramètres → Sécurité et connexion. Consultez l’article du centre d’aide sur le mode développeur pour connaître les règles propres à chaque offre.

Demandez l’accès au mode développeur à l’administrateur de l’espace de travail ChatGPT concerné, et les autorisations des tunnels au propriétaire ou à l’administrateur RBAC de l’organisation concernée sur la plateforme.

Associez les tunnels aux bonnes organisations et aux bons espaces de travail

Un tunnel peut être associé à une ou plusieurs organisations de la plateforme ou à un ou plusieurs espaces de travail ChatGPT. Utilisez ces associations pour définir tous les contextes OpenAI autorisés à trouver ou à utiliser le tunnel.

  • Incluez l’organisation de la plateforme qui possède ou gère le tunnel.
  • Incluez l’espace de travail ChatGPT qui doit proposer le tunnel lors de la création d’applications.
  • Incluez une autre organisation de la plateforme lorsque Codex, l’API Responses ou un autre produit compatible doit appeler le serveur MCP privé depuis cette organisation.
  • Utilisez le même tunnel_id pour tunnel-client ; l’ajout d’organisations ou d’espaces de travail ne crée pas de second tunnel et ne modifie pas le point de terminaison du serveur MCP privé.

Pour un compte personnel, utilisez l’organisation personnelle de la plateforme qui appartient à ce compte. Pour les tests avec ChatGPT et Codex, associez le tunnel à l’espace de travail ChatGPT concerné et à l’organisation de la plateforme que Codex utilisera. Un tunnel associé uniquement à une organisation personnelle de la plateforme n’apparaît pas automatiquement dans un espace de travail Enterprise/Edu.

Si l’organisation de la plateforme et l’espace de travail ChatGPT sont déjà liés, vous pouvez ajouter l’organisation ou l’espace de travail manquant dans les paramètres des tunnels de la plateforme. Si la configuration de votre entreprise ne peut pas être vérifiée automatiquement, par exemple lorsque l’organisation de la plateforme n’a pas d’espace de travail ChatGPT correspondant, contactez l’équipe OpenAI chargée de votre compte pour demander une dérogation d’association manuelle, soumise à examen, pour la correspondance entre comptes d’entreprise qui doit utiliser le tunnel.

Prérequis réseau

tunnel-client n’a pas besoin d’accepter de connexions entrantes depuis Internet. Il doit pouvoir établir des connexions HTTPS sortantes vers OpenAI et accéder localement au serveur MCP privé :

OrigineDestinationUsage
Hôte exécutant tunnel-clientapi.openai.com:443 via HTTPS sur /v1/tunnel/*Interrogation et envoi des réponses par défaut.
Hôte exécutant tunnel-clientmtls.api.openai.com:443 via HTTPS sur /v1/tunnel/*Interrogation et envoi des réponses lorsque mTLS est configuré pour le plan de contrôle.
Hôte exécutant tunnel-clientLa commande stdio ou l’URL du serveur MCP configuréeTransmission des requêtes MCP depuis votre réseau.

Configurez tunnel-client

Ouvrez les paramètres des tunnels de la plateforme, puis utilisez le lien de téléchargement qui s’y trouve ou la dernière version publique de tunnel-client disponible sur openai/tunnel-client. Dans votre procédure d’exploitation, utilisez l’URL de la dernière version plutôt qu’une URL de version spécifique inscrite en dur.

Si vous disposez déjà d’un binaire, commencez par tunnel-client help quickstart. Pour un profil stdio local nommé, utilisez :

export CONTROL_PLANE_API_KEY="sk-..."

tunnel-client init \
  --sample sample_mcp_stdio_local \
  --profile local-stdio \
  --tunnel-id tunnel_0123456789abcdef0123456789abcdef \
  --mcp-command "python /path/to/server.py"

tunnel-client doctor --profile local-stdio --explain
tunnel-client run --profile local-stdio

Pour un serveur MCP HTTP, utilisez --mcp-server-url https://mcp.internal.example.com/mcp au lieu de --mcp-command.

Veillez au bon fonctionnement de tunnel-client run ... pendant la création ou les tests de l’application. La découverte de l’application et les appels aux outils MCP dépendent du client en cours d’exécution.

L’interface d’administration locale accessible à l’adresse /ui indique si le client en cours d’exécution fonctionne correctement, est prêt et est connecté avant vos tests depuis ChatGPT, Codex ou un workflow d’API.

Choisissez où exécuter tunnel-client

Exécutez tunnel-client dans le périmètre de confiance qui permet déjà d’accéder au serveur MCP privé. Voici les architectures de déploiement courantes :

  • Sidecar Kubernetes : Exécutez tunnel-client aux côtés du serveur MCP dans un même Pod et connectez-les via localhost.
  • Déploiement Kubernetes dédié : Exécutez tunnel-client séparément lorsque le serveur MCP est déjà accessible via un Service privé.
  • VM ou service systemd : Exécutez tunnel-client sur un hôte qui peut accéder au serveur MCP via un réseau privé.

Connectez-vous depuis ChatGPT

Accédez à Plugins ChatGPT, sélectionnez le bouton plus pour créer une application en mode développeur, puis choisissez Tunnel sous Connexion. Sélectionnez un tunnel disponible dans la liste affichée par ChatGPT, ou collez un tunnel_id valide si vous en avez déjà un.

Si le tunnel n’apparaît pas dans ChatGPT, vérifiez qu’il est associé à l’espace de travail ChatGPT cible, et pas seulement à une organisation de la plateforme, et que la personne qui crée l’application dispose des autorisations Lecture + Utilisation pour les tunnels.

Connectez-vous depuis l’API Responses

Passez l’identifiant du tunnel dans tunnel_id, dans la définition de l’outil MCP. Ne passez pas le point de terminaison du tunnel hébergé par OpenAI dans server_url ; utilisez server_url uniquement pour un serveur MCP auquel l’API Responses peut accéder directement.

Utilisez le Tunnel MCP sécurisé avec l’API Responses
curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-6-astra",
    "input": "Use the private MCP server to answer my request.",
    "tools": [
      {
        "type": "mcp",
        "server_label": "private_mcp",
        "tunnel_id": "tunnel_0123456789abcdef0123456789abcdef"
      }
    ]
  }'

Sécurité et réseau

Le serveur MCP privé reste dans l’environnement contrôlé par le client. tunnel-client accède à OpenAI via des connexions HTTPS sortantes à l’aide de la clé API d’exécution et, si nécessaire, de l’option mTLS du plan de contrôle.

  • L’adresse du serveur MCP reste privée et n’est utilisée que depuis l’environnement dans lequel tunnel-client s’exécute.
  • tunnel-client s’authentifie auprès du plan de contrôle du tunnel OpenAI ; les produits OpenAI compatibles utilisent le point de terminaison du tunnel hébergé par OpenAI.
  • L’accès au tunnel respecte le contexte existant de l’organisation et de l’espace de travail, sans ajouter de voie d’accès entrante publique distincte.
  • tunnel-client prend en charge les exigences réseau des entreprises, notamment les proxys sortants, les ensembles personnalisés de certificats d’autorités de certification, les certificats clients du plan de contrôle et mTLS côté MCP.

Périmètre de la journalisation

Le Tunnel MCP sécurisé sépare le transport par tunnel de la journalisation du produit au niveau de l’application :

  • Le transport par tunnel ne génère pas d’événements d’application dans la plateforme de conformité ChatGPT pour l’authentification du plan de contrôle du tunnel, le trafic de long polling et de réponse, ni les requêtes de transport individuelles du tunnel.
  • Les modifications des métadonnées du tunnel sont accessibles dans les journaux d’audit de la Plateforme API sous les noms tunnel.created, tunnel.updated et tunnel.deleted.
  • Lorsque ChatGPT accède à une application personnalisée via le Tunnel MCP sécurisé, le tunnel assure uniquement le transport. La journalisation habituelle de conformité au niveau de l’application reste en vigueur pour les échanges avec celle-ci, notamment les journaux d’appels de l’application et ceux du cycle de vie de son authentification, comme APP_AUTH_LOG lors de l’association ou de la dissociation de l’application.

Avancé : appels HTTP sur liste d’autorisation

Le Tunnel MCP sécurisé peut également prendre en charge des appels HTTP strictement délimités vers le réseau d’un client, depuis des workflows d’agents ou d’API compatibles. tunnel-client intègre un serveur MCP, Harpoon, qui expose les cibles HTTP configurées par libellé et permet aux appelants de les invoquer via le tunnel, avec des limites définies pour les requêtes et les réponses.

Utilisez cette fonctionnalité pour accéder à un petit ensemble de points de terminaison REST privés sans les exposer publiquement. Harpoon n’est pas un proxy généraliste : les appelants ne peuvent pas choisir des hôtes arbitraires, et les requêtes sont limitées aux cibles et aux méthodes configurées par le client.

Dépannage

  • « Accès aux tunnels requis » dans les paramètres des tunnels de la plateforme : Les autorisations des tunnels s’appliquent à l’organisation, pas au projet. Sélectionnez l’organisation de la plateforme concernée, puis demandez à un propriétaire de l’organisation ou à un administrateur RBAC de vous attribuer un rôle ou de vous ajouter à un groupe disposant de l’autorisation Lecture pour consulter les tunnels, ou des autorisations Lecture + Gestion pour les créer, les modifier ou les supprimer. Si aucun rôle correspondant n’existe, cette personne peut en créer un, l’attribuer à un groupe et vous ajouter à ce groupe. Vous avez également besoin de l’autorisation Utilisation pour exécuter tunnel-client ou sélectionner un tunnel dans les paramètres du connecteur. La propagation d’une nouvelle attribution de rôle peut prendre jusqu’à 30 minutes.
  • Tunnel non visible dans ChatGPT : Vérifiez que le tunnel est associé à l’espace de travail ChatGPT cible, et pas seulement à une organisation de la plateforme ; vérifiez ensuite que l’opérateur du connecteur dispose de l’autorisation Utilisation pour les tunnels. Si l’espace de travail ne peut pas être associé automatiquement pour un compte d’entreprise, contactez l’équipe OpenAI chargée de votre compte pour demander une association manuelle dérogatoire, après examen.
  • Échec de la découverte du connecteur ou des appels aux outils : Vérifiez que tunnel-client run ... est toujours en cours d’exécution, puis relancez tunnel-client doctor --profile <name> --explain.
  • Vous pouvez consulter un tunnel, mais pas le modifier : L’opérateur dispose probablement de l’autorisation Lecture pour les tunnels, mais pas de l’autorisation Gestion.
  • tunnel-client expose /healthz, /readyz, /metrics et une interface d’administration locale à l’adresse /ui.
  • Par défaut, l’interface d’administration est accessible uniquement via l’interface de bouclage. Ne la rendez accessible à distance que si vous avez expressément besoin d’y accéder depuis un réseau d’exploitation.
  • Utilisez ces interfaces pour vérifier que le client fonctionne correctement, est prêt et effectue les interrogations périodiques avant de lancer des tests depuis ChatGPT, Codex ou un workflow d’API.
  • Si le client n’est pas connecté, les requêtes via le tunnel échouent jusqu’à ce que tunnel-client se reconnecte.
  • La journalisation HTTP brute est désactivée par défaut, et les données sensibles sont masquées dans les exports destinés à l’assistance.

OAuth

  • La découverte OAuth peut passer par le tunnel, ce qui permet au serveur MCP lui-même de rester privé.
  • Le tunnel préserve les métadonnées du serveur d’autorisation en amont nécessaires aux flux OAuth qui passent par le navigateur.
  • Le serveur d’autorisation lui-même n’est pas automatiquement accessible via le tunnel. S’il est inaccessible depuis l’Internet public et depuis l’hôte de tunnel-client, le flux OAuth peut tout de même échouer, même si le serveur MCP est accessible.

Où effectuer la configuration

  • Gérez les points de terminaison des tunnels MCP hébergés par OpenAI dans les paramètres des tunnels de la plateforme.
  • Utilisez un tunnel lors de la création d’une application en mode développeur dans ChatGPT Plugins.
  • Pour les workflows utilisant Codex ou une API, utilisez la cible MCP accessible par tunnel que propose l’interface du produit compatible.

Étapes suivantes

Capture d’écran des paramètres des tunnels d’OpenAI Platform, sans données sensibles.

Créez et gérez les points de terminaison des tunnels MCP hébergés par OpenAI depuis les paramètres des tunnels de la plateforme.

Capture d’écran de la création d’une application ChatGPT avec l’option Tunnel sélectionnée, sans données sensibles.

Sélectionnez Tunnel pour connecter une application ChatGPT en mode développeur à un serveur MCP privé.