Codex MCP: Imagens e vídeo com um único config.toml
Conecte o Codex CLI, a extensão de IDE e o ChatGPT a um servidor MCP: config.toml com bearer_token_env_var, dicas e vídeo do Veo por $0.70.

Um servidor MCP para o Codex é uma caixa de ferramentas externa que o agente de programação da OpenAI pode chamar de todas as suas três interfaces ao mesmo tempo: o CLI, o extensão de IDE e a aba do Codex no aplicativo de desktop do ChatGPT. Com apenas um bloco TOML, um agente que normalmente edita código ganha habilidades que seus modelos não trazen de fábrica, incluindo geração de imagens e vídeos. O Codex refatora e executa testes o dia todo, mas nenhum modelo por trás dele pode lhe entregar um MP4. Adicione um servidor de geração e a instrução «criar um clipe promocional para as notas de lançamento» torna-se uma instrução de terminal que resulta em um arquivo real.
Aqui está a configuração completa, caso você tenha vindo apenas por isso. Crie uma chave de API no seu perfil da BananaBanana e, em seguida, adicione isto ao seu ~/.codex/config.toml:
[mcp_servers.bananabanana]
url = "https://bananabanana.pro/api/mcp"
bearer_token_env_var = "BB_API_KEY"
Exporte BB_API_KEY=bb_live_SUA_CHAVE no seu ambiente e reinicie o Codex. É apenas isso: sem processo de servidor local, sem projeto no Google Cloud, sem assinatura. As imagens são cobradas a partir de $0.03 de um saldo pré-pago, e os vídeos a partir de $0.10. O vídeo de demonstração mais abaixo foi gerado através deste endpoint exato usando uma chave ativa enquanto eu escrevia este texto, e o custo total de mídia de $1.03 para este artigo está detalhado no final.
Por que um único arquivo de configuração é o ponto central aqui
A maioria de clientes MCP exige que você configure cada interface separadamente. O Codex não faz isso, e essa é a parte genuinamente excelente. A documentação oficial do Codex MCP resume isso em uma frase: «O aplicativo de desktop do ChatGPT, o Codex CLI e a extensão de IDE compartilham esta configuração.» Cole o bloco TOML uma vez e as mesmas sete ferramentas de geração acompanham você de uma sessão de terminal para o VS Code e para a aba do Codex no aplicativo de desktop.

Isso muda o propósito do servidor. No Cursor ou VS Code, uma ferramenta de imagem serve principalmente para o repositório que você tem aberto. Com o Codex, o próprio terminal se torna um console de mídia: você pode solicitar uma renderização de vídeo a partir de um shell simples, sem nenhum editor envolvido, e verificar o resultado mais tarde no aplicativo de desktop. Para quem vive no tmux e trata aplicativos com interface gráfica como visitantes ocasionais, essa é a diferença entre «um plugin que configurei em algum lugar» e «um comando que eu realmente utilizo».
A alternativa, como de costume, é rodar um servidor MCP local com sua própria chave de API do Google, cotas e faturamento vinculados à sua própria conta na nuvem. Funciona. Mas também é um processo que você precisa monitorar. O endpoint remoto já roda do nosso lado, no mesmo pipeline do gerador web da BananaBanana, e sua única credencial é uma chave revogável bb_live_.
Como conectar o Codex a um servidor MCP?
Os detalhes de configuração abaixo foram verificados com a documentação oficial do Codex MCP em 11 de julho de 2026 (a OpenAI mudou recentemente o endereço de developers.openai.com para learn.chatgpt.com, por isso não se surpreenda com o redirecionamento).
Primeiro, registre-se e abra Profile → MCP API Keys. A chave é exibida apenas uma vez e é armazenada com hash do nosso lado, portanto, copie-a imediatamente. Novas contas começam com $0.20 de saldo, o que cobre seis imagens de teste no modelo mais barato.
Segundo, adicione o bloco TOML do início deste artigo ao ~/.codex/config.toml, criando o arquivo se ele não existir. A tabela [mcp_servers.bananabanana] recebe uma url para qualquer servidor HTTP compatível com streaming e bearer_token_env_var para autenticação: o Codex lê a variável de ambiente indicada na inicialização e envia seu valor como o cabeçalho Authorization. A chave nunca é gravada no arquivo, o que significa que o arquivo continua seguro para ser compartilhado, inclusive em repositórios de dotfiles. Nossa página de servidores MCP mantém esse trecho de código junto com uma tabela de compatibilidade para cada cliente que verificamos:

