Conecte modelos a servidores MCP remotos e a servidores locais por meio do Túnel MCP seguro.
Além das ferramentas que você disponibiliza ao modelo com a chamada de função, você pode oferecer novas capacidades aos modelos usando servidores MCP remotos ou o Túnel MCP seguro. Essas ferramentas permitem que o modelo se conecte a serviços externos e os controle quando necessário para responder ao prompt de um usuário. Essas chamadas de ferramentas podem ser permitidas automaticamente ou restringidas para exigir sua aprovação explícita como desenvolvedor.
Servidores MCP remotos podem ser quaisquer servidores na internet pública que implementem um servidor remoto do Model Context Protocol (MCP).
O Túnel MCP seguro conecta um servidor MCP local ou privado sem expô-lo à internet pública.
Este guia mostra como usar ferramentas MCP com a API Responses. Os conectores integrados continuam disponíveis para os modelos existentes; consulte Conectores legados para conhecer a política de descontinuação e os exemplos de compatibilidade. Para sessões da API de Agentes, consulte Conexões MCP, que aborda conexões a partir do serviço gerenciado ou do seu sandbox.
Túnel MCP seguro
Se o seu servidor MCP for privado, estiver em infraestrutura local ou atrás de um firewall, use o Túnel MCP seguro para conectá-lo a produtos OpenAI compatíveis sem expor o servidor à internet pública. Baixe a versão pública mais recente em openai/tunnel-client.
Início rápido
Use o tipo de ferramenta mcp na API Responses. Defina server_url para um servidor MCP remoto ou use tunnel_id para um servidor MCP local por meio do Túnel MCP seguro. Dependendo do servidor, você também pode precisar de um token de acesso OAuth no parâmetro authorization.
É muito importante que os desenvolvedores confiem em qualquer servidor MCP remoto que usem com
a API Responses. Um servidor malicioso pode exfiltrar dados sensíveis de
qualquer conteúdo que entre no contexto do modelo. Leia com atenção a seção
Riscos e segurança abaixo antes de usar esta ferramenta.
A API retornará novos itens no array output da resposta do modelo. Se o modelo decidir usar um servidor MCP, primeiro fará uma solicitação para listar as ferramentas disponíveis no servidor, o que criará um item de saída mcp_list_tools. No exemplo de servidor MCP remoto acima, esse item contém apenas uma definição de ferramenta:
Se o modelo decidir chamar uma das ferramentas disponíveis no servidor MCP, você também encontrará uma saída mcp_call que mostrará o que o modelo enviou à ferramenta MCP e o que ela retornou como saída.
Continue lendo o guia abaixo para saber mais sobre como a ferramenta MCP funciona, como filtrar as ferramentas disponíveis e como lidar com solicitações de aprovação de chamadas de ferramenta.
Como funciona
A ferramenta MCP está disponível na API Responses na maioria dos modelos recentes. Verifique aqui a compatibilidade da ferramenta MCP com seu modelo. Ao usar a ferramenta MCP, você paga apenas pelos tokens usados ao importar definições de ferramentas ou fazer chamadas de ferramentas. Não há taxas adicionais por chamada de ferramenta.
A seguir, veremos passo a passo o processo que a API segue ao chamar uma ferramenta MCP.
Etapa 1: Listar as ferramentas disponíveis
Quando você especifica um servidor MCP remoto no parâmetro tools, a API tenta obter uma lista de ferramentas do servidor. A Responses API funciona com servidores MCP remotos que oferecem suporte aos protocolos de transporte Streamable HTTP ou HTTP/SSE.
Se a lista de ferramentas for obtida com sucesso, um novo item de saída mcp_list_tools aparecerá na saída da resposta do modelo. A propriedade tools desse objeto mostrará as ferramentas que foram importadas com sucesso.
Enquanto o item mcp_list_tools estiver presente no contexto de uma solicitação
à API, ela não buscará novamente a lista de ferramentas do servidor MCP a
cada turno de uma conversa. Recomendamos
manter esse item no contexto do modelo em todas as
conversas ou execuções de fluxos de trabalho para reduzir a latência.
Filtrar ferramentas
Alguns servidores MCP podem ter dezenas de ferramentas, e expor muitas ferramentas ao modelo pode resultar em custo e latência elevados. Se você tiver interesse apenas em um subconjunto das ferramentas que um servidor MCP expõe, poderá usar o parâmetro allowed_tools para importar somente essas ferramentas.
Depois que o modelo tiver acesso a essas definições de ferramentas, poderá optar por chamá-las dependendo do que estiver em seu contexto. Quando o modelo decidir chamar uma ferramenta MCP, a API fará uma solicitação ao servidor MCP remoto para chamar a ferramenta e incluirá a saída no contexto do modelo. Isso cria um item mcp_call como este:
Esse item inclui tanto os argumentos que o modelo decidiu usar nessa chamada de ferramenta quanto o output retornado pelo servidor MCP remoto. Todos os modelos podem optar por fazer várias chamadas de ferramenta MCP, então você poderá ver vários desses itens gerados em uma única solicitação à API.
Chamadas de ferramenta que falharem preencherão o campo error desse item com erros do protocolo MCP, erros de execução de ferramentas MCP ou erros gerais de conectividade. Os erros MCP estão documentados na especificação MCP aqui.
Aprovações
Por padrão, a OpenAI solicitará sua aprovação antes de compartilhar qualquer dado com um conector ou servidor MCP remoto. As aprovações ajudam você a manter o controle e a visibilidade sobre quais dados estão sendo enviados a um servidor MCP. Recomendamos fortemente que você revise com atenção (e, opcionalmente, registre em logs) todos os dados compartilhados com um servidor MCP remoto. Uma solicitação de aprovação para fazer uma chamada de ferramenta MCP cria um item mcp_approval_request na saída do objeto Response, como este:
Aqui, usamos o parâmetro previous_response_id para encadear esta nova resposta com a resposta anterior, que gerou a solicitação de aprovação. Mas você também pode enviar as saídas de uma resposta como entradas de outra para ter o máximo de controle sobre o que entra no contexto do modelo.
Se e quando você se sentir à vontade para confiar em um servidor MCP remoto, poderá optar por dispensar as aprovações para reduzir a latência. Para isso, defina o parâmetro require_approval da ferramenta MCP como um objeto que liste apenas as ferramentas para as quais deseja dispensar aprovações, conforme mostrado abaixo, ou defina-o como 'never' para dispensar aprovações para todas as ferramentas desse servidor MCP remoto.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29using OpenAI.Responses;#pragma warning disable OPENAI001string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;ResponsesClient client = new(key);CreateResponseOptions options = new() { Model = "gpt-6-astra" };options.Tools.Add( ResponseTool.CreateMcpTool( serverLabel: "deepwiki", serverUri: new Uri("https://mcp.deepwiki.com/mcp"), toolCallApprovalPolicy: new CustomMcpToolCallApprovalPolicy { ToolsNeverRequiringApproval = new McpToolFilter { ToolNames = { "ask_question", "read_wiki_structure" }, }, } ));options.InputItems.Add( ResponseItem.CreateUserMessageItem( "What transport protocols does the 2025-03-26 version of the MCP spec (modelcontextprotocol/modelcontextprotocol) support?" ));ResponseResult response = await client.CreateResponseAsync(options);Console.WriteLine(response.GetOutputText());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20require "openai"client = OpenAI::Client.newresponse = client.responses.create( model: "gpt-6-astra", input: "What transport protocols does the 2025-03-26 version of the MCP spec support?", tools: [ { type: :mcp, server_label: "deepwiki", server_url: "https://mcp.deepwiki.com/mcp", require_approval: { never: { tool_names: ["ask_question", "read_wiki_structure"] } } } ])puts(response.output_text)
Autenticação
Ao contrário do servidor MCP que usamos como exemplo acima, a maioria dos outros servidores MCP exige autenticação. O método mais comum é um token de acesso OAuth. Forneça esse token no campo authorization da ferramenta MCP:
Para evitar o vazamento de tokens sensíveis, a Responses API não armazena o valor fornecido no campo authorization. Esse valor também não ficará visível no objeto Response criado. Por isso, você deve enviar o valor de authorization em cada solicitação de criação que fizer à Responses API.
Conectores legados
connector_id está obsoleto para modelos lançados após 1º de setembro de
2026. Use server_url para se conectar a um servidor MCP remoto ou
tunnel_id para se conectar a um servidor MCP local por meio do
Túnel MCP seguro. Os modelos
existentes mantêm o suporte a conectores. Os exemplos desta seção usam
gpt-5.2, que foi lançado antes dessa data.
A Responses API oferece suporte integrado a um conjunto limitado de conectores para serviços de terceiros. Esses conectores permitem trazer contexto de aplicativos populares, como Dropbox e Gmail, para que o modelo possa interagir com serviços populares.
Conectores podem ser usados da mesma forma que servidores MCP remotos. Ambos permitem que um modelo OpenAI acesse ferramentas adicionais de terceiros em uma solicitação à API. No entanto, em vez de passar um server_url, como faria para chamar um servidor MCP remoto, você passa um connector_id, que identifica de forma única um conector disponível na API.
Os conectores exigem um token de acesso OAuth fornecido pelo seu aplicativo no parâmetro authorization.
Priorizamos serviços que não têm servidores MCP remotos oficiais. O GitHub, por exemplo, tem um servidor MCP oficial ao qual você pode se conectar passando https://api.githubcopilot.com/mcp/ no campo server_url da ferramenta MCP.
Como autorizar um conector
No campo authorization, passe um token de acesso OAuth. Seu aplicativo deve cuidar separadamente do registro e da autorização do cliente OAuth.
Para testes, você pode usar o OAuth 2.0 Playground do Google para gerar tokens de acesso temporários e usá-los em uma requisição à API.
Para usar o playground para testar a funcionalidade de conectores da API, comece inserindo:
https://www.googleapis.com/auth/calendar.events
Esse escopo de autorização permitirá que a API leia eventos do Google Calendar. Na interface, em "Etapa 1: Selecionar e autorizar APIs".
Depois de autorizar o aplicativo com sua conta do Google, você chegará à Etapa 2: Trocar o código de autorização por tokens. Isso gerará um token de acesso que você poderá usar em uma solicitação à API com o conector do Google Calendar:
Use o conector do Google Calendar
curl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16curlhttps://api.openai.com/v1/responses\-H"Content-Type: application/json"\-H"Authorization: Bearer $OPENAI_API_KEY"\-d'{ "model": "gpt-5.2", "tools": [ { "type": "mcp", "server_label": "google_calendar", "connector_id": "connector_googlecalendar", "authorization": "ya29.A0AS3H6...", "require_approval": "never" } ], "input": "What is on my Google Calendar for today?" }'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import OpenAI from "openai";const client = new OpenAI();const resp = await client.responses.create({ model: "gpt-5.2", tools: [ { type: "mcp", server_label: "google_calendar", connector_id: "connector_googlecalendar", authorization: "ya29.A0AS3H6...", require_approval: "never", }, ], input: "What's on my Google Calendar for today?",});console.log(resp.output_text);
Uma chamada de ferramenta MCP de um Conector terá o mesmo formato que uma chamada de ferramenta MCP de um servidor MCP remoto, usando o tipo de item de saída mcp_call. Nesse caso, tanto os argumentos enviados ao Conector quanto a resposta dele são strings JSON:
As ferramentas disponíveis dependem dos escopos do seu token OAuth. Expanda as tabelas abaixo para ver quais ferramentas você pode usar ao se conectar a cada aplicativo.
Ferramenta
Descrição
Escopos
search
Pesquisa no Dropbox arquivos que correspondem a uma consulta
files.metadata.read, account_info.read
fetch
Obtém um arquivo pelo caminho, com opção de baixar o conteúdo bruto
files.content.read
search_files
Pesquisa arquivos no Dropbox e retorna os resultados
files.metadata.read, account_info.read
fetch_file
Obtém o texto ou o conteúdo bruto de um arquivo
files.content.read, account_info.read
list_recent_files
Retorna os arquivos modificados mais recentemente aos quais o usuário tem acesso
files.metadata.read, account_info.read
get_profile
Obtém o perfil do usuário atual no Dropbox
account_info.read
Ferramenta
Descrição
Escopos
get_profile
Retorna o perfil do usuário atual do Gmail
userinfo.email, userinfo.profile
search_emails
Pesquisa no Gmail e-mails que correspondem a uma consulta ou marcador
gmail.modify
search_email_ids
Obtém os IDs das mensagens do Gmail que correspondem a uma pesquisa
gmail.modify
get_recent_emails
Retorna as mensagens recebidas mais recentemente no Gmail
gmail.modify
read_email
Obtém uma única mensagem do Gmail, incluindo seu corpo
gmail.modify
batch_read_email
Lê várias mensagens do Gmail em uma única chamada
gmail.modify
Ferramenta
Descrição
Escopos
get_profile
Retorna o perfil do usuário atual do Calendar
userinfo.email, userinfo.profile
search
Pesquisa eventos do Calendar, com opção de limitar a um intervalo de tempo
calendar.events
fetch
Obtém os detalhes de um único evento do Calendar
calendar.events
search_events
Consulta eventos do Calendar usando filtros
calendar.events
read_event
Lê um evento do Google Calendar pelo ID
calendar.events
Ferramenta
Descrição
Escopos
get_profile
Retorna o perfil do usuário atual do Drive
userinfo.email, userinfo.profile
list_drives
Lista os drives compartilhados aos quais o usuário tem acesso
drive.readonly
search
Pesquisa arquivos no Drive usando uma consulta
drive.readonly
recent_documents
Retorna os documentos modificados mais recentemente
drive.readonly
fetch
Baixa o conteúdo de um arquivo do Drive
drive.readonly
Ferramenta
Descrição
Escopos
search
Pesquisa chats e mensagens de canais do Microsoft Teams
Chat.Read, ChannelMessage.Read.All
fetch
Obtém uma mensagem do Teams pelo caminho
Chat.Read, ChannelMessage.Read.All
get_chat_members
Lista os membros de um chat do Teams
Chat.Read
get_profile
Retorna o perfil do usuário autenticado no Teams
User.Read
Ferramenta
Descrição
Escopos
search_events
Pesquisa eventos do Outlook Calendar com filtros de data
Calendars.Read
fetch_event
Obtém os detalhes de um único evento
Calendars.Read
fetch_events_batch
Obtém vários eventos em uma única chamada
Calendars.Read
list_events
Lista eventos do calendário em um intervalo de datas
Calendars.Read
get_profile
Obter o perfil do usuário atual
User.Read
Ferramenta
Descrição
Escopos
get_profile
Retornar informações de perfil da conta do Outlook
User.Read
list_messages
Obter emails do Outlook de uma pasta
Mail.Read
search_messages
Pesquisar emails do Outlook com filtros opcionais
Mail.Read
get_recent_emails
Retornar os emails recebidos mais recentemente
Mail.Read
fetch_message
Obter um único email pelo ID
Mail.Read
fetch_messages_batch
Obter vários emails em uma única requisição
Mail.Read
Ferramenta
Descrição
Escopos
get_site
Identificar um site do SharePoint pelo nome do host e pelo caminho
Sites.Read.All
search
Pesquisar documentos do SharePoint/OneDrive por palavra-chave
Sites.Read.All, Files.Read.All
list_recent_documents
Retornar documentos acessados recentemente
Files.Read.All
fetch
Obter conteúdo de uma URL de download de arquivo do Graph
Files.Read.All
get_profile
Obter o perfil do usuário atual
User.Read
Adiar o carregamento de ferramentas de um servidor MCP
Se você usa a pesquisa de ferramentas, pode adiar o carregamento das funções expostas por um servidor MCP até que o modelo decida que precisa delas. Para isso, configure defer_loading: true na definição da ferramenta do servidor MCP.
Quando você adia o carregamento de um servidor MCP, o modelo ainda pode usar o rótulo e a descrição do servidor para decidir quando pesquisar nele, mas as definições de cada função só são carregadas quando necessário. Isso pode ajudar a reduzir o uso total de tokens e é especialmente útil para servidores MCP que expõem muitas funções.
1
2
3
4
5
6
7
8{"type": "mcp","server_label": "dmcp","server_description": "A Dungeons and Dragons MCP server to assist with dice rolling.","server_url": "https://dmcp-server.deno.dev/mcp","defer_loading": true,"require_approval": "never"}
Riscos e segurança
A ferramenta MCP permite conectar modelos da OpenAI a serviços externos. É um recurso poderoso que envolve alguns riscos.
No caso dos conectores, há o risco de enviar dados sensíveis à OpenAI ou de permitir que os modelos leiam dados potencialmente sensíveis nesses serviços.
Os servidores MCP remotos apresentam os mesmos riscos e, além disso, não foram verificados pela OpenAI. Esses servidores podem permitir que os modelos acessem, enviem e recebam dados, além de executar ações nesses serviços. Todos os servidores MCP são serviços de terceiros sujeitos aos próprios termos e condições.
Se você encontrar um servidor MCP malicioso, denuncie-o para security@openai.com.
Veja abaixo algumas práticas recomendadas a considerar ao integrar conectores e servidores MCP remotos.
Injeção de prompt
A injeção de prompt é uma questão importante de segurança em qualquer aplicativo que use LLMs, especialmente quando você dá ao modelo acesso a servidores MCP e conectores que podem acessar dados sensíveis ou executar ações. Use essas ferramentas com a devida cautela e medidas de proteção adequadas se o prompt enviado ao modelo contiver conteúdo fornecido pelo usuário.
Sempre exija aprovação para ações sensíveis
Use as configurações disponíveis dos parâmetros require_approval e allowed_tools para garantir que qualquer ação sensível exija um fluxo de aprovação.
URLs nas chamadas e saídas de ferramentas MCP
Pode ser perigoso fazer requisições a URLs ou incorporar URLs de imagens fornecidas nas saídas de chamadas de ferramentas, sejam elas de conectores ou de servidores MCP remotos. Certifique-se de que você confia nos domínios e serviços que fornecem essas URLs antes de incorporá-las ou usá-las de qualquer outra forma no código do seu aplicativo.
Conexão com servidores confiáveis
Escolha servidores oficiais hospedados pelos próprios provedores de serviços (por exemplo, recomendamos conectar-se ao servidor Stripe hospedado pela Stripe em mcp.stripe.com, em vez de um servidor MCP da Stripe hospedado por terceiros). Como ainda não há muitos servidores MCP remotos oficiais, você pode considerar usar um servidor MCP hospedado por uma organização que não opera esse servidor e que encaminha solicitações a esse serviço por meio da sua API. Se precisar fazer isso, redobre o cuidado ao avaliar esses "agregadores" e analise atentamente como eles usam seus dados.
Registre e revise os dados compartilhados com servidores MCP de terceiros.
Como os servidores MCP fornecem suas próprias definições de ferramentas, eles podem solicitar dados que você nem sempre se sente à vontade para compartilhar com o host desse servidor MCP. Por isso, a ferramenta MCP na API Responses exige, por padrão, aprovação para cada chamada de ferramenta MCP. Ao desenvolver seu aplicativo, analise de forma cuidadosa e rigorosa os tipos de dados compartilhados com esses servidores MCP. Quando tiver confiança suficiente nesse servidor MCP, você poderá dispensar essas aprovações para reduzir a latência de execução.
Também recomendamos registrar todos os dados enviados a servidores MCP. Se você usa a Responses API com store=true, esses dados já são registrados pela API por 30 dias, a menos que a opção de zero retenção de dados esteja habilitada para sua organização. Você também pode registrar esses dados nos seus próprios sistemas e revisá-los periodicamente para garantir que o compartilhamento ocorra conforme o esperado.
Servidores MCP maliciosos podem incluir instruções ocultas (injeções de prompt) criadas para fazer os modelos da OpenAI se comportarem de forma inesperada. Embora a OpenAI tenha implementado proteções integradas para ajudar a detectar e bloquear essas ameaças, é essencial revisar cuidadosamente as entradas e saídas e garantir que as conexões sejam estabelecidas apenas com servidores confiáveis.
Os servidores MCP podem alterar o comportamento das ferramentas de forma inesperada, o que pode levar a comportamentos indesejados ou maliciosos.
Implicações para zero retenção de dados e residência de dados
A ferramenta MCP é compatível com zero retenção de dados e residência de dados, mas é importante lembrar que os servidores MCP são serviços de terceiros. Os dados enviados a um servidor MCP estão sujeitos às políticas de retenção e residência de dados desse serviço.
Em outras palavras, se sua organização tem residência de dados na Europa, a OpenAI restringirá a inferência e o armazenamento do Conteúdo do Cliente à Europa até o momento em que comunicações ou dados forem enviados ao servidor MCP. É sua responsabilidade garantir que o servidor MCP também cumpra quaisquer requisitos de zero retenção de dados ou residência de dados que você tenha. Saiba mais sobre zero retenção de dados e residência de dados aqui.