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
Theme

Como criar servidores MCP para plugins e integrações de API

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

O Model Context Protocol (MCP) é um protocolo aberto que vem se tornando o padrão do setor para ampliar os recursos dos modelos de IA com novas ferramentas e fontes de conhecimento. Com servidores MCP remotos, é possível conectar modelos pela internet a novas fontes de dados e funcionalidades.

Neste guia, você vai criar um servidor MCP remoto que lê dados de uma fonte privada (um armazenamento vetorial) e os disponibiliza por meio de um plugin no ChatGPT e no Codex, dos recursos de pesquisa aprofundada e conhecimento da empresa no ChatGPT e da API.

Observação: para criar um plugin com um servidor MCP, comece pela documentação de plugins: Início rápido, Crie seu servidor MCP, Conecte e teste seu plugin e Autenticação. Se o servidor MCP dispensar uma interface de usuário, você pode disponibilizar as ferramentas sem incluir recursos de interface.

Configure uma fonte de dados

Um servidor MCP remoto pode usar dados de qualquer fonte. Para simplificar, vamos usar armazenamentos vetoriais da 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 no painel. Também pode criar armazenamentos vetoriais e enviar arquivos pela API. Siga o guia de armazenamento vetorial para configurar um armazenamento e enviar um arquivo para ele.

Anote o ID exclusivo do armazenamento vetorial para usar no exemplo a seguir.

Configuração do armazenamento vetorial

Crie um servidor MCP

Agora, crie um servidor MCP remoto que faça buscas no armazenamento vetorial e retorne o conteúdo de um documento a partir do ID do arquivo.

Neste exemplo, vamos criar o servidor MCP com Python e FastMCP. No final desta seção, você encontra a implementação completa do servidor e as instruções para executá-lo em um ambiente de desenvolvimento no navegador.

Há outros frameworks para criar servidores MCP em diversas linguagens de programação. Independentemente do framework escolhido, as definições das ferramentas do servidor precisam seguir o formato descrito aqui.

Para funcionar com os recursos de pesquisa aprofundada e conhecimento da empresa do ChatGPT, seu servidor MCP deve implementar duas ferramentas somente leitura, search e fetch, seguindo o schema descrito em Compatibilidade com o conhecimento da empresa. A mesma interface é útil para fluxos de pesquisa pela API.

Declare um schema de saída para cada ferramenta para que os clientes possam validar a estrutura do resultado. No FastMCP, modelos de retorno tipados podem gerar esse schema automaticamente. O exemplo abaixo usa os mesmos modelos para passar output_schema de forma explícita.

A ferramenta search recebe a consulta do usuário e retorna uma lista de resultados relevantes encontrados na fonte de dados do servidor MCP.

Argumentos:

Uma única string com a consulta.

Retorno:

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

  • id - ID exclusivo do documento ou item encontrado na busca.
  • title - título legível para o usuário.
  • 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 de conteúdo para garantir 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 recupera o conteúdo completo de um documento ou item encontrado na busca.

Argumentos:

Uma string que identifica de forma exclusiva o documento encontrado.

Retorno:

Um único objeto com as seguintes propriedades:

  • id - ID exclusivo do documento ou item encontrado na busca.
  • title - string com o título do item encontrado.
  • text - texto completo do documento ou item.
  • url - URL do documento ou item encontrado. Serve para citar recursos específicos em uma pesquisa.
  • metadata - dados opcionais sobre o resultado, organizados em pares de chave e valor.

No MCP, retorne esse objeto como structuredContent e inclua o mesmo valor como uma string codificada em JSON no array de conteúdo para garantir 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\"}}"
    }
  ]
}

Como funcionam as citações

Tanto nos resultados de search quanto nas respostas de fetch, o ChatGPT só cria metadados de citação quando url é uma string não vazia. Se um resultado tiver title, mas não tiver uma url utilizável, o ChatGPT o mantém como uma saída comum da ferramenta, sem criar uma citação vazia. Para que um resultado possa ser citado, retorne sua url canônica.

Por exemplo, o ChatGPT pode chamar search com a seguinte consulta:

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

O servidor MCP pode responder com um resultado que inclua 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\"}]}"
    }
  ]
}

Nessa resposta, o campo url está preenchido, o que permite associar metadados de citação ao resultado. A consulta por si só não aciona o processamento de citações. Se o resultado omitir url ou fornecer um valor vazio ou de um tipo diferente de string, o ChatGPT o mantém como uma saída comum da ferramenta.

Exemplo de servidor

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

Servidor MCP de exemplo no Replit

Crie sua própria cópia do servidor de exemplo no Replit para testá-lo em execução.

Você também encontra abaixo a implementação completa das ferramentas search e fetch em FastMCP.

Teste e conecte seu servidor MCP

Você pode testar seu servidor MCP com gpt-6.1-sol no painel de prompts. Crie um prompt ou edite um existente e adicione uma nova ferramenta MCP à configuração do prompt. Este exemplo de compatibilidade disponibiliza 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 alterar dados ou executar outras ações com consequências importantes.

