Utiliser Composer via Secure MCP Tunnel et ChatGPT

ChatGPT se connecte à des serveurs MCP distants. Lorsque le point de terminaison Composer doit rester privé, OpenAI Secure MCP Tunnel fournit un chemin sortant uniquement, sans ouverture de ports de pare-feu entrants ni publication de l'URL du serveur privé.

Le tunnel est facultatif. Composer et WordPress MCP Adapter prennent aussi en charge les clients MCP compatibles directs.

La vue d'ensemble d'Agent Composer explique le workflow complet, de l'agence au brouillon puis à la production. Le tunnel modifie seulement la manière dont un client authentifié atteint Composer ; il ne modifie ni qui conçoit le site, ni ce que le contrat actif autorise, ni la manière dont un brouillon est revu et publié.

Le WordPress privé peut rester privé​

Pour un environnement WordPress local ou protégé par pare-feu, le tunnel établit une connexion sortante vers l'intégration d'agent prise en charge. Aucun point de terminaison WordPress ou MCP entrant n'a besoin d'être ouvert uniquement pour l'agent.

La sécurité du transport et l’autorisation restent distinctes. Une connexion réussie n’accorde pas un accès illimité : Composer valide l’access token Cognito, le groupe mappé, le plafond du client OAuth, le Config Set, les règles Blueprint, la propriété, la validation et l’audit dans WordPress.

Architecture et frontières de confiance​

ChatGPT or another supported OpenAI product
|
OpenAI-hosted tunnel endpoint
|
outbound HTTPS polling
|
tunnel-client inside your network
|
private Composer MCP endpoint
|
Composer Cognito authentication + contract authorization

tunnel-client s’authentifie auprès du plan de contrôle OpenAI et relaie l’échange MCP HTTP. Composer authentifie séparément l’utilisateur externe depuis le bearer token puis applique groupe, client, scopes, contrat, propriété, validation et approbation humaine.

Prérequis​

Suivez d'abord Configuration MCP directe et vérifiez le serveur Composer depuis l'intérieur du réseau privé.

Vous avez aussi besoin de :

  • un tunnel créé dans les paramètres de tunnel de la plateforme OpenAI ;
  • des droits Tunnels Read + Manage pour le créer ou le modifier ;
  • des droits Tunnels Read + Use pour l'exécuter ou le sélectionner ;
  • une clé d'API d'exécution stockée uniquement sur l'hôte du tunnel ;
  • un accès HTTPS sortant vers api.openai.com:443 ;
  • l'accès au mode développeur de ChatGPT sous le plan et la politique d'espace de travail actuels.

Les autorisations de tunnel de la plateforme et les autorisations d'espace de travail ChatGPT sont distinctes. Associez le tunnel à chaque organisation Platform et espace de travail ChatGPT qui doit être autorisé à le découvrir.

Installer et configurer tunnel-client​

Téléchargez le tunnel-client actuel depuis les paramètres de tunnel de la plateforme ou depuis le dépôt officiel des versions OpenAI. Suivez le lien vers la dernière version plutôt que de figer un numéro de binaire dans un runbook opérationnel.

L’accès OAuth protégé de Composer exige un profil tunnel HTTP. La cible peut être publique, privée ou joignable uniquement depuis l’hôte du tunnel, mais doit pointer vers l’endpoint MCP HTTP dédié de Composer.

export CONTROL_PLANE_API_KEY="<runtime-api-key>"

tunnel-client init \
--sample sample_mcp_with_dcr \
--profile <connector-profile> \
--tunnel-id <tunnel-id> \
--mcp-server-url "https://<wordpress-host>/wp-json/mcp/smartcloud-agent-composer"

tunnel-client doctor --profile <connector-profile> --explain
tunnel-client run --profile <connector-profile>

Utilisez sample_mcp_with_dcr uniquement lorsque Composer dispose d’un fournisseur d’identité résolu et publie les métadonnées OAuth de ressource protégée. Si l’endpoint reste volontairement en mode Open sans fournisseur d’identité, utilisez plutôt sample_mcp_remote_no_auth. Un endpoint Open renvoie 404 pour les candidats de métadonnées OAuth, ce qui permet au profil HTTP sans authentification de devenir prêt. Régénérez le profil avec sample_mcp_with_dcr lorsque l’accès OAuth protégé est activé ultérieurement.

N’exécutez le processus comme service supervisé qu’après un état sain de doctor. Dans l’interface locale, vérifiez transport_kind: http-streamable et les métadonnées OAuth annoncées. Un profil STDIO mcp.command ne transporte ni le défi HTTP WWW-Authenticate ni le bearer token externe ; réservez-le au développement local ou au mode Open compatible.

