For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal

Criação de servidores MCP para plug-ins e integrações de API

Crie um servidor MCP para usar com plug-ins, pesquisa aprofundada ou integrações de API.

O Model Context Protocol (MCP) é um protocolo aberto que está se tornando o padrão do setor para ampliar as capacidades dos modelos de IA com ferramentas e conhecimentos adicionais. Servidores MCP remotos podem conectar modelos a novas fontes de dados e capacidades pela Internet.

Neste guia, veremos como criar um servidor MCP remoto que lê dados de uma fonte privada (um armazenamento vetorial) e os disponibiliza por meio de um plug-in no ChatGPT e no Codex, da pesquisa aprofundada e do conhecimento da empresa no ChatGPT e da API.

Observação: para criar um plug-in com um servidor MCP, comece pela documentação de plug-ins: Início rápido, Crie seu servidor MCP, Conecte e teste seu plug-in e Autenticação. Se o seu servidor MCP não precisar de uma interface de usuário, você poderá expor ferramentas sem recursos de interface.

Configure uma fonte de dados

Você pode usar dados de qualquer fonte em um servidor MCP remoto, mas, para simplificar, usaremos armazenamentos vetoriais na API da OpenAI. Comece enviando um documento PDF para um novo armazenamento vetorial. Como exemplo, você pode usar este livro do século XIX sobre gatos, que está em domínio público.

Você pode enviar arquivos e criar um armazenamento vetorial aqui no painel ou fazer isso pela API. Siga o guia de armazenamento vetorial para configurar um armazenamento vetorial e enviar um arquivo para ele.

Anote o ID exclusivo do armazenamento vetorial para usá-lo no exemplo a seguir.

configuração do armazenamento vetorial

Crie um servidor MCP

Agora, vamos criar um servidor MCP remoto que fará pesquisas no nosso armazenamento vetorial e poderá retornar o conteúdo dos documentos a partir de um ID de arquivo.

Neste exemplo, vamos criar nosso servidor MCP usando Python e FastMCP. Uma implementação completa do servidor está no final desta seção, junto com instruções para executá-lo em um ambiente de desenvolvimento no navegador.

Há vários outros frameworks de servidores MCP disponíveis para diversas linguagens de programação. Independentemente do framework escolhido, as definições das ferramentas no seu servidor precisarão seguir o formato descrito aqui.

Para funcionar com a pesquisa aprofundada e o conhecimento da empresa no ChatGPT, seu servidor MCP deve implementar duas ferramentas somente leitura: search e fetch, usando o esquema de compatibilidade descrito em Compatibilidade com o conhecimento da empresa. A mesma interface é útil para fluxos de trabalho de pesquisa via API.

Declare um esquema de saída para cada ferramenta para que os clientes possam validar o formato do resultado. No FastMCP, modelos de retorno tipados podem gerar esse esquema automaticamente; o exemplo abaixo passa output_schema explicitamente a partir dos mesmos modelos.

Ferramenta search

A ferramenta search é responsável por retornar uma lista de resultados de pesquisa relevantes da fonte de dados do seu servidor MCP, com base na consulta do usuário.

Argumentos:

Uma única string de consulta.

Retorno:

Um objeto com uma única chave, results, cujo valor é um array de objetos de resultado. Cada objeto de resultado deve incluir:

  • id - um ID exclusivo para o documento ou item do resultado da pesquisa
  • title - título legível por pessoas.
  • url - URL canônica para citação.

No MCP, retorne esse objeto como structuredContent e inclua o mesmo valor como uma string codificada em JSON no array content para manter a compatibilidade.

A resposta final da ferramenta deve ter este formato:

{
  "structuredContent": {
    "results": [{ "id": "doc-1", "title": "...", "url": "..." }]
  },
  "content": [
    {
      "type": "text",
      "text": "{\"results\":[{\"id\":\"doc-1\",\"title\":\"...\",\"url\":\"...\"}]}"
    }
  ]
}

Ferramenta fetch

A ferramenta fetch é usada para recuperar o conteúdo completo de um documento ou item retornado na pesquisa.

Argumentos:

Uma string que identifica de forma exclusiva o documento da pesquisa.

Retorno:

Um único objeto com as seguintes propriedades:

  • id - um ID exclusivo para o documento ou item do resultado da pesquisa
  • title - um título em formato de string para o item do resultado da pesquisa
  • text - O texto completo do documento ou item
  • url - uma URL para o documento ou item do resultado da pesquisa. Útil para citar recursos específicos em pesquisas.
  • metadata - dados opcionais sobre o resultado em pares de chave/valor

No MCP, retorne esse objeto como structuredContent e inclua o mesmo valor como uma string codificada em JSON no array content para manter a compatibilidade.

