Volver al blog
BananaBanana Teamtutorialmcpvideo

Codex MCP: Imágenes y video con un solo config.toml

Conecta Codex CLI, la extensión de IDE y ChatGPT a un servidor MCP: config.toml con bearer_token_env_var, trucos y un video de Veo por $0.70.

Codex MCP: Imágenes y video con un solo config.toml

Un servidor MCP para Codex es una caja de herramientas externa que el agente de programación de OpenAI puede invocar desde sus tres interfaces a la vez: la CLI, la extensión de IDE y la pestaña de Codex en la aplicación de escritorio de ChatGPT. Con un solo bloque TOML, un agente que normalmente solo edita código adquiere habilidades que sus modelos no traen de fábrica, incluyendo la generación de imágenes y videos. Codex refactoriza y ejecuta pruebas todo el día, pero ningún modelo detrás de él puede entregarte un archivo MP4. Agrega un servidor de generación y «crear un clip promocional para las notas de lanzamiento» se convierte en una instrucción de terminal que termina con un archivo real.

Aquí tienes la configuración completa, por si solo venías a por eso. Crea una clave de API en tu perfil de BananaBanana y luego agrega esto a ~/.codex/config.toml:

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

Exporta BB_API_KEY=bb_live_TU_CLAVE en tu entorno y reinicia Codex. Eso es todo: sin procesos de servidor local, sin proyectos de Google Cloud ni suscripciones. Las imágenes se facturan desde $0.03 con saldo prepagado, y los videos desde $0.10. El video de demostración que verás más abajo se generó a través de este endpoint exacto usando una clave activa mientras escribía este texto. Al final del artículo se detalla la factura completa de $1.03 por el contenido multimedia.

Por qué un solo archivo de configuración lo es todo aquí

La mayoría de los clientes MCP te obligan a configurar cada interfaz por separado. Con Codex no es así, y esa es la mejor parte. La documentación oficial de Codex MCP lo resume en una sola frase: «La aplicación de escritorio de ChatGPT, Codex CLI y la extensión de IDE comparten esta configuración». Pega el bloque TOML una sola vez y las mismas siete herramientas de generación te acompañarán desde una sesión de terminal hasta VS Code y la pestaña de Codex en la aplicación de escritorio.

Ilustración editorial de una ventana de terminal, un editor de código y una aplicación de chat conectados por hilos a una sola llave sobre un pedestal, una metáfora de una única configuración de Codex que sirve a tres aplicaciones

Eso cambia por completo el propósito del servidor. En Cursor o VS Code, una herramienta de imagen sirve principalmente para el repositorio que tienes abierto. Con Codex, la propia terminal se convierte en una consola multimedia: puedes pedir un renderizado de video desde un shell simple, sin editores de por medio, y revisar el resultado más tarde desde la aplicación de escritorio. Para alguien que vive en tmux y usa las aplicaciones con interfaz gráfica solo de vez en cuando, esa es la diferencia entre «un plugin que configuré en algún lado» y «un comando al que recurro constantemente».

La alternativa, como siempre, es ejecutar un servidor MCP local con tu propia clave de API de Google, lo que implica cuotas y facturación asociadas a tu propia cuenta en la nube. Funciona, claro. Pero también es un proceso que debes vigilar. El endpoint remoto ya se ejecuta de nuestro lado, en el mismo flujo que el generador web de BananaBanana, y tu única credencial es una clave revocable bb_live_.

¿Cómo conectar Codex a un servidor MCP?

Los detalles de configuración que se muestran a continuación se han verificado con la documentación oficial de Codex MCP al 11 de julio de 2026 (OpenAI la trasladó recientemente de developers.openai.com a learn.chatgpt.com, así que no te sorprendas por la redirección).

Primero, regístrate y ve a Profile → MCP API Keys. La clave se muestra una sola vez y se almacena de forma encriptada (con hash) en nuestro lado, así que cópiala de inmediato. Las cuentas nuevas comienzan con $0.20 de saldo, lo que cubre seis imágenes de prueba en el modelo más económico.