Se você estiver testando esse servidor como parte de um plugin, siga as instruções em Conecte e teste seu plugin.

Configuração de prompts

Depois de configurar o servidor MCP, você pode usar a interface de prompts para conversar com um modelo que tenha acesso ao servidor.

Chat na interface de prompts

Para testar o servidor MCP diretamente pela Responses API, envie 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-6.1-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"
    }
  ]
}'

Configure a autenticação

Ao criar um servidor MCP remoto personalizado, use a autorização e a autenticação para proteger seus dados. Para registrar clientes, recomendamos usar OAuth com documentos de metadados de ID do cliente (CIMD) quando o servidor de autorização oferecer suporte a CIMD e o criador do plugin escolher essa opção. O ChatGPT oferece suporte a CIMD com troca de tokens para clientes públicos (none) ou troca de tokens com uma declaração assinada pelo cliente (private_key_jwt). O registro dinâmico de clientes continua disponível quando configurado. Para consultar os requisitos de autenticação dos plugins, veja 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 plugin, os usuários do seu espaço de trabalho passarão pelo fluxo OAuth do seu serviço.

Conecte o servidor no ChatGPT

  1. Acesse Plug-ins do ChatGPT, selecione o botão com o sinal de mais e depois Adicionar servidor MCP personalizado.
  2. Informe a URL do servidor e os detalhes de autenticação. Leia o aviso sobre os riscos e selecione Entendo e quero continuar. Em seguida, selecione Criar como plugin.
  3. Instale o plugin e teste-o executando prompts no chat e na pesquisa aprofundada.

Para ver as etapas de configuração em detalhes, consulte Conecte e teste seu plugin.

Riscos e segurança

Com servidores MCP personalizados, você pode conectar seu espaço de trabalho do ChatGPT a aplicativos externos. Isso permite que o ChatGPT acesse, envie e receba dados nesses aplicativos. A OpenAI não desenvolve nem verifica servidores MCP personalizados. Esses serviços são de terceiros e estão sujeitos aos termos e condições dos respectivos provedores.

Se encontrar um servidor MCP malicioso, denuncie-o pelo e-mail security@openai.com.

Riscos relacionados à injeção de prompt

A injeção de prompt é um ataque em que alguém insere instruções maliciosas em conteúdo que um de nossos modelos provavelmente encontrará, como uma página da internet, para tentar alterar o comportamento previsto do ChatGPT. Se o modelo seguir essas instruções, poderá executar ações que nem o usuário nem o desenvolvedor pretendiam, inclusive enviar dados privados para um destino externo.

Por exemplo, você pode pedir ao ChatGPT que consulte seu calendário e seus e-mails recentes para encontrar um restaurante para um jantar em grupo. Durante a pesquisa, ele pode encontrar um comentário malicioso que o instrua a buscar um código de redefinição de senha no Gmail e enviá-lo a um site malicioso. O comentário é um conteúdo criado para induzir o agente a executar ações não solicitadas.

A tabela a seguir apresenta cenários específicos a considerar. Recomendamos que você os analise com atenção ao decidir se deve usar servidores MCP personalizados.

Cenário ou risco É seguro se eu confiar no desenvolvedor do servidor MCP? O que posso fazer para reduzir o risco?
Um invasor pode inserir uma injeção de prompt nos dados acessíveis pelo servidor MCP.

Exemplos:
• Se o servidor MCP for usado no atendimento ao cliente, um invasor poderá enviar a você uma solicitação de suporte que contenha uma injeção de prompt.
Confiar no desenvolvedor do servidor MCP não garante a segurança nesse cenário.

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

Exemplo:
• Um servidor MCP para reservar voos de funcionários pode disponibilizar uma ação de leitura para consultar horários de voos e solicitar parâmetros como summaryOfConversation, userAnnualIncome e userHomeAddress.
Confiar no desenvolvedor do servidor MCP não garante, por si só, a segurança nesse cenário.

O desenvolvedor pode considerar razoável solicitar 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 a coleta de dados respeita sua privacidade.
Um invasor pode usar uma injeção de prompt para induzir o ChatGPT a buscar dados confidenciais em um servidor MCP personalizado e enviá-los ao invasor.

Exemplo:
• Por meio de outro servidor MCP, como o de e-mail, um invasor pode enviar a um usuário da empresa uma injeção de prompt que tente induzir o ChatGPT a ler dados confidenciais de uma ferramenta interna e enviá-los ao invasor.
Confiar no desenvolvedor do servidor MCP não garante a segurança nesse cenário.

Todo o conteúdo do novo servidor MCP pode ser seguro e confiável. O risco é que um ataque vindo de outra fonte maliciosa roube esses dados.
• O ChatGPT foi projetado para proteger os usuários, mas invasores podem tentar roubar seus dados. Leve esse risco em conta e avalie se faz sentido assumi-lo.
• Restrinja ao menor número possível de pessoas o acesso a servidores MCP com dados especialmente confidenciais.
Um invasor pode usar uma injeção de prompt para vazar informações confidenciais por meio de uma ação de gravação em um servidor MCP personalizado.

