Retour au blog
BananaBanana Teamtutorialmcpvideo

Codex MCP : Images et vidéo avec un seul config.toml

Connectez Codex CLI, l’extension IDE et ChatGPT à un serveur MCP : config.toml avec bearer_token_env_var, astuces et vidéo Veo à $0.70.

Codex MCP : Images et vidéo avec un seul config.toml

Un serveur MCP pour Codex est une boîte à outils externe que l'agent de programmation d'OpenAI peut appeler depuis ses trois interfaces à la fois : le CLI, l'extension IDE et l'onglet Codex de l'application de bureau ChatGPT. Un seul bloc TOML suffit pour qu'un agent, qui se contente normalement de modifier du code, acquière des capacités inédites, y compris la génération d'images et de vidéos. Codex refactorise et exécute des tests toute la journée, mais aucun modèle sous-jacent ne peut vous livrer un fichier MP4. Ajoutez un serveur de génération et l'instruction « créer un clip promo pour les notes de mise à jour » devient une commande de terminal qui produit un vrai fichier.

Voici la configuration complète, si c'est tout ce que vous êtes venu chercher. Créez une clé API dans votre profil BananaBanana, puis ajoutez ceci à ~/.codex/config.toml :

[mcp_servers.bananabanana]
url = "https://bananabanana.pro/api/mcp"
bearer_token_env_var = "BB_API_KEY"

Exportez BB_API_KEY=bb_live_VOTRE_CLE dans votre environnement et redémarrez Codex. C'est tout : pas de processus de serveur local, pas de projet Google Cloud, pas d'abonnement. Les images sont facturées à partir de $0.03 sur un solde prépayé, et les vidéos à partir de $0.10. La vidéo de démonstration ci-dessous a été générée via ce point de terminaison exact avec une clé active pendant que j'écrivais ce texte, et le coût total des médias de cet article, qui s'élève à $1.03, est détaillé à la fin.

Pourquoi un seul fichier de configuration fait toute la différence

La plupart des clients MCP vous obligent à configurer chaque interface séparément. Codex fait exception, et c'est vraiment appréciable. La documentation officielle de Codex MCP le résume en une phrase : « L'application de bureau ChatGPT, Codex CLI et l'extension IDE partagent cette configuration. » Copiez le bloc TOML une fois et les sept mêmes outils de génération vous suivent d'une session de terminal à VS Code, jusqu'à l'onglet Codex de l'application de bureau.

Illustration éditoriale d'une fenêtre de terminal, d'un éditeur de code et d'une application de chat connectés par des fils à une clé unique sur un piédestal, métaphore d'une configuration Codex unique desservant trois applications

Cela change la donne quant à l'utilité du serveur. Dans Cursor ou VS Code, un outil d'image sert principalement le dépôt actuellement ouvert. Avec Codex, le terminal utilise lui-même devient une console multimédia : vous pouvez demander un rendu vidéo depuis un simple shell, sans aucun éditeur ouvert, et suivre l'avancement plus tard depuis l'application de bureau. Pour quelqu'un qui vit dans tmux et considère les applications GUI comme des invités occasionnels, c'est toute la différence entre « un plugin configuré quelque part » et « une commande que j'utilise réellement au quotidien ».

L'alternative, comme d'habitude, consiste à exécuter un serveur MCP local avec votre propre clé API Google, vos propres quotas et une facturation liée à votre compte cloud. Ça fonctionne. Mais c'est aussi un processus qu'il faut surveiller. Le point de terminaison distant s'exécute déjà de notre côté, sur le même pipeline que le générateur Web de BananaBanana, et votre seul identifiant est une clé révocable bb_live_.

Comment connecter Codex à un serveur MCP ?