Segundo, agrega el bloque TOML del inicio de este artículo a ~/.codex/config.toml, creando el archivo si no existe. La tabla [mcp_servers.bananabanana] recibe una url para cualquier servidor HTTP compatible con streaming y bearer_token_env_var para la autenticación: Codex lee la variable de entorno indicada al iniciarse y envía su valor en la cabecera Authorization. La clave nunca se escribe en el archivo, lo que significa que el archivo se puede compartir de forma segura, incluso en repositorios de dotfiles. Nuestra página de servidores MCP mantiene este fragmento de código junto con una tabla de compatibilidad para cada cliente verificado:

Fragmento de código de config.toml de Codex en la página de documentación de MCP de BananaBanana que muestra los campos url y bearer_token_env_var

Tercero, exporta la variable y reinicia. En la CLI, codex mostrará las herramientas del servidor una vez conectado; pídele que ejecute call list_models on bananabanana y deberías obtener los precios actuales de siete herramientas, desde list_models hasta list_generations. La extensión de IDE y la aplicación de escritorio de ChatGPT usarán la misma configuración en su próximo inicio, sin pasos adicionales.

Una advertencia importante sobre la aplicación de escritorio en macOS: las aplicaciones con interfaz gráfica que abres desde el Dock no leen tu archivo .zshrc, por lo que un export que funciona en la terminal puede no existir para ChatGPT. Si las herramientas aparecen en la CLI pero la autenticación falla en la aplicación de escritorio, esta suele ser la causa. Ejecutar launchctl setenv BB_API_KEY bb_live_… lo soluciona, aunque se sienta como un parche temporal (porque realmente lo es).

¿Pueden los conectores propios de ChatGPT usar la misma clave?

Respuesta corta: todavía no, y vale la pena detallar por qué. ChatGPT tiene su propio sistema de conectores (Settings → Connectors, detrás de la opción de modo desarrollador en los planes de pago) que añade servidores MCP al chat general en lugar de a Codex. Esos conectores se autentican mediante flujos de OAuth. Nuestro endpoint actual solo admite claves de tipo Bearer; el soporte para OAuth 2.1 está en camino y, una vez que se lance, el chat estándar de ChatGPT también será un cliente compatible. Hasta entonces, la regla es clara: las interfaces de Codex (CLI, IDE, pestaña de Codex en la aplicación de escritorio) funcionan hoy mediante config.toml, y los conectores del chat regular no. La tabla de compatibilidad sigue el estado de esto para cada cliente, con fechas de actualización.

Caso de uso: un video promocional de producto sin abrir una sola aplicación

El escenario sobre el que se construyó este artículo: es el día del lanzamiento, tu registro de cambios (changelog) necesita un video promocional corto y prefieres no salir de la terminal. Le pides a Codex un video con estilo de producto, este redacta un prompt cinematográfico y llama a generate_video. La herramienta nunca cobra en la primera llamada; devuelve una cotización y el agente repite la llamada aceptando el monto exacto. Este es el registro real de mi sesión:

→ 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/…"}]}

Dos minutos y quince segundos desde la confirmación hasta el archivo final en 720p. Aquí tienes ese clip exacto, generado por Veo 3.1 Fast, en el primer intento y sin repetir:

La estructura del prompt sigue el patrón de nuestra guía de prompts de Veo 3.1: sujeto, acción, iluminación, movimiento de cámara, comportamiento de la lente y estilo. Luego, Codex descarga el archivo desde la URL firmada (válida por 24 horas; un nuevo llamado a get_result la renueva) en la carpeta que indiques e incluso puede escribir el marcado <video> para tu página de notas de lanzamiento.

Una advertencia honesta sobre el resultado: con $0.70 obtienes la versión sin sonido. El audio nativo para el mismo clip cuesta $1.00, y Omni Flash con sonido factura $0.10 por segundo: $0.80 para un clip de la misma duración. Para un loop silenciado con reproducción automática en una landing page, la versión sin sonido es exactamente lo que necesitas; si lo vas a publicar en redes sociales, probablemente valga la pena pagar los treinta centavos adicionales.

