For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal

Crear servidores MCP para complementos e integraciones con la API

Crea un servidor MCP para usarlo con complementos, investigación profunda o integraciones con la API.

Model Context Protocol (MCP) es un protocolo abierto que se está convirtiendo en el estándar de la industria para ampliar los modelos de IA con herramientas y conocimientos adicionales. Los servidores MCP remotos permiten conectar modelos por Internet con nuevas fuentes de datos y capacidades.

En esta guía, veremos cómo crear un servidor MCP remoto que lee datos de una fuente privada (un almacén de vectores) y los pone a disposición mediante un complemento en ChatGPT y Codex, mediante la investigación profunda y el conocimiento de la empresa de ChatGPT, y a través de la API.

Nota: para crear un complemento con un servidor MCP, comienza con la documentación de complementos: Inicio rápido, Crea tu servidor MCP, Conecta y prueba tu complemento y Autenticación. Si tu servidor MCP no necesita una interfaz de usuario, puedes exponer herramientas sin recursos de interfaz de usuario.

Configurar una fuente de datos

Puedes usar datos de cualquier fuente para alimentar un servidor MCP remoto, pero, para simplificar, usaremos almacenes de vectores de la API de OpenAI. Comienza por subir un documento PDF a un nuevo almacén de vectores; como ejemplo, puedes usar este libro sobre gatos del siglo XIX que es de dominio público.

Puedes subir archivos y crear un almacén de vectores aquí, en el panel, o hacerlo mediante la API. Sigue la guía de almacenes de vectores para configurar uno y subirle un archivo.

Anota el ID único del almacén de vectores para usarlo en el siguiente ejemplo.

configuración del almacén de vectores

Crear un servidor MCP

Ahora, crearemos un servidor MCP remoto que realice búsquedas en nuestro almacén de vectores y pueda devolver el contenido de los documentos correspondientes a archivos con un ID determinado.

En este ejemplo, crearemos nuestro servidor MCP con Python y FastMCP. Al final de esta sección encontrarás una implementación completa del servidor, junto con instrucciones para ejecutarlo en un entorno de desarrollo basado en el navegador.

Ten en cuenta que existen otros frameworks para servidores MCP que puedes usar en distintos lenguajes de programación. Sin embargo, independientemente del framework que uses, las definiciones de herramientas de tu servidor deberán ajustarse a la estructura que se describe aquí.

Para funcionar con la investigación profunda y el conocimiento de la empresa de ChatGPT, tu servidor MCP debe implementar dos herramientas de solo lectura: search y fetch, usando el esquema de compatibilidad de Compatibilidad con el conocimiento de la empresa. La misma interfaz es útil para flujos de trabajo de investigación mediante la API.

Declara un esquema de salida para cada herramienta, de modo que los clientes puedan validar la estructura del resultado. En FastMCP, los modelos de retorno tipados pueden generar este esquema automáticamente; el ejemplo siguiente pasa output_schema de forma explícita a partir de esos mismos modelos.

Herramienta search

La herramienta search se encarga de devolver una lista de resultados de búsqueda relevantes de la fuente de datos de tu servidor MCP, a partir de la consulta de un usuario.

Argumentos:

Una sola cadena de consulta.

Devuelve:

Un objeto con una sola clave, results, cuyo valor es un arreglo de objetos de resultado. Cada objeto de resultado debe incluir:

  • id - un ID único para el documento o elemento del resultado de búsqueda
  • title - un título legible para las personas.
  • url - una URL canónica para las citas.

En MCP, devuelve este objeto como structuredContent e incluye el mismo valor como una cadena codificada en JSON en el arreglo content para mantener la compatibilidad.

La respuesta final de la herramienta debe tener esta estructura:

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

Herramienta fetch

La herramienta fetch se usa para recuperar el contenido completo de un documento o elemento de los resultados de búsqueda.

Argumentos:

Una cadena que identifica de forma única el documento de la búsqueda.

Devuelve:

Un solo objeto con las siguientes propiedades:

  • id - un ID único para el documento o elemento del resultado de búsqueda
  • title - un título de tipo cadena para el elemento del resultado de búsqueda
  • text - el texto completo del documento o elemento
  • url - una URL del documento o elemento del resultado de búsqueda. Es útil para citar recursos específicos en una investigación.
  • metadata - datos opcionales sobre el resultado en pares clave/valor