A resposta final da ferramenta deve ter este formato:

{
  "structuredContent": {
    "id": "doc-1",
    "title": "...",
    "text": "full text...",
    "url": "https://example.com/doc",
    "metadata": { "source": "vector_store" }
  },
  "content": [
    {
      "type": "text",
      "text": "{\"id\":\"doc-1\",\"title\":\"...\",\"text\":\"full text...\",\"url\":\"https://example.com/doc\",\"metadata\":{\"source\":\"vector_store\"}}"
    }
  ]
}

Comportamento das citações

Tanto nos resultados de search quanto nas respostas de fetch, o ChatGPT cria metadados de citação somente quando url é uma string não vazia. Um resultado com title, mas sem um url utilizável, continua sendo uma saída comum da ferramenta, em vez de se tornar uma citação vazia. Para que um resultado possa ser citado, retorne seu url canônico.

Por exemplo, o ChatGPT pode chamar search com:

{ "query": "What is the quarterly plan?" }

O servidor MCP pode responder com um resultado associado a uma URL:

{
  "structuredContent": {
    "results": [
      {
        "id": "quarterly-plan",
        "title": "Quarterly plan",
        "url": "https://example.com/quarterly-plan"
      }
    ]
  },
  "content": [
    {
      "type": "text",
      "text": "{\"results\":[{\"id\":\"quarterly-plan\",\"title\":\"Quarterly plan\",\"url\":\"https://example.com/quarterly-plan\"}]}"
    }
  ]
}

Nesta resposta, o campo url tem um valor, o que permite que o resultado receba metadados de citação. A consulta em si não aciona o tratamento de citações. Se o resultado omitir url ou fornecer um valor vazio ou que não seja uma string, o ChatGPT preservará o resultado como uma saída comum da ferramenta.

Exemplo de servidor

Você pode experimentar este servidor MCP de exemplo em um ambiente de desenvolvimento no navegador. Configure o exemplo com suas próprias credenciais de API e informações do armazenamento vetorial.

Servidor MCP de exemplo no Replit

Crie um remix do servidor de exemplo no Replit para testá-lo em execução.

Para sua conveniência, uma implementação completa das ferramentas search e fetch no FastMCP também está disponível abaixo.

Teste e conecte seu servidor MCP

Você pode testar seu servidor MCP com um modelo de pesquisa aprofundada no painel de prompts. Crie um novo prompt ou edite um existente e adicione uma nova ferramenta MCP à configuração do prompt. Este exemplo de compatibilidade expõe apenas as ferramentas somente leitura search e fetch, por isso a requisição à API dispensa a aprovação dessas ferramentas. Mantenha a aprovação ativada para ferramentas que possam modificar dados ou realizar outras ações com consequências relevantes.

Se você estiver testando este servidor como parte de um plug-in, siga as instruções em Conecte e teste seu plug-in.

configuração de prompts

Depois de configurar seu servidor MCP, você pode conversar com um modelo que o utilize pela interface de Prompts.

chat de prompts

Você pode testar o servidor MCP diretamente com a Responses API usando uma requisição como esta:

curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
  "model": "gpt-5.6-sol",
  "input": [
    {
      "role": "developer",
      "content": [
        {
          "type": "input_text",
          "text": "You are a research assistant that searches MCP servers to find answers to your questions."
        }
      ]
    },
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Are cats attached to their homes? Give a succinct one page overview."
        }
      ]
    }
  ],
  "reasoning": {
    "summary": "auto"
  },
  "tools": [
    {
      "type": "mcp",
      "server_label": "cats",
      "server_url": "https://777ff573-9947-4b9c-8982-658fa40c7d09-00-3le96u7wsymx.janeway.replit.dev/sse/",
      "allowed_tools": [
        "search",
        "fetch"
      ],
      "require_approval": "never"
    }
  ]
}'

Configurar a autenticação

Ao criar um servidor MCP remoto personalizado, a autorização e a autenticação ajudam você a proteger seus dados. Recomendamos usar OAuth com Client ID Metadata Documents para o registro de clientes quando seu servidor de autorização oferecer suporte a CIMD e o criador do plug-in optar por esse recurso. O ChatGPT oferece suporte a CIMD com troca de tokens para clientes públicos (none) ou troca de tokens com asserção de cliente assinada (private_key_jwt). O registro dinâmico de clientes continua disponível quando configurado. Para conhecer os requisitos de autenticação de plug-ins, consulte Autenticação. Para saber mais sobre o protocolo, leia o guia do usuário do MCP ou a especificação de autorização.

Se você conectar seu servidor MCP remoto personalizado por meio de um plug-in, os usuários do seu workspace passarão por um fluxo OAuth para acessar seu serviço.