Les détails de configuration ci-dessous sont vérifiés par rapport à la documentation officielle de Codex MCP en date du 11 juillet 2026 (OpenAI l'a récemment déplacée de developers.openai.com vers learn.chatgpt.com, ne soyez donc pas surpris par la redirection).

Premièrement, inscrivez-vous et ouvrez Profile → MCP API Keys. La clé n'est affichée qu'une seule fois et est stockée sous forme de hash de notre côté, copiez-la donc immédiatement. Les nouveaux comptes commencent avec un solde de $0.20, ce qui couvre six images de test sur le modèle le moins cher.

Deuxièmement, ajoutez le bloc TOML du début de cet article à ~/.codex/config.toml, en créant le fichier s'il n'existe pas. La table [mcp_servers.bananabanana] prend un paramètre url pour tout serveur HTTP compatible streaming, et bearer_token_env_var pour l'authentification : Codex lit la variable d'environnement nommée au démarrage et envoie sa valeur dans l'en-tête Authorization. La clé ne figure jamais dans le fichier, ce qui permet de le partager sereinement, y compris dans des dépôts de dotfiles. Notre page sur les serveurs MCP contient ce snippet ainsi qu'un tableau de compatibilité pour chaque client vérifié :

Snippet de config.toml Codex sur la page de documentation MCP de BananaBanana montrant les champs url et bearer_token_env_var

Troisièmement, exportez la variable et redémarrez. Dans le CLI, codex listera les outils du serveur une fois la connexion établie ; demandez-lui d'exécuter call list_models on bananabanana et vous devriez obtenir les prix en temps réel de sept outils, de list_models à list_generations. L'extension IDE et l'application de bureau ChatGPT récupéreront la même configuration lors de leur prochain lancement, sans étape supplémentaire.

Une mise en garde concernant l'application de bureau sur macOS : une application graphique lancée depuis le Dock ne lit pas votre .zshrc. Par conséquent, un export opérationnel dans le terminal peut très bien être invisible pour ChatGPT. Si les outils apparaissent dans le CLI mais que l'authentification échoue dans l'application de bureau, c'est presque toujours la cause. Exécuter launchctl setenv BB_API_KEY bb_live_… résout le problème, au prix d'une sensation de bricolage — car c'en est un.

Les connecteurs natifs de ChatGPT peuvent-ils utiliser la même clé ?

Réponse courte : pas encore, et il convient d'être précis sur les raisons. ChatGPT dispose de son propre système de connecteurs (Settings → Connectors, derrière l'interrupteur du mode développeur sur les abonnements payants) qui ajoute des serveurs MCP au chat classique plutôt qu'à Codex. Ces connecteurs s'authentifient via des flux OAuth. Notre point de terminaison ne gère pour l'instant que les clés Bearer ; le support d'OAuth 2.1 est prévu, et une fois déployé, le chat classique de ChatGPT deviendra également un client compatible. D'ici là, la frontière est simple : les interfaces Codex (CLI, IDE, l'onglet Codex de l'application de bureau) fonctionnent aujourd'hui via config.toml, contrairement aux connecteurs côté chat. Le tableau de compatibilité suit cette évolution par client, avec les dates associées.

Cas d'usage : une vidéo promo produit sans ouvrir la moindre application

Le scénario qui a inspiré cet article : c'est le jour de la mise à jour, vos notes de version ont besoin d'un court clip promotionnel et vous préférez ne pas quitter votre terminal. Vous demandez à Codex une vidéo axée produit, il rédige un prompt cinématique et appelle generate_video. L'outil ne facture jamais au premier appel ; il renvoie un devis, et l'agent répète l'appel en acceptant le montant exact. Voici la trace réelle de ma session :

→ generate_video {"prompt": "Cinematic product promo shot: matte pearl-white
   wireless earbuds in an open charging case on a slowly rotating dark
   pedestal, dramatic rim lighting in violet and warm amber, soft haze,
   slow dolly-in from a slightly low angle, shallow depth of field,
   premium tech commercial style", "model": "veo-3.1-fast",
   "duration": 8, "resolution": "720p"}
← {"status": "confirmation_required", "quoted_cost_usd": 0.70,
   "message": "This video costs $0.70. Nothing has been charged."}
→ generate_video {..., "confirm_cost": 0.70}
← {"job_id": "cmrgrpxgf0002mk7fvfepg82j", "status": "processing",
   "cost_charged_usd": 0.70, "balance_remaining_usd": 1553.37}
→ get_result {"job_id": "cmrgrpxgf0002mk7fvfepg82j", "wait_seconds": 30}
← {"status": "completed", "files": [{"url": "https://…/api/files/…"}]}

Deux minutes et quinze secondes entre la confirmation et le fichier 720p finalisé. Voici ce clip exact, généré par Veo 3.1 Fast, du premier coup, sans aucune autre tentative :

La structure du prompt suit le modèle de notre guide de prompt Veo 3.1 : sujet, action, éclairage, mouvement de caméra, comportement de l'objectif, style. Codex récupère ensuite le fichier depuis l'URL signée (valable 24 heures ; un nouvel appel à get_result la régénère) dans le dossier de votre choix et peut même écrire le balisage <video> pour vos notes de mise à jour.