En MCP, devuelve este objeto como structuredContent e incluye el mismo valor como una cadena codificada en JSON en el arreglo content para mantener la compatibilidad.

La respuesta final de la herramienta debe tener esta estructura:

{
  "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\"}}"
    }
  ]
}

Funcionamiento de las citas

Tanto para los resultados de search como para las respuestas de fetch, ChatGPT crea metadatos de citas solo cuando url es una cadena no vacía. Un resultado con un title pero sin una url utilizable sigue siendo una salida normal de la herramienta en lugar de convertirse en una cita vacía. Para que un resultado se pueda citar, devuelve su url canónica.

Por ejemplo, ChatGPT podría llamar a search con:

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

El servidor MCP puede responder con un resultado que incluya una 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\"}]}"
    }
  ]
}

En esta respuesta, el campo url tiene un valor, lo que permite que se generen metadatos de citas para el resultado. La consulta por sí sola no activa el procesamiento de citas. Si el resultado omite url o proporciona un valor vacío o de un tipo distinto de cadena, ChatGPT conserva el resultado como una salida normal de la herramienta.

Ejemplo de servidor

Puedes probar este servidor MCP de ejemplo en un entorno de desarrollo basado en el navegador. Configura el ejemplo con tus propias credenciales de API y la información de tu almacén de vectores.

Servidor MCP de ejemplo en Replit

Crea tu propia versión del servidor de ejemplo en Replit para probarlo en vivo.

Para facilitar la consulta, a continuación también se incluye una implementación completa de las herramientas search y fetch en FastMCP.

Probar y conectar tu servidor MCP

Puedes probar tu servidor MCP con un modelo de investigación profunda en el panel de prompts. Crea un prompt nuevo o edita uno existente y agrega una nueva herramienta MCP a la configuración del prompt. Este ejemplo de compatibilidad solo expone las herramientas de solo lectura search y fetch, por lo que su solicitud a la API omite la aprobación para esas herramientas. Mantén habilitada la aprobación para las herramientas que puedan modificar datos o realizar otras acciones con consecuencias importantes.

Si estás probando este servidor como parte de un complemento, sigue Conecta y prueba tu complemento.

configuración de prompts

Una vez que hayas configurado tu servidor MCP, puedes conversar con un modelo que lo use desde la interfaz de Prompts.

chat de prompts

Puedes probar el servidor MCP directamente con la API Responses mediante una solicitud 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"
    }
  ]
}'

Gestionar la autenticación

Al crear un servidor MCP remoto personalizado, la autorización y la autenticación te ayudan a proteger tus datos. Recomendamos usar OAuth con documentos de metadatos de ID de cliente para registrar clientes cuando tu servidor de autorización sea compatible con CIMD y quien cree el complemento elija esta opción. ChatGPT admite CIMD con intercambio de tokens para clientes públicos (none) o intercambio de tokens mediante una aserción de cliente firmada (private_key_jwt). El registro dinámico de clientes sigue siendo compatible cuando está configurado. Para conocer los requisitos de autenticación de los complementos, consulta Autenticación. Para conocer los detalles del protocolo, lee la guía del usuario de MCP o la especificación de autorización.

Si conectas tu servidor MCP remoto personalizado mediante un complemento, los usuarios de tu espacio de trabajo tendrán un flujo de OAuth para conectarse a tu servicio.

Conectar en ChatGPT

  1. En ChatGPT, abre Configuración → Seguridad e inicio de sesión y activa el Modo de desarrollador.
  2. Ve a Complementos de ChatGPT, selecciona el botón con el signo más y conecta la URL de tu servidor en modo de desarrollador.
  3. Prueba tu complemento ejecutando prompts en el chat y en investigación profunda.

Para ver los pasos de configuración detallados, consulta Conectar y probar tu complemento.

Riesgos y seguridad

Los servidores MCP personalizados te permiten conectar tu espacio de trabajo de ChatGPT con aplicaciones externas, lo que permite a ChatGPT acceder a los datos de estas aplicaciones, enviarlos y recibirlos. Ten en cuenta que OpenAI no desarrolla ni verifica los servidores MCP personalizados; son servicios de terceros sujetos a sus propios términos y condiciones.