Terceiro, exporte a variável e reinicie. No CLI, o codex listará as ferramentas do servidor assim que se conectar; peça para ele executar call list_models on bananabanana e você deverá receber de volta os preços em tempo real para sete ferramentas, de list_models a list_generations. A extensão de IDE e o aplicativo de desktop do ChatGPT usarão la mesma configuração no próximo lançamento, sem etapas adicionais.
Um aviso importante sobre o aplicativo de desktop no macOS: um aplicativo de interface gráfica aberto a partir do Dock não lê o seu .zshrc, portanto, um export que funciona no terminal pode não estar disponível para o ChatGPT. Se as ferramentas aparecem no CLI, mas a autenticação falha no aplicativo de desktop, essa é quase sempre a causa. Executar launchctl setenv BB_API_KEY bb_live_… resolve o problema, embora pareça uma gambiarra — porque realmente é uma.
Os conectores nativos do ChatGPT podem usar a mesma chave?
Resposta curta: ainda não, e vale a pena explicar detalhadamente o porquê. O ChatGPT tem seu próprio sistema de conectores (Settings → Connectors, atrás da opção de modo de desenvolvedor nos planos pagos) que adiciona servidores MCP ao chat comum, e não ao Codex. Esses conectores se autenticam por fluxos de OAuth. Nosso endpoint atual aceita apenas chaves Bearer; o suporte ao OAuth 2.1 está planejado e, assim que for lançado, o chat comum do ChatGPT também se tornará um cliente compatível. Até lá, a regra é simples: as interfaces do Codex (CLI, IDE, a aba Codex no aplicativo de desktop) funcionam hoje pelo config.toml, e os conectores do lado do chat não. A tabela de compatibilidade acompanha o progresso disso por cliente, com as respectivas datas.
Caso de uso: um vídeo promocional de produto sem abrir um único aplicativo
O cenário que motivou este artigo: dia de lançamento, seu changelog precisa de um clipe promocional curto e você prefere não sair do terminal. Você pede ao Codex um vídeo no estilo de produto, ele cria um prompt cinematográfico e chama generate_video. A ferramenta nunca cobra na primeira chamada; ela retorna um orçamento e o agente repete a chamada aceitando o valor exato. Este é o registro real da minha sessão:
→ 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/…"}]}
Dois minutos e quinze segundos do momento da confirmação até o arquivo 720p concluído. Aqui está o clipe exato, gerado pelo Veo 3.1 Fast, na primeira tentativa, sem repetições:
A estrutura do prompt segue o padrão do nosso guia de prompts do Veo 3.1: sujeito, ação, iluminação, movimento de câmera, comportamento da lente e estilo. O Codex então baixa o arquivo a partir da URL assinada (válida por 24 horas; uma nova chamada a get_result emite uma nova URL) para la pasta informada e pode até escrever a marcação <video> para a sua página de changelog.
Um aviso honesto sobre o resultado: com $0.70 você obtém a versão sem som. O áudio nativo para o mesmo clipe custa $1.00, e o Omni Flash com som cobra $0.10 por segundo — $0.80 para um clipe da mesma duração. Para um loop silencioso de reprodução automática em uma landing page, a versão sem som é exatamente o que você quer de qualquer forma; para uma publicação em redes sociais, você provavelmente pagará os trinta centavos adicionais.
As imagens funcionam da mesma forma, mas sem a etapa de confirmação, já que imagens avulsas são baratas o suficiente para rodar direto: generate_image com um prompt retorna um ID de tarefa, e get_result devolve o arquivo mais uma pequena prévia integrada que o Codex pode analisar.
Particularidades do Codex que vale a pena conhecer
Reunidas enquanto testava a configuração acima, apresentadas mais ou menos na ordem em que você se deparará com elas.

