O Model Context Protocol (MCP) conecta modelos a ferramentas e contexto. Use-o para dar ao ChatGPT ou ao Codex acesso à documentação de terceiros ou permitir que eles interajam com ferramentas de desenvolvimento, como seu navegador ou o Figma.
O ChatGPT na Web pode usar ferramentas remotas baseadas em MCP fornecidas por plug-ins. Os clientes locais do Codex também podem se conectar diretamente a servidores MCP e compartilhar a mesma configuração.
O aplicativo do ChatGPT para desktop, o Codex CLI e a extensão para IDE oferecem suporte a servidores MCP e compartilham a configuração MCP de um mesmo host do Codex.
Os recursos compatíveis descritos abaixo se aplicam aos servidores MCP configurados em um host do Codex. As ferramentas hospedadas de plug-ins podem ter capacidades diferentes.
Recursos MCP compatíveis
- Servidores STDIO: servidores executados como um processo local (iniciado por um comando).
- Variáveis do ambiente
- Servidores Streamable HTTP: servidores acessados por um endereço.
- Autenticação por token bearer
- Autenticação OAuth, incluindo documentos de metadados de ID do cliente (CIMD) e registro dinâmico de clientes (DCR)
- Autenticação por sessão do ChatGPT para servidores próprios confiáveis
- Instruções do servidor: o Codex lê o campo
instructionsdo MCP retornado durante a inicialização e o usa como orientação para todo o servidor, em conjunto com as ferramentas do servidor.
Se você desenvolver ou mantiver um servidor MCP para o Codex, use instructions para fluxos de trabalho entre ferramentas, restrições e limites de taxa aplicáveis a todo o servidor. Garanta que os primeiros 512 caracteres façam sentido por conta própria para que as orientações mais importantes estejam disponíveis quando o Codex decidir como usar o servidor.
Conecte o Codex a um servidor MCP
O Codex armazena a configuração MCP em config.toml, junto com outras configurações do Codex. Por padrão, esse arquivo é ~/.codex/config.toml, mas você também pode limitar o escopo dos servidores MCP a um projeto com .codex/config.toml (somente em projetos confiáveis).
O aplicativo do ChatGPT para desktop, o Codex CLI e a extensão para IDE compartilham essa configuração. Depois de configurar seus servidores MCP, você pode alternar entre esses clientes sem refazer a configuração.
Configure no aplicativo do ChatGPT para desktop
- Abra Configurações e selecione Servidores MCP.
- Selecione Adicionar servidor.
- Insira um nome, escolha STDIO ou Streamable HTTP e informe o comando ou a URL do servidor.
- Salve o servidor e selecione Reiniciar.
A lista de servidores mostra quais estão habilitados e quais exigem OAuth. Selecione
Autenticar quando um servidor OAuth exigir login. No campo de mensagem, digite /mcp
para ver os servidores conectados.
Use ferramentas baseadas em MCP no ChatGPT na Web
Em um chat hospedado no ChatGPT Work, instale um plug-in para usar os conectores e as ferramentas MCP remotas incluídos nele. Depois da instalação, Chat e Work podem usar essas ferramentas. Os administradores do workspace podem controlar quais plug-ins e ferramentas ficam disponíveis.
O ChatGPT na Web não lê os arquivos locais de configuração do Codex nem disponibiliza o menu local de comandos do Codex. Abra a aba Plug-ins para explorar e gerenciar as ferramentas disponíveis.
Configure com a CLI
Adicione um servidor MCP
codex mcp add <server-name> --env VAR1=VALUE1 --env VAR2=VALUE2 -- <stdio server-command>Por exemplo, para adicionar o Context7 (um servidor MCP gratuito de documentação para desenvolvedores), você pode executar o seguinte comando:
codex mcp add context7 -- npx -y @upstash/context7-mcpOutros comandos da CLI
Execute codex mcp list para ver os servidores configurados. Para ver todos os comandos MCP
disponíveis, execute codex mcp --help. Para um servidor compatível com OAuth, execute
codex mcp login <server-name>.
Interface de usuário do terminal (TUI)
Na TUI do codex, use /mcp para ver seus servidores MCP ativos.
Configure na extensão para IDE
- Abra o menu do ícone de engrenagem e selecione Servidores MCP.
- Selecione Adicionar servidor.
- Insira um nome, escolha STDIO ou Streamable HTTP e informe o comando ou a URL do servidor.
- Salve o servidor e selecione Reiniciar extensão.
A lista de servidores MCP mostra quais estão habilitados e quais exigem OAuth. Selecione Autenticar quando um servidor OAuth exigir login.
Configure com config.toml
Para ter um controle mais detalhado, edite ~/.codex/config.toml ou um arquivo
.codex/config.toml específico de um projeto. Consulte a referência de configuração
para ver uma lista pesquisável com todas as opções MCP compatíveis.
Configure cada servidor MCP com uma tabela [mcp_servers.<server-name>] no arquivo de configuração.
Servidores STDIO
command(obrigatório): o comando que inicia o servidor.args(opcional): argumentos a serem passados ao servidor.env(opcional): variáveis do ambiente a serem definidas para o servidor.env_vars(opcional): variáveis do ambiente a serem permitidas e encaminhadas.cwd(opcional): diretório de trabalho a partir do qual o servidor será iniciado.experimental_environment(opcional): defina comoremotepara iniciar o servidor stdio por meio do ambiente de um executor remoto, quando disponível.
env_vars pode conter nomes simples de variáveis ou objetos com uma origem:
env_vars = ["LOCAL_TOKEN", { name = "REMOTE_TOKEN", source = "remote" }]Entradas de texto e entradas com source = "local" obtêm os valores do ambiente local do Codex.
Entradas com source = "remote" obtêm os valores do ambiente do executor remoto e exigem
a execução remota de servidores MCP via stdio.
Servidores Streamable HTTP
url(obrigatório): o endereço do servidor.auth(opcional): autenticação a ser tentada após os tokens bearer configurados e os cabeçalhos de autorização. Useoauth(o padrão) para credenciais OAuth do MCP armazenadas. Usechatgptpara usar a sessão atual do ChatGPT na origem própria e confiável do ChatGPT, com as credenciais OAuth armazenadas como alternativa.bearer_token_env_var(opcional): nome da variável do ambiente que contém um token bearer a ser enviado no cabeçalhoAuthorization.http_headers(opcional): mapeamento de nomes de cabeçalhos para valores estáticos.env_http_headers(opcional): mapeamento de nomes de cabeçalhos para nomes de variáveis do ambiente (valores obtidos do ambiente).
Se não for possível obter credenciais de nenhuma fonte, o Codex pode se conectar ao servidor sem
autenticação. Execute codex mcp login <server-name> separadamente para iniciar um login
OAuth no MCP.
Outras opções de configuração
startup_timeout_sec(opcional): tempo limite (em segundos) para o servidor iniciar. Padrão:10.tool_timeout_sec(opcional): tempo limite (em segundos) para o servidor executar uma ferramenta. Padrão:60.enabled(opcional): defina comofalsepara desativar um servidor sem excluí-lo.required(opcional): defina comotruepara que a inicialização falhe se este servidor habilitado não puder ser inicializado.enabled_tools(opcional): Lista de ferramentas permitidas.disabled_tools(opcional): Lista de ferramentas bloqueadas (aplicada apósenabled_tools).default_tools_approval_mode(opcional): Comportamento padrão de aprovação das ferramentas deste servidor. Os valores aceitos sãoauto,prompt,writeseapprove. O modowritessolicita aprovação para ferramentas que não estejam marcadas como somente leitura.tools.<tool>.approval_mode(opcional): Substituição do comportamento de aprovação por ferramenta.
Registro de clientes OAuth e callbacks
Quando o servidor de autorização exigir um cliente OAuth pré-registrado, informe o ID desse cliente ao adicionar o servidor MCP:
codex mcp add example --url https://mcp.example.com --oauth-client-id my-clientO Codex exibe a URL de callback completa para você registrar no seu provedor:
OAuth callback URL: http://127.0.0.1/callbackO Codex salva o callback junto com o ID do cliente em config.toml para os próximos
logins:
[mcp_servers.example]
url = "https://mcp.example.com"
[mcp_servers.example.oauth]
client_id = "my-client"
callback_url = "http://127.0.0.1/callback"Clientes pré-registrados recém-adicionados só usam um callback estável quando o
servidor de autorização anuncia
authorization_response_iss_parameter_supported: true e fornece nos metadados
um issuer. Se o suporte ao emissor não for anunciado, o Codex acrescentará um ID de callback
específico do servidor, como em http://127.0.0.1/callback/XuuuHAzzHOni. Clientes existentes
sem um callback salvo continuam usando o redirecionamento específico do seu ID de callback.
Durante o login, a seleção do callback depende da configuração OAuth e dos metadados do servidor de autorização:
| Configuração OAuth | Suporte ao emissor | Callback usado |
|---|---|---|
callback_url sem client_id | Com suporte | O callback configurado é usado no registro do cliente. |
callback_url sem client_id | Sem suporte | O callback configurado é usado no registro do cliente com o ID de callback específico do servidor acrescentado ao final. |
client_id e callback_url | Com suporte | O callback configurado é reutilizado; a resposta de autorização deve conter o iss correspondente. |
client_id e uma callback_url que termina com o ID de callback correto | Sem suporte | O callback configurado é reutilizado sem alterações. |
client_id e uma callback_url sem o ID de callback correto | Sem suporte | O callback configurado é ignorado. O Codex usa mcp_oauth_callback_url ou, se essa opção não estiver definida, http://127.0.0.1/callback, com o ID de callback acrescentado ao final. |
client_id sem uma callback_url configurada | Com ou sem suporte | O Codex usa o callback global ou padrão com o ID de callback específico do servidor acrescentado ao final. |
O uso dessa alternativa não altera a URL de callback armazenada. O Codex deriva o ID de callback da URL do servidor MCP, incluindo o caminho e a string de consulta. As mesmas regras de seleção se aplicam ao login automático e ao explícito.
Defina mcp_oauth_callback_url quando precisar de um caminho de callback personalizado ou de uma URL de entrada de um
Devbox remoto. Clientes pré-registrados recém-adicionados usam essa URL sem alterações
quando o provedor oferece suporte à identificação do emissor. Caso contrário, usam a
URL configurada com o ID de callback específico do servidor acrescentado ao final. Sempre registre
o callback exato exibido por codex mcp add.
Para callbacks http://127.0.0.1 sem porta, o Codex omite a porta de escuta da
URL que exibe e armazena e, depois, insere a porta de escuta ativa durante a
autorização. Essa substituição não se aplica a localhost, hosts IPv6,
URLs HTTPS ou callbacks que já incluem uma porta. Os servidores de autorização
devem aceitar portas variáveis de loopback, conforme a
RFC 8252, seção 7.3.
Defina mcp_oauth_callback_port para escolher uma porta de escuta global fixa ou defina
mcp_servers.<server-name>.oauth.callback_port para substituí-la em um servidor específico.
Uma porta explícita na URL de callback não configura o processo de escuta. Para um
callback direto de loopback, use http://127.0.0.1 sem porta ou configure a mesma
porta explícita na URL de callback e no processo de escuta. Um callback via proxy pode
usar intencionalmente uma porta na URL externa diferente da porta de escuta
local. Para URLs de callback locais, a escuta ocorre na interface local; para URLs de callback não locais,
a escuta ocorre em 0.0.0.0.
O Codex valida qualquer iss retornado antes de trocar o código de autorização. Um
iss divergente sempre causa a rejeição da resposta. Quando o suporte ao emissor é anunciado,
a ausência de iss também causa a rejeição. Em nenhuma dessas falhas o código é trocado ou outro
callback é usado como alternativa. Uma URL de callback malformada ou o anúncio de suporte ao emissor
sem um emissor nos metadados também resultam em falha fatal. Consulte
Autenticar usuários.
Se o servidor MCP anunciar scopes_supported, o Codex dará preferência aos
escopos anunciados pelo servidor durante o login OAuth. Caso contrário, usará os
escopos configurados em config.toml.
Registro de clientes OAuth
O Codex oferece suporte a documentos de metadados de ID de cliente OAuth (CIMD)
e ao registro dinâmico de clientes (DCR). Por padrão, o Codex escolhe automaticamente
CIMD quando o servidor de autorização anuncia
client_id_metadata_document_supported: true, inclui none em
token_endpoint_auth_methods_supported e o callback usa uma URL de
loopback compatível. Caso contrário, o Codex usa DCR quando disponível. Um ID de cliente OAuth
configurado sempre tem precedência e dispensa o registro do cliente.
Para CIMD, o Codex usa um documento de metadados hospedado no ChatGPT e específico do servidor MCP:
https://chatgpt.com/oauth/codex/<callback_id>/client.jsonO Codex deriva <callback_id> da URL do servidor MCP e o inclui na
URI de redirecionamento de loopback, como
http://127.0.0.1:<port>/callback/<callback_id>. O documento de metadados registra
a URI de loopback correspondente sem porta. Os servidores de autorização devem aceitar a
porta selecionada no login e verificar se o host e o caminho correspondem exatamente, conforme exigido pela
RFC 8252. Hosts,
caminhos ou parâmetros de consulta personalizados para o callback exigem DCR ou um ID de
cliente OAuth configurado.
O suporte a um documento CIMD estável e compartilhado está em desenvolvimento e estará disponível em breve:
https://chatgpt.com/oauth/codex/client.jsonO Codex usará o documento estável com o caminho compartilhado /callback quando o
servidor de autorização anunciar
authorization_response_iss_parameter_supported: true, fornecer um
issuer válido nos metadados e incluir um iss correspondente nas respostas de
autorização. Servidores sem respostas vinculadas ao emissor continuarão usando o
documento específico do callback.
Para escolher um método de registro para um único login na CLI, use
--oauth-client-registration:
codex mcp login <server-name> --oauth-client-registration cimd
codex mcp login <server-name> --oauth-client-registration dcrO valor padrão é auto. As opções de registro se aplicam apenas ao login atual e
não são armazenadas em config.toml.
Exemplos de config.toml
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
env_vars = ["LOCAL_TOKEN"]
[mcp_servers.context7.env]
MY_ENV_VAR = "MY_ENV_VALUE"# Optional MCP OAuth callback overrides (used by `codex mcp login`)
mcp_oauth_callback_port = 5555
mcp_oauth_callback_url = "https://devbox.example.internal/callback"[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"
http_headers = { "X-Figma-Region" = "us-east-1" }[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot"]
disabled_tools = ["screenshot"] # applied after enabled_tools
default_tools_approval_mode = "prompt"
startup_timeout_sec = 20
tool_timeout_sec = 45
enabled = true
[mcp_servers.chrome_devtools.tools.open]
approval_mode = "approve"Servidores MCP fornecidos por plug-ins
Os plug-ins instalados podem incluir servidores MCP no manifesto do plug-in. Esses
servidores são iniciados pelo plug-in, portanto a configuração do usuário não define o
comando de transporte deles. A configuração do usuário ainda pode controlar se ficam ativados ou desativados e a política de ferramentas
em plugins.<plugin>.mcp_servers.<server>.
[plugins."sample@test".mcp_servers.sample]
enabled = true
default_tools_approval_mode = "prompt"
enabled_tools = ["read", "search"]
[plugins."sample@test".mcp_servers.sample.tools.search]
approval_mode = "approve"Servidores MCP HTTP fornecidos por plug-ins também podem declarar configurações OAuth em .mcp.json.
Os manifestos de plug-ins usam os nomes de campo em camelCase clientId, callbackUrl e
callbackPort:
{
"mcpServers": {
"sample": {
"type": "http",
"url": "https://mcp.example.com/mcp",
"oauth": {
"clientId": "my-pre-registered-client",
"callbackUrl": "http://127.0.0.1/callback/registered"
}
}
}
}Servidores MCP fornecidos por plug-ins seguem as mesmas regras de seleção de callback dos demais
servidores MCP. Se um plug-in fornecer um clientId, seu provedor não oferecer suporte a
callbacks vinculados ao emissor e callbackUrl não contiver o ID de callback
específico do servidor, o Codex ignorará essa URL no login e usará mcp_oauth_callback_url ou,
se essa opção não estiver definida, http://127.0.0.1/callback, com o ID de callback acrescentado ao final. O
valor configurado de callbackUrl permanece inalterado.
O oauth.callbackPort de um plug-in substitui a configuração global
mcp_oauth_callback_port; se nenhuma das duas estiver definida, o Codex escolherá uma porta efêmera.
A porta incluída em callbackUrl não determina a porta de escuta. Para um
callback direto de loopback com porta fixa, configure os dois valores para que sejam iguais:
{
"callbackUrl": "http://127.0.0.1:4321/callback/registered",
"callbackPort": 4321
}No caso de um ponto de entrada remoto ou outro proxy, a porta da URL de callback e a porta de escuta local podem ser intencionalmente diferentes quando o proxy encaminha as solicitações ao processo de escuta configurado.
Exemplos de servidores MCP úteis
A lista de servidores MCP continua crescendo. Veja alguns dos mais comuns:
- MCP da documentação da OpenAI: Pesquise e leia a documentação da OpenAI para desenvolvedores.
- Context7: Conecte-se à documentação atualizada para desenvolvedores.
- Figma Local e Remoto: Acesse seus designs do Figma.
- Playwright: Controle e inspecione um navegador usando o Playwright.
- Ferramentas para desenvolvedores do Chrome: Controle e inspecione o Chrome.
- Sentry: Acesse os logs do Sentry.
- GitHub: Gerencie o GitHub além do que
gitpermite (por exemplo, pull requests e issues).