Si encuentras un servidor MCP malicioso, repórtalo a security@openai.com.

La inyección de prompts es un tipo de ataque en el que un atacante incorpora instrucciones maliciosas en contenido que alguno de nuestros modelos probablemente encuentre, como una página web, con la intención de que esas instrucciones anulen el comportamiento previsto de ChatGPT. Si el modelo obedece las instrucciones inyectadas, puede realizar acciones que el usuario y el desarrollador nunca pretendieron, incluido el envío de datos privados a un destino externo.

Por ejemplo, podrías pedirle a ChatGPT que encuentre un restaurante para una cena en grupo consultando tu calendario y tus correos recientes. Durante la investigación, podría encontrar un comentario malicioso, es decir, contenido dañino diseñado para engañar al agente y hacer que realice acciones no deseadas, que le indique obtener un código de restablecimiento de contraseña de Gmail y enviarlo a un sitio web malicioso.

A continuación se presenta una tabla con situaciones específicas que debes considerar. Recomendamos revisarla con atención para tomar una decisión informada sobre el uso de MCP personalizados.

Situación / Riesgo¿Es seguro si confío en el desarrollador del MCP?¿Qué puedo hacer para reducir el riesgo?
Un atacante podría introducir de alguna forma un ataque de inyección de prompts en los datos accesibles mediante el MCP.

Ejemplos:
• En el caso de un MCP de atención al cliente, un atacante podría enviarte una solicitud de atención al cliente con un ataque de inyección de prompts.
Confiar en el desarrollador de un MCP no hace que esto sea seguro.

Para que lo sea, debes confiar en todo el contenido al que se pueda acceder dentro del MCP.
• No uses un MCP si pudiera contener entradas de usuario maliciosas o no confiables, incluso si confías en su desarrollador.
• Configura el acceso para reducir al mínimo la cantidad de personas que pueden acceder al MCP.
Un MCP malicioso podría solicitar parámetros excesivos para una acción de lectura o escritura.

Ejemplo:
• Un MCP para reservar vuelos de empleados podría ofrecer una acción de lectura para obtener los horarios de los vuelos, pero solicitar parámetros como summaryOfConversation, userAnnualIncome, userHomeAddress.
Confiar en el desarrollador de un MCP no necesariamente hace que esto sea seguro.

El desarrollador de un MCP podría considerar razonable solicitar ciertos datos que tú no consideras aceptable compartir.
• Al instalar servidores MCP manualmente, revisa los parámetros solicitados para cada acción y asegúrate de que no se excedan los límites de privacidad.
Un atacante podría usar un ataque de inyección de prompts para engañar a ChatGPT y hacer que obtenga datos sensibles de un MCP personalizado para luego enviárselos al atacante.

Ejemplo:
• Un atacante podría hacer llegar un ataque de inyección de prompts a uno de los usuarios de la empresa mediante otro MCP (por ejemplo, de correo electrónico). El ataque intentaría engañar a ChatGPT para que lea datos sensibles de una herramienta interna y se los envíe al atacante.
Confiar en el desarrollador de un MCP no hace que esto sea seguro.

Todo lo que contiene el nuevo MCP podría ser seguro y confiable, ya que el riesgo es que estos datos sean robados mediante ataques provenientes de otra fuente maliciosa.
ChatGPT está diseñado para proteger a los usuarios, pero los atacantes podrían intentar robar tus datos. Ten presente el riesgo y considera si tiene sentido asumirlo.
• Configura el acceso para reducir al mínimo la cantidad de personas que pueden acceder a MCP con datos particularmente sensibles.
Un atacante podría usar un ataque de inyección de prompts para filtrar información sensible mediante una acción de escritura en un MCP personalizado.

Ejemplo:
• Un atacante usa un ataque de inyección de prompts mediante otro MCP para engañar a ChatGPT y hacer que obtenga datos sensibles y luego use un MCP de un sistema de atención al cliente para enviárselos al atacante.
Confiar en el desarrollador de un MCP no hace que esto sea seguro.