1. O CLI não escreverá essa configuração para você. O comando codex mcp add existe, mas segundo a documentação oficial, ele não oferece suporte a tokens Bearer para servidores HTTP; o comando é voltado para servidores stdio locais e logins OAuth (codex mcp login). Para um servidor remoto autenticado por chave, você deve editar ~/.codex/config.toml manualmente. São trinta segundos de trabalho, mas se você esperava uma experiência prática de uma única linha como claude mcp add --header, aqui é onde o Codex difere.
2. É TOML, e a tabela é mcp_servers. Em minúsculas com sublinhado, colchetes e sem JSON. Configurações copiadas da documentação do Cursor ou Claude (mcpServers, chaves) não serão processadas e erros de TOML neste arquivo tendem a falhar silenciosamente, sem exibir alertas claros. Se o servidor nunca aparecer, execute o codex no terminal e analise o log de inicialização antes de procurar outra causa.
3. As credenciais têm um campo correto e outro atraente que está incorreto. bearer_token_env_var mantém a chave fora do arquivo. A alternativa, a seção http_headers, aceita valores estáticos, o que significa que sua chave real bb_live_ ficará exposta em texto plano em um arquivo que ferramentas de sincronização de dotfiles adoram publicar. Também há env_http_headers para cabeçalhos personalizados a partir de variáveis de ambiente. Minha regra: usar sempre bearer_token_env_var e nunca http_headers para nada secreto.
4. O tempo limite padrão das ferramentas é de 60 segundos, e isso funciona bem, mas apenas por causa do funcionamento das consultas. O Codex atribui por padrão a cada chamada um limite de tool_timeout_sec = 60. Uma renderização de vídeo leva de um a dez minutos, o que pareceria um conflito, porém generate_video retorna um ID de tarefa instantaneamente e get_result realiza consultas de tipo long-polling com no máximo 30 segundos por chamada. Cada chamada individual permanece confortavelmente abaixo do limite; o agente simplesmente realiza a consulta algumas vezes. Não tente «corrigir» isso aumentando o tempo limite para 600; não é necessário e, si o servidor travar de verdade, bloquearia o agente por dez minutos.
5. O comportamento de aprovação é configurável por servidor, e transações financeiras merecem a opção prompt. O campo default_tools_approval_mode aceita os valores auto, prompt, writes e approve, de acordo com os documentos. Para um servidor onde várias ferramentas consomem dinheiro real por chamada, recomendo manter a confirmação ativa e aprovar cada chamada individualmente; as ferramentas gratuitas (list_models, get_account, get_result) são as únicas que vale a pena liberar automaticamente se a sua configuração permitir decisões por ferramenta. De qualquer forma, o vídeo conta com um segundo bloqueio do nosso lado: nada acima do orçamento é cobrado sem uma confirmação explícita com confirm_cost.
Quanto custou o material de demonstração deste artigo?
Preços padrão por geração, os mesmos valores que list_models reporta ao agente, sem descontos de equipe:
| Item | Modelo | Preço |
|---|---|---|
| Demonstração de vídeo promo, via MCP com chave ativa | Veo 3.1 Fast, 720p, 8 s, sem som | $0.70 |
| Capa + 2 ilustrações editoriais | Nano Banana Pro, 1K | $0.33 |
| Captura de tela da página de documentação | navegador, não é uma geração | $0.00 |
| Total | $1.03 |
O vídeo deu certo de primeira, algo com que não convém contar sempre; tomadas de produtos são bem fáceis de obter bons resultados, mas qualquer coisa com mãos ou texto legível não é. Planeje uma segunda tentativa para esses casos.
Se você já usa este servidor em outro cliente, o bloco TOML acima é a única novidade: mesma chave, mesmo saldo e mesmo histórico de geração em todos os lugares. Se estiver começando do zero, a guia do Claude Code cobre mais quatro casos de uso que se aplicam ao Codex quase palavra por palavra. Crie uma chave e peça ao Codex seu primeiro render.
FAQ
O Codex suporta servidores MCP remotos com autenticação Bearer?
Sim, nativamente. Um servidor remoto é configurado com uma tabela [mcp_servers.<nome>] no ~/.codex/config.toml usando um campo url, e o bearer_token_env_var indica a variável de ambiente cujo valor o Codex enviará no cabeçalho Authorization. Verificado com a documentação oficial del Codex MCP em 11 de julho de 2026. OAuth também é suportado (é o modo de transmissão padrão para servidores que o oferecem), mas uma configuração com chave estática não precisa de mais do que essas duas linhas.
A configuração do MCP é realmente compartilhada entre o Codex CLI, a extensão de IDE e o ChatGPT de desktop?
Sim. A documentação do Codex indica que o aplicativo de desktop do ChatGPT, o Codex CLI e a extensão de IDE compartilham a configuração do config.toml. Na prática, a única coisa que não se transfere automaticamente é a variável de ambiente: os exports do seu shell são visíveis para o CLI, mas um aplicativo de desktop aberto a partir do Dock precisará que a variável esteja configurada no nível do sistema operacional (launchctl setenv no macOS) ou a autenticação falhará usando a mesma configuração.
Posso adicionar o servidor usando codex mcp add em vez de editar o arquivo?
Não para este tipo de servidor. Os documentos não oferecem nenhum parâmetro para tokens Bearer no codex mcp add para servidores HTTP, por isso um endpoint remoto autenticado com chave exige que você mesmo edite o ~/.codex/config.toml. O lado bom da edição manual é que o resultado é explícito e fácil de incluir em sistemas de controle de versão; o bloco tem apenas três linhas e a chave permanece no ambiente em vez de ser gravada no arquivo.
Por que minha chave bb_live_ não funciona nas configurações de conectores do ChatGPT?
Porque se trata de uma interface de integração diferente. Os conectores no chat do ChatGPT (tanto web quanto desktop, atrás da opção de modo de desenvolvedor) autenticam servidores MCP por meio de OAuth, não colando chaves de API, por isso um endpoint que aceita apenas Bearer não consegue concluir esse fluxo hoje. As interfaces do Codex leem o config.toml e funcionam perfeitamente com a chave. Assim que nosso suporte ao OAuth 2.1 for lançado, os conectores do lado do chat também se tornarão uma opção compatível; a tabela de clientes detalha o estado atual.
O Codex pode gerar vídeo e quanto custa?
Sim, com uma confirmação de custo obrigatória. O generate_video sempre retorna primeiro um orçamento em USD e não cobra nada; o agente deve repetir a chamada com o confirm_cost correspondente ao valor do orçamento para iniciar a renderização. Os preços vão desde $0.10 por um clipe de 4 segundos sem som no Veo 3.1 Lite a 720p, passando por $0.70 pelo demo de 8 segundos no Veo 3.1 Fast deste artigo, até $4.40 para uma renderização premium em 4K com o Veo 3.1 e áudio; o Omni Flash com som custa $0.10 por segundo ($0.30–$1.00 por clipe). Gerações que falharem são reembolsadas de forma automática.