Exemplo:
• Por meio de outro servidor MCP, um invasor usa uma injeção de prompt para induzir o ChatGPT a buscar dados confidenciais e depois usar o servidor MCP de um sistema de atendimento ao cliente para enviá-los ao invasor.
Confiar no desenvolvedor do servidor MCP não garante a segurança nesse cenário.

Mesmo que você confie plenamente no servidor MCP, um invasor pode tentar explorar qualquer efeito observável das ações de gravação.
• Os usuários devem revisar com atenção as ações de gravação no momento em que elas ocorrem para confirmar que são intencionais e não incluem dados que não deveriam ser compartilhados.
Um invasor pode usar uma injeção de prompt para vazar informações confidenciais por meio de uma ação de leitura em um servidor MCP personalizado malicioso, pois o servidor pode registrar essas ações. Esse ataque só funciona se o servidor MCP for malicioso ou se classificar incorretamente ações de gravação como ações de leitura.

Se você confia que o desenvolvedor só classificará como leitura as ações que realmente forem de leitura e que não tentará roubar dados, o risco provavelmente será mínimo.
• Use apenas servidores MCP de desenvolvedores em quem você confia, lembrando que isso, por si só, não garante a segurança.
Um invasor pode usar uma injeção de prompt para induzir o ChatGPT a executar, por meio de um servidor MCP personalizado, uma ação de gravação prejudicial ou destrutiva que os usuários não pretendiam realizar. Confiar no desenvolvedor do servidor MCP não garante a segurança nesse cenário.

Mesmo que todo o conteúdo do novo servidor MCP seja seguro e confiável, o risco persiste porque o ataque vem de outra fonte maliciosa.
• Os usuários devem revisar com atenção as ações de gravação para confirmar que são intencionais e estão corretas.
• O ChatGPT foi projetado para proteger os usuários, mas invasores podem tentar induzi-lo a executar ações de gravação não solicitadas.
• Restrinja ao menor número possível de pessoas o acesso a servidores MCP com dados especialmente confidenciais.

Outros riscos além da injeção de prompt

Servidores MCP personalizados também apresentam riscos que não dependem de ataques de injeção de prompt:

  • As ações de gravação podem aumentar tanto a utilidade quanto os riscos dos servidores MCP, pois permitem que o servidor execute ações potencialmente destrutivas, além de fornecer informações ao ChatGPT. Atualmente, em qualquer conversa, o ChatGPT exige confirmação manual antes de executar ações de gravação. A solicitação de confirmação destaca dados potencialmente confidenciais. Use ações de gravação apenas depois de avaliar com cuidado a possibilidade de o ChatGPT cometer um erro ao executá-las e concluir que aceita esse risco. Uma ação de gravação pode ocorrer mesmo que o servidor MCP a tenha marcado como somente leitura. Por isso, é ainda mais importante verificar se você confia no servidor MCP personalizado antes de disponibilizá-lo no ChatGPT.
  • Qualquer servidor MCP pode receber dados confidenciais em uma consulta. Mesmo que o servidor não seja malicioso, ele terá acesso a todos os dados que o ChatGPT enviar durante a interação. Isso pode incluir informações confidenciais que o usuário forneceu anteriormente ao ChatGPT. Esses dados podem aparecer, por exemplo, nas consultas que o ChatGPT envia ao servidor MCP ao usar a pesquisa aprofundada ou ferramentas de aplicativos de chat.

Conexão com servidores confiáveis

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

Por exemplo, escolha servidores oficiais hospedados pelos próprios provedores dos serviços. No caso da Stripe, conecte-se ao servidor hospedado pela própria Stripe em mcp.stripe.com em vez de usar um servidor MCP não oficial hospedado por terceiros. Como ainda existem poucos servidores MCP oficiais, você pode considerar usar um servidor hospedado por uma organização que encaminhe requisições a outro serviço por meio de uma API. Antes de se conectar, analise como a organização usa seus dados e verifique se o servidor é confiável. Ao criar seu próprio servidor MCP e se conectar a ele, confira se está usando o servidor correto. Tenha cuidado com os dados que você fornece em resposta a requisições e com a forma como trata os dados que recebe quando a OpenAI chama seu servidor MCP.

Seu servidor MCP remoto permite que outras pessoas conectem a OpenAI aos seus serviços. Assim, a OpenAI pode acessar, enviar e receber dados, além de executar ações nesses serviços. Evite incluir informações confidenciais no JSON das ferramentas ou armazenar informações confidenciais dos usuários do ChatGPT que acessam seu servidor MCP remoto.

Ao criar um servidor MCP, não inclua conteúdo malicioso nas definições das ferramentas.