Incluso si confías plenamente en el MCP, un atacante podría intentar aprovechar cualquier consecuencia de las acciones de escritura que pueda observar.
• Los usuarios deben revisar cuidadosamente las acciones de escritura cuando ocurran (para asegurarse de que sean las que pretendían realizar y de que no contengan datos que no deban compartirse).
Un atacante podría usar un ataque de inyección de prompts para filtrar información sensible mediante una acción de lectura en un MCP personalizado malicioso, ya que el MCP puede registrar estas acciones.Este ataque solo funciona si el MCP es malicioso o si marca incorrectamente acciones de escritura como acciones de lectura.

Si confías en que el desarrollador del MCP solo marcará como de lectura las acciones que realmente lo sean y en que no intentará robar datos, es probable que este riesgo sea mínimo.
• Usa únicamente MCP de desarrolladores en los que confíes (aunque ten en cuenta que esto no basta para que su uso sea seguro).
Un atacante podría usar un ataque de inyección de prompts para engañar a ChatGPT y hacer que realice, mediante un MCP personalizado, una acción de escritura dañina o destructiva que los usuarios no pretendían realizar.Confiar en el desarrollador de un MCP no hace que esto sea seguro.

Todo lo que contiene el nuevo MCP podría ser seguro y confiable, y aun así este riesgo persiste porque el ataque proviene de otra fuente maliciosa.
• Los usuarios deben revisar cuidadosamente las acciones de escritura para asegurarse de que sean las que pretendían realizar y de que sean correctas.
• ChatGPT está diseñado para proteger a los usuarios, pero los atacantes podrían intentar engañarlo para que realice acciones de escritura no deseadas.
• Configura el acceso para reducir al mínimo la cantidad de personas que pueden acceder a MCP con datos particularmente sensibles.

Los MCP personalizados introducen otros riesgos que no están relacionados con los ataques de inyección de prompts:

  • Las acciones de escritura pueden aumentar tanto la utilidad como los riesgos de los servidores MCP, porque permiten que el servidor realice acciones potencialmente destructivas en lugar de limitarse a devolver información a ChatGPT. Actualmente, ChatGPT requiere una confirmación manual en cualquier conversación antes de realizar acciones de escritura. La confirmación señalará los datos potencialmente sensibles, pero solo debes usar acciones de escritura en situaciones en las que hayas considerado cuidadosamente y estés dispuesto a aceptar la posibilidad de que ChatGPT cometa un error al realizarlas. Es posible que se realicen acciones de escritura incluso si el servidor MCP las ha etiquetado como de solo lectura, por lo que es aún más importante que confíes en el servidor MCP personalizado antes de implementarlo en ChatGPT.
  • Cualquier servidor MCP puede recibir datos sensibles como parte de las consultas. Incluso si el servidor no es malicioso, tendrá acceso a todos los datos que ChatGPT proporcione durante la interacción, lo que podría incluir datos sensibles que el usuario haya compartido antes con ChatGPT. Por ejemplo, esos datos podrían incluirse en las consultas que ChatGPT envíe al servidor MCP al usar investigación profunda o herramientas de apps en el chat.

Conectarse a servidores de confianza

Recomendamos que no te conectes a un servidor MCP personalizado a menos que conozcas la aplicación subyacente y confíes en ella.

Por ejemplo, elige servidores oficiales alojados por los propios proveedores de servicios. Conéctate al servidor de Stripe alojado por Stripe en mcp.stripe.com, en lugar de usar un servidor MCP de Stripe no oficial alojado por un tercero. Como actualmente hay pocos servidores MCP oficiales disponibles, podrías considerar un servidor alojado por una organización que reenvíe solicitudes a otro servicio mediante una API. Conéctate solo después de revisar cómo usa tus datos la organización y verificar que puedes confiar en el servidor. Al crear tu propio servidor MCP y conectarte a él, comprueba que sea el servidor correcto. Ten cuidado con los datos que proporcionas en respuesta a las solicitudes y con la forma en que tratas los datos que recibes cuando OpenAI llama a tu servidor MCP.

Tu servidor MCP remoto permite que otros conecten OpenAI con tus servicios y que OpenAI acceda a los datos, los envíe y los reciba, y realice acciones en esos servicios. Evita incluir información sensible en el JSON de tus herramientas y almacenar información sensible de los usuarios de ChatGPT que accedan a tu servidor MCP remoto.

Al crear un servidor MCP, no incluyas contenido malicioso en las definiciones de tus herramientas.