Une précision honnête sur les coûts : la version muette revient à $0.70. L'ajout d'une bande-son native sur ce même clip porte le tarif à $1.00, et l'option Omni Flash avec son est facturée $0.10 par seconde — soit $0.80 pour un clip de même durée. Pour une boucle d'arrière-plan muette en lecture automatique sur une page d'accueil, le format sans son est de toute façon idéal ; pour un partage sur les réseaux sociaux, l'investissement de trente centimes supplémentaires vaut généralement le coup.

Les images fonctionnent de la même manière, l'étape de confirmation en moins, car les images uniques sont assez bon marché pour être lancées directement : generate_image avec un prompt renvoie un identifiant de tâche, et get_result fournit le fichier ainsi qu'un petit aperçu intégré que Codex peut analyser.

Quelques particularités de Codex à connaître absolument

Ces notes ont été prises lors des tests de la configuration ci-dessus, à peu près dans l'ordre où vous risquez d'y être confronté.

Illustration éditoriale d'un petit robot équipé d'une loupe en train de lire un long parchemin de texte de configuration sur lequel sont plantés deux minuscules drapeaux d'avertissement, métaphore des particularités de configuration de Codex

1. Le CLI n'écrira pas cette configuration pour vous. La commande codex mcp add existe, mais d'après la documentation officielle, elle ne propose pas d'option pour les tokens Bearer sur les serveurs HTTP ; la commande cible les serveurs stdio locaux et les connexions OAuth (codex mcp login). Pour un serveur distant authentifié par clé, vous devez éditer ~/.codex/config.toml manuellement. Trente secondes de travail, mais si vous vous attendiez à une commande simple de type claude mcp add --header, c'est là que Codex diffère.

2. C'est du TOML, et la table s'appelle mcp_servers. En minuscules, séparé par un tiret bas, avec des crochets et sans JSON. Les configurations copiées de la documentation de Cursor ou Claude (mcpServers, accolades) ne seront pas lues, et les erreurs de TOML dans ce fichier ont tendance à échouer en silence. Si le serveur n'apparaît jamais, lancez codex depuis un terminal et examinez la sortie de démarrage avant de chercher d'autres causes.

3. Les secrets ont un bon champ et un autre très tentant mais risqué. Le paramètre bearer_token_env_var permet de ne pas écrire la clé dans le fichier. L'alternative, la table http_headers, prend des valeurs statiques, ce qui signifie qu'une clé bb_live_ se retrouverait en texte clair dans un fichier que les outils de synchronisation de dotfiles adorent publier. Il existe aussi env_http_headers pour des en-têtes personnalisés issus de variables d'environnement. Ma règle : toujours utiliser bearer_token_env_var, et ne jamais utiliser http_headers pour des informations secrètes.

4. Le délai d'expiration par défaut des outils est de 60 secondes, ce qui convient parfaitement, mais uniquement grâce au mécanisme de polling. Codex attribue par défaut à chaque appel d'outil un tool_timeout_sec = 60. Une tâche de rendu vidéo prend entre une et dix minutes, ce qui pourrait sembler problématique, sauf que generate_video renvoie un identifiant de tâche instantanément et get_result effectue un long-polling de 30 secondes maximum par appel. Chaque appel individuel reste ainsi bien en deçà de la limite ; l'agent effectue simplement plusieurs requêtes successives. Ne tentez pas de « résoudre » cela en augmentant le délai d'expiration à 600 : c'est inutile, et un serveur réellement bloqué paralyserait alors l'agent pendant dix minutes.

5. Le comportement d'approbation est paramétrable par serveur, et les transactions financières méritent l'option prompt. Le champ default_tools_approval_mode accepte les valeurs auto, prompt, writes et approve, selon la documentation. Pour un serveur où plusieurs outils coûtent de l'argent réel à chaque appel, je recommande de laisser l'approbation manuelle activée afin de valider chaque appel individuellement. Les outils gratuits (list_models, get_account, get_result) sont les seuls qu'il est pertinent d'autoriser automatiquement si votre configuration permet des choix par outil. De toute façon, la vidéo dispose d'une sécurité supplémentaire de notre côté : aucun montant supérieur au devis ne peut être facturé sans confirmation explicite via confirm_cost.

Combien ont coûté les médias de démonstration de cet article ?