Conectar no ChatGPT

  1. No ChatGPT, abra Configurações → Segurança e login e ative o Modo de desenvolvedor.
  2. Acesse Plug-ins do ChatGPT, selecione o botão de adição e conecte a URL do seu servidor no modo de desenvolvedor.
  3. Teste seu plug-in executando prompts no chat e na pesquisa aprofundada.

Para ver as etapas detalhadas de configuração, consulte Conectar e testar seu plug-in.

Riscos e segurança

Servidores MCP personalizados permitem conectar seu workspace do ChatGPT a aplicativos externos, possibilitando que o ChatGPT acesse, envie e receba dados nesses aplicativos. Os servidores MCP personalizados não são desenvolvidos nem verificados pela OpenAI. 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.

A injeção de prompt é um tipo de ataque em que um invasor insere instruções maliciosas em um conteúdo que um de nossos modelos provavelmente encontrará, como uma página da Web, com o objetivo de substituir o comportamento esperado do ChatGPT. Se o modelo obedecer às instruções injetadas, poderá realizar ações que o usuário e o desenvolvedor nunca pretenderam, incluindo o envio de dados privados a um destino externo.

Por exemplo, você pode pedir ao ChatGPT que encontre um restaurante para um jantar em grupo consultando seu calendário e seus e-mails recentes. Durante a pesquisa, ele pode encontrar um comentário malicioso, ou seja, um conteúdo nocivo criado para enganar o agente e induzi-lo a realizar ações indesejadas, instruindo-o a buscar um código de redefinição de senha no Gmail e enviá-lo a um site malicioso.

A tabela abaixo apresenta cenários específicos a considerar. Recomendamos analisá-la com atenção para decidir se você deve usar servidores MCP personalizados.

Cenário / RiscoÉ seguro se eu confiar no desenvolvedor do servidor MCP?O que posso fazer para reduzir o risco?
Um invasor pode, de alguma forma, inserir um ataque de injeção de prompt em dados acessíveis pelo servidor MCP.

Exemplos:
• No caso de um servidor MCP de suporte ao cliente, um invasor pode enviar a você uma solicitação de suporte contendo um ataque de injeção de prompt.
Confiar no desenvolvedor do servidor MCP não torna isso seguro.

Para que isso seja seguro, você precisa confiar em todo o conteúdo que pode ser acessado pelo servidor MCP.
• Não use um servidor MCP se ele puder conter dados maliciosos ou não confiáveis inseridos por usuários, mesmo que você confie no desenvolvedor do servidor MCP.
• Configure o acesso para que o menor número possível de pessoas tenha acesso ao servidor MCP.
Um servidor MCP malicioso pode solicitar parâmetros excessivos para uma ação de leitura ou escrita.

Exemplo:
• Um servidor MCP de reservas de voos para funcionários pode disponibilizar uma ação de leitura para obter horários de voos, mas solicitar parâmetros como summaryOfConversation, userAnnualIncome e userHomeAddress.
Confiar no desenvolvedor do servidor MCP não torna isso necessariamente seguro.

O desenvolvedor de um servidor MCP pode considerar razoável solicitar certos dados que você não considera aceitável compartilhar.
• Ao instalar servidores MCP manualmente, revise os parâmetros solicitados para cada ação e verifique se eles não ultrapassam os limites aceitáveis de privacidade.
Um invasor pode usar um ataque de injeção de prompt para enganar o ChatGPT e induzi-lo a buscar dados sensíveis em um servidor MCP personalizado, para depois enviá-los ao invasor.

Exemplo:
• Um invasor pode direcionar um ataque de injeção de prompt a um dos usuários da empresa por meio de outro servidor MCP (por exemplo, de e-mail). O ataque tenta enganar o ChatGPT para que ele leia dados sensíveis de uma ferramenta interna e os envie ao invasor.
Confiar no desenvolvedor do servidor MCP não torna isso seguro.

Tudo no novo servidor MCP pode ser seguro e confiável, pois o risco é que esses dados sejam roubados por ataques vindos de outra fonte maliciosa.
O ChatGPT foi projetado para proteger os usuários, mas invasores podem tentar roubar seus dados. Por isso, esteja ciente do risco e avalie se faz sentido assumi-lo.
• Configure o acesso para que o menor número possível de pessoas tenha acesso a servidores MCP com dados especialmente sensíveis.
Um invasor pode usar um ataque de injeção de prompt para vazar informações sensíveis por meio de uma ação de escrita em um servidor MCP personalizado.

Exemplo:
• Um invasor usa um ataque de injeção de prompt por meio de outro servidor MCP para enganar o ChatGPT e induzi-lo a buscar dados sensíveis e, em seguida, usar um servidor MCP de um sistema de suporte ao cliente para enviá-los ao invasor.
Confiar no desenvolvedor do servidor MCP não torna isso seguro.