Avant d’analyser les outils dans ChatGPT, inspectez le processus de tunnel en cours ou son interface /ui locale et confirmez qu'il cible smartcloud-agent-composer. Un contrôle d’état réussi prouve que le démon fonctionne ; il ne prouve pas que le profil a sélectionné le serveur MCP WordPress voulu. Les outils découverts doivent utiliser le préfixe smartcloud-agent-composer-* et inclure les opérations de Blueprint, de contexte de conception, de validation, de brouillon et d’aperçu. Pour les flux de travail de contenu structuré, confirmez aussi que le catalogue contient les capacités canoniques smartcloud-agent-composer/get-content-field-contract, smartcloud-agent-composer/search-relation-targets, smartcloud-agent-composer/update-content-fields et smartcloud-agent-composer/inspect-content-fields. smartcloud-agent-composer/list-content-drafts peut aussi être présent, mais son rôle est la découverte de contenu modifiable ou adoptable, pas la résolution de cibles de relation. Pour un workflow activé par taxonomie, confirmez aussi les outils canoniques smartcloud-agent-composer/get-taxonomy-contract, smartcloud-agent-composer/search-taxonomy-terms, smartcloud-agent-composer/create-taxonomy-term, smartcloud-agent-composer/assign-taxonomy-terms et smartcloud-agent-composer/inspect-taxonomy-terms. La création n'est pas un recours de secours pour une correspondance incertaine : le client doit d'abord rechercher et ne demander une confirmation explicite que lorsqu'un nouveau terme de navigation publique est justifié.

Créer l'application / le plugin MCP personnalisé ChatGPT​

L'interface OpenAI et la disponibilité des plans peuvent changer ; suivez le guide actuel du mode développeur et le guide de connexion des plugins.

Le flux actuel est le suivant :

  1. Activez le mode développeur dans l'emplacement autorisé par la politique d'espace de travail ChatGPT.
  2. Ouvrez la page ChatGPT Plugins/Apps et créez une application en mode développeur.
  3. Saisissez un nom et une description clairs, par exemple Agent Composer et Governed WordPress Gutenberg draft creation and preview.
  4. Choisissez Tunnel comme type de connexion.
  5. Sélectionnez le tunnel associé ou saisissez son <tunnel-id>.
  6. Scannez les outils et terminez l'authentification si demandé.
  7. Examinez chaque outil découvert et son annotation write/modify avant de créer l'application.

La prise en charge d'écriture MCP personnalisée et la disponibilité du mode développeur dépendent du plan ChatGPT et de la politique d'espace de travail. Ne décrivez pas la connexion comme une intégration vérifiée par OpenAI tant qu'elle n'a pas terminé l'examen OpenAI applicable.

Tester en toute sécurité​

Commencez une nouvelle discussion, activez uniquement l'application Composer et utilisez une invite bornée :

Load the active Composer design context, then the blueprint for <page-type> and
approved patterns, validate a minimal plan, create one agent-owned
WordPress draft, and return its preview. Do not publish, delete normal content,
upload media, or change plugins, themes, users, or configuration.

Vérifiez :

  • que ChatGPT sélectionne les outils de Blueprint, de contexte de conception, de composition, de validation, de brouillon et d’aperçu dans l'ordre attendu ;
  • que WordPress contient un brouillon plutôt qu'un élément publié ;
  • que le rapport de validation de l'aperçu est propre ;
  • que le journal d'audit Composer enregistre l'acteur authentifié et le résultat ;
  • que les demandes de publication ou de suppression non prises en charge ne produisent aucun outil Composer exécutable.

Dépannage​

  • Tunnel absent dans ChatGPT : confirmez l'association à l'espace de travail et l'autorisation Tunnels Read + Use.
  • ChatGPT indique que le serveur n’implémente pas OAuth : contrôlez /api/status et /api/oauth dans l’interface locale. Remplacez STDIO ou metadata_source: not_advertised par un profil HTTP/DCR vers /wp-json/mcp/smartcloud-agent-composer, puis redémarrez le service du site.
  • Le scan des outils échoue : laissez tunnel-client run actif, inspectez son /ui local et exécutez doctor --explain.
  • Le transport fonctionne mais WordPress rejette les appels : vérifiez issuer Cognito, allowlist App Client, groupe exact et scopes du token dans Composer ; ne contournez pas le Site Contract et n’accordez pas l’accès administrateur.
  • Anciens outils, outils manquants ou outils non liés : vérifiez d'abord que le profil du tunnel lance --server=smartcloud-agent-composer. Après une mise à niveau de Composer, redémarrez le runtime PHP concerné, le service MCP/tunnel spécifique au site, et le processus de tunnel supervisé. Actualisez les actions de l'application, examinez le diff de définition des outils, confirmez les abilities canoniques attendues et commencez une nouvelle conversation. Si le plan ChatGPT actuel ne permet pas de mettre à jour une application publiée, recréez-la et republiez-la.
  • Les appels expirent : confirmez l'accès sortant au plan de contrôle OpenAI et l'atteignabilité locale du <mcp-endpoint> depuis l'hôte du tunnel.
  • La validation Composer échoue : considérez cela comme une inadéquation de contrat ou de thème actif, pas comme un échec du tunnel.

Seuls des serveurs MCP de confiance doivent être connectés. L'injection d'invite et des permissions d'outil trop larges restent des risques au niveau de l'application même lorsque le chemin réseau est privé.