Tarifs standards par génération, identiques à ceux que list_models indique à l'agent, sans aucune réduction :

ContenuModèlePrix
Démo vidéo promo, via MCP avec clé activeVeo 3.1 Fast, 720p, 8 s, muet$0.70
Couverture + 2 illustrations éditorialesNano Banana Pro, 1K$0.33
Capture d'écran de la documentationnavigateur, pas une génération$0.00
Total$1.03

La vidéo a été réussie dès la première tentative, ce sur quoi il ne faut pas compter à coup sûr ; les plans de type produit sont assez indulgents, ce qui n'est pas le cas pour tout ce qui implique des mains ou du texte lisible. Prévoyez un budget de rechange pour ces derniers.

Si vous utilisez déjà ce serveur dans un autre client, le bloc TOML ci-dessus est le seul élément nouveau : même clé, même solde, même historique de génération partout. Si vous partez de zéro, le guide de Claude Code présente quatre autres cas d'usage qui se transposent presque mot pour mot à Codex. Créez une clé et demandez à Codex votre premier rendu.

FAQ

Codex prend-il en charge les serveurs MCP distants avec authentification Bearer ?

Oui, nativement. Un serveur distant se déclare avec une table [mcp_servers.<nom>] dans ~/.codex/config.toml contenant un champ url, tandis que bearer_token_env_var désigne la variable d'environnement dont la valeur sera transmise par Codex dans l'en-tête Authorization. Vérifié avec la documentation officielle de Codex MCP le 11 juillet 2026. OAuth est également supporté (c'est le mode par défaut pour les serveurs qui le proposent), mais une configuration par clé statique n'exige rien d'autre que ces deux lignes.

La configuration MCP est-elle vraiment partagée entre Codex CLI, l'extension IDE et ChatGPT de bureau ?

Oui. La documentation de Codex indique explicitement que l'application de bureau ChatGPT, Codex CLI et l'extension IDE partagent le même fichier config.toml. En pratique, le seul élément qui ne se transmet pas automatiquement est la variable d'environnement : vos exports de shell sont visibles pour le CLI, mais une application de bureau lancée depuis le Dock aura besoin que la variable soit définie au niveau du système d'exploitation (launchctl setenv sur macOS) sous peine d'échec d'authentification avec une configuration pourtant identique.

Puis-je ajouter le serveur avec codex mcp add au lieu de modifier le fichier ?

Pas pour ce type de serveur. La documentation ne prévoit pas d'argument de type token Bearer pour la commande codex mcp add sur les serveurs HTTP. Un point de terminaison distant authentifié par clé implique donc de modifier ~/.codex/config.toml soi-même. L'avantage de cette modification manuelle est qu'elle reste explicite et facile à versionner ; le bloc ne compte que trois lignes, et la clé reste dans l'environnement plutôt que d'être écrite en clair.

Pourquoi ma clé bb_live_ ne fonctionne-t-elle pas dans les paramètres de connecteurs de ChatGPT ?

Parce qu'il s'agit d'une autre interface d'intégration. Les connecteurs de ChatGPT (web et de bureau, accessibles via l'option du mode développeur) authentifient les serveurs MCP par OAuth, et non par copier-coller de clés API. Un point de terminaison acceptant uniquement les clés Bearer ne peut donc pas finaliser ce flux aujourd'hui. Les interfaces Codex lisent en revanche config.toml et fonctionnent parfaitement avec la clé. Dès que notre support de l'OAuth 2.1 sera disponible, les connecteurs côté chat deviendront également compatibles ; le tableau de compatibilité indique l'état actuel en temps réel.

Codex peut-il générer de la vidéo et quel est le tarif ?

Oui, avec une confirmation de coût obligatoire. La commande generate_video renvoie systématiquement un devis en USD sans rien facturer ; l'agent doit renouveler l'appel en incluant le paramètre confirm_cost correspondant au montant indiqué pour lancer la génération. Les tarifs s'échelonnent de $0.10 pour un clip Veo 3.1 Lite de 4 secondes sans son en 720p, à $0.70 pour la démonstration de 8 secondes sous Veo 3.1 Fast de cet article, jusqu'à $4.40 pour un rendu haut de gamme en 4K avec Veo 3.1 et audio ; l'option Omni Flash avec son est facturée $0.10 par seconde ($0.30–$1.00 par clip). Les générations échouées sont automatiquement remboursées.

tutorialmcpvideo