Las imágenes funcionan de la misma manera, excepto que no requieren el paso de confirmación, ya que las imágenes individuales son lo suficientemente baratas como para ejecutarse directamente: generate_image con un prompt devuelve un ID de trabajo, y get_result te entrega el archivo junto con una pequeña vista previa integrada que Codex puede analizar.

Particularidades de Codex que debes conocer antes de confiar en él

Recopiladas mientras probaba la configuración anterior, presentadas más o menos en el orden en que te las irás encontrando.

Ilustración editorial de un pequeño robot con una lupa leyendo un pergamino largo de texto de configuración con dos diminutas banderas de advertencia clavadas en él, una metáfora de las particularidades de configuración de Codex

1. La CLI no escribirá esta configuración por ti. Existe codex mcp add, pero según la documentación oficial no tiene opción de token Bearer para servidores HTTP; el comando está pensado para servidores stdio locales y logins de OAuth (codex mcp login). Para un servidor remoto con autenticación por clave, tendrás que editar ~/.codex/config.toml a mano. Son treinta segundos de trabajo, pero si esperabas la comodidad de una sola línea como claude mcp add --header, aquí es donde Codex funciona diferente.

2. Es TOML y la tabla es mcp_servers. En minúsculas con guion bajo, corchetes y sin JSON. Las configuraciones copiadas de la documentación de Cursor o Claude (mcpServers, llaves) no se procesarán correctamente, y los errores de TOML en este archivo suelen pasar desapercibidos en lugar de mostrar advertencias claras. Si el servidor no aparece, ejecuta codex en la terminal y revisa la salida de inicio antes de buscar otra causa.

3. Las credenciales tienen un campo correcto y otro tentador que es incorrecto. bearer_token_env_var mantiene la clave fuera del archivo. La alternativa, la sección http_headers, toma valores estáticos, lo que significa que tu clave real bb_live_ quedará expuesta en texto plano en un archivo que a las herramientas de sincronización de dotfiles les encanta publicar. También existe env_http_headers para cabeceras personalizadas desde variables de entorno. Mi regla: usar siempre bearer_token_env_var y nunca http_headers para nada secreto.

4. El tiempo de espera predeterminado es de 60 segundos, lo cual funciona bien, pero solo por cómo se realizan las consultas. Codex asigna a cada llamada un límite predeterminado de tool_timeout_sec = 60. Una tarea de video tarda de uno a diez minutos, lo que parecería un problema, pero generate_video devuelve un ID de trabajo al instante y get_result realiza consultas de tipo long-polling de un máximo de 30 segundos por llamada. Así, cada consulta individual se mantiene cómodamente bajo el límite; el agente simplemente consulta unas cuantas veces. No intentes «solucionar» esto subiendo el límite a 600; no hace falta y, si el servidor se cuelga de verdad, bloquearia al agente durante diez minutos.

5. El comportamiento de aprobación se puede configurar por servidor, y el dinero merece la opción prompt. El campo default_tools_approval_mode admite los valores auto, prompt, writes y approve, de acuerdo con los documentos. Para un servidor donde varias herramientas consumen dinero real por llamada, recomiendo mantener activa la solicitud de confirmación y aprobar cada llamada de forma individual; las herramientas gratuitas (list_models, get_account, get_result) son las que vale la pena autorizar si tu configuración permite tomar decisiones por herramienta. De todos modos, el video cuenta con un segundo bloqueo en nuestro lado: no se cobra nada por encima de la cotización sin una confirmación explícita con confirm_cost.

¿Cuánto costó el material multimedia de demostración de este artículo?

Precios estándar por generación, los mismos valores que list_models reporta al agente, sin descuentos de ningún tipo:

RecursoModeloPrecio
Demostración de video promo, vía MCP con clave activaVeo 3.1 Fast, 720p, 8 s, sin sonido$0.70
Portada + 2 ilustraciones editorialesNano Banana Pro, 1K$0.33
Captura de pantalla de la documentaciónnavegador, no es una generación$0.00
Total$1.03

El video salió al primer intento, algo con lo que no convendría contar siempre; las tomas de productos son bastante agradecidas, pero cualquier cosa que incluya manos o texto legible no lo es. Presupuesta un reintento para esos casos.

Si ya ejecutas este servidor en otro cliente, el bloque TOML anterior es la única novedad: misma clave, mismo saldo y mismo historial de generación en todos lados. Si empiezas desde cero, la guía de Claude Code cubre cuatro casos de uso adicionales que se aplican a Codex casi palabra por palabra. Crea una clave y pídele a Codex tu primer renderizado.

FAQ

¿Soporta Codex servidores MCP remotos con autenticación Bearer?

Sí, de forma nativa. Un servidor remoto se define con una tabla [mcp_servers.<nombre>] en ~/.codex/config.toml usando un campo url, y bearer_token_env_var indica la variable de entorno cuyo valor Codex enviará en la cabecera Authorization. Verificado con la documentación oficial de Codex MCP al 11 de julio de 2026. OAuth también es compatible (es el modo de autenticación por defecto para los servidores que lo ofrecen), pero una configuración con clave estática no necesita más que esas dos líneas.

¿Realmente se comparte la configuración de MCP entre Codex CLI, la extensión de IDE y ChatGPT de escritorio?

Sí. La documentación de Codex indica que la aplicación de escritorio de ChatGPT, Codex CLI y la extensión de IDE comparten la configuración de config.toml. En la práctica, lo único que no se hereda automáticamente es la variable de entorno: lo que exportes en tu shell será visible para la CLI, pero una aplicación de escritorio abierta desde el Dock necesitará que la variable esté configurada a nivel del sistema operativo (launchctl setenv en macOS) o la autenticación fallará usando la misma configuración.

¿Puedo añadir el servidor usando codex mcp add en lugar de editar el archivo?

No para este tipo de servidor. Los documentos no ofrecen ningún parámetro para tokens Bearer en codex mcp add para servidores HTTP, por lo que un endpoint remoto autenticado con clave requiere editar ~/.codex/config.toml de forma manual. Lo bueno de la edición manual es que el resultado es explícito y fácil de incluir en sistemas de control de versiones; el bloque consta de tres líneas y la clave se mantiene en el entorno en lugar de escribirse en el archivo.

¿Por qué mi clave bb_live_ no funciona en los ajustes de conectores de ChatGPT?

Porque se trata de una interfaz de integración diferente. Los conectores en el chat de ChatGPT (tanto web como de escritorio, detrás de la opción de modo desarrollador) autentican los servidores MCP a través de OAuth, no pegando claves de API, por lo que un endpoint que solo admite Bearer no puede completar ese flujo actualmente. Las interfaces de Codex leen config.toml en su lugar y funcionan perfectamente con la clave. Una vez que lancemos nuestro soporte para OAuth 2.1, los conectores del chat regular también serán una opción compatible; la tabla de clientes detalla el estado actual.

¿Puede Codex generar video y cuánto cuesta?

Sí, con una confirmación de costo obligatoria. generate_video siempre devuelve primero una cotización en USD y no cobra nada; el agente debe repetir la llamada incluyendo confirm_cost con el monto cotizado para iniciar el renderizado. Los precios van desde $0.10 por un clip de 4 segundos sin sonido en Veo 3.1 Lite a 720p, pasando por $0.70 por el demo de 8 segundos en Veo 3.1 Fast de este artículo, hasta $4.40 por un renderizado premium en 4K con Veo 3.1 y audio; Omni Flash con sonido cuesta $0.10 por segundo, es decir, de $0.30 a $1.00 por clip. Las generaciones fallidas se reembolsan de manera automática.

tutorialmcpvideo