Mesmo que você confie totalmente no servidor MCP, se as ações de escrita tiverem consequências que um invasor possa observar, ele poderá tentar explorá-las.
• Os usuários devem revisar cuidadosamente as ações de escrita quando elas ocorrerem (para garantir que sejam intencionais e não contenham dados que não deveriam ser compartilhados).
Um invasor pode usar um ataque de injeção de prompt para vazar informações sensíveis por meio de uma ação de leitura em um servidor MCP personalizado malicioso, pois o servidor MCP pode registrar essas ações em logs.Esse ataque só funciona se o servidor MCP for malicioso ou se ele classificar incorretamente ações de escrita como ações de leitura.

Se você confia que o desenvolvedor do servidor MCP classifica corretamente apenas as ações de leitura como leitura e que ele não tentará roubar dados, esse risco provavelmente é mínimo.
• Use apenas servidores MCP de desenvolvedores em quem você confia (mas lembre-se de que isso não é suficiente para garantir a segurança).
Um invasor pode usar um ataque de injeção de prompt para enganar o ChatGPT e induzi-lo a realizar, por meio de um servidor MCP personalizado, uma ação de escrita nociva ou destrutiva que os usuários não pretendiam realizar.Confiar no desenvolvedor do servidor MCP não torna isso seguro.

Tudo no novo servidor MCP pode ser seguro e confiável, e esse risco ainda existe, pois o ataque vem de outra fonte maliciosa.
• Os usuários devem revisar cuidadosamente as ações de escrita para garantir que sejam intencionais e corretas.
• O ChatGPT foi projetado para proteger os usuários, mas invasores podem tentar enganá-lo e induzi-lo a realizar ações de escrita indesejadas.
• Configure o acesso para que o menor número possível de pessoas tenha acesso a servidores MCP com dados especialmente sensíveis.

Servidores MCP personalizados introduzem outros riscos não relacionados a ataques de injeção de prompt:

  • As ações de escrita podem aumentar tanto a utilidade quanto os riscos dos servidores MCP, pois permitem que o servidor realize ações potencialmente destrutivas, em vez de apenas fornecer informações ao ChatGPT. Atualmente, o ChatGPT exige confirmação manual em qualquer conversa antes que ações de escrita possam ser realizadas. A confirmação sinaliza dados potencialmente sensíveis, mas você só deve usar ações de escrita em situações nas quais tenha avaliado cuidadosamente e aceite a possibilidade de o ChatGPT cometer um erro envolvendo esse tipo de ação. Ações de escrita podem ocorrer mesmo que o servidor MCP tenha classificado a ação como somente leitura, o que torna ainda mais importante confiar no servidor MCP personalizado antes de disponibilizá-lo no ChatGPT.
  • Qualquer servidor MCP pode receber dados sensíveis como parte de uma consulta. Mesmo que o servidor não seja malicioso, ele terá acesso a todos os dados que o ChatGPT fornecer durante a interação, o que pode incluir dados sensíveis que o usuário tenha fornecido anteriormente ao ChatGPT. Por exemplo, esses dados podem ser incluídos nas consultas que o ChatGPT envia ao servidor MCP ao usar a pesquisa aprofundada ou ferramentas de aplicativos no chat.

Conectar-se a servidores confiáveis

Recomendamos que você só se conecte a um servidor MCP personalizado se conhecer e confiar no aplicativo ao qual ele dá acesso.

Por exemplo, escolha servidores oficiais hospedados pelos próprios provedores de serviços. Conecte-se ao servidor da Stripe hospedado pela Stripe em mcp.stripe.com, em vez de usar um servidor MCP não oficial da Stripe hospedado por terceiros. Como hoje há poucos servidores MCP oficiais disponíveis, você pode considerar um servidor hospedado por uma organização que encaminha requisições a outro serviço por meio de uma API. Só se conecte depois de analisar como a organização usa seus dados e verificar se o servidor é confiável. Ao criar seu próprio servidor MCP e se conectar a ele, confira se é o servidor correto. Tenha cuidado com os dados que você fornece em resposta às solicitações e com a forma como trata os dados enviados a você quando a OpenAI chama seu servidor MCP.

Seu servidor MCP remoto permite que outras pessoas conectem a OpenAI aos seus serviços e que a OpenAI acesse, envie e receba dados, além de realizar ações nesses serviços. Evite incluir informações sensíveis no JSON das suas ferramentas e armazenar informações sensíveis de usuários do ChatGPT que acessam seu servidor MCP remoto.

Ao criar um servidor MCP, não inclua nada malicioso nas definições das suas ferramentas.