Model Context Protocol (MCP) es un protocolo abierto que se está convirtiendo en el estándar de la industria para ampliar las capacidades de los modelos de IA con herramientas y conocimientos adicionales. Los servidores MCP remotos permiten conectar los modelos por internet con nuevas fuentes de datos y capacidades.
En esta guía aprenderás a crear un servidor MCP remoto que lee datos de una fuente privada (un almacén de vectores) y permite acceder a ellos mediante un complemento en ChatGPT y Codex, mediante la investigación profunda y el conocimiento de la empresa en ChatGPT, y a través de la API.
Nota: para crear un complemento con un servidor MCP, empieza por la documentación sobre 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.
Configura una fuente de datos
Puedes usar datos de cualquier fuente en un servidor MCP remoto. Para simplificar el ejemplo, usaremos almacenes de vectores en la API de OpenAI. Primero, sube un documento PDF a un almacén de vectores nuevo. Puedes usar este libro de dominio público del siglo XIX sobre gatos como ejemplo.
Puedes subir archivos y crear un almacén de vectores desde el panel. También puedes crear almacenes de vectores y subir archivos mediante la API. Sigue la guía de almacenes de vectores para configurar uno y subir un archivo.
Anota el ID único del almacén de vectores para usarlo en el siguiente ejemplo.

Crea un servidor MCP
Ahora crearemos un servidor MCP remoto que hará búsquedas en nuestro almacén de vectores y podrá devolver el contenido de un documento a partir del ID del archivo.
En este ejemplo crearemos el servidor MCP con Python y FastMCP. Al final de esta sección encontrarás la implementación completa del servidor y las instrucciones para ejecutarlo en un entorno de desarrollo en el navegador.
También puedes usar otros frameworks para crear servidores MCP en distintos lenguajes de programación. Sea cual sea el framework que elijas, las definiciones de las herramientas de tu servidor deben seguir la estructura que se describe aquí.
Para que funcione con la investigación profunda y el conocimiento de la empresa en ChatGPT, tu servidor MCP debe implementar dos herramientas de solo lectura: search y fetch. Usa el esquema de compatibilidad descrito en Compatibilidad con el conocimiento de la empresa.
La misma interfaz sirve para los flujos de trabajo de investigación que usan la API.
Declara un esquema de salida para cada herramienta para que los clientes puedan validar la estructura del resultado. En FastMCP, los modelos de retorno tipados pueden generar este esquema automáticamente. En el siguiente ejemplo, se pasa output_schema de forma explícita a partir de esos mismos modelos.
Herramienta search
La herramienta search recibe la consulta de un usuario y devuelve una lista de resultados relevantes de la fuente de datos de tu servidor MCP.
Argumentos:
Una sola cadena de texto con la consulta.
Devuelve:
Un objeto con una sola clave, results, cuyo valor es un arreglo de objetos de resultado. Cada objeto debe incluir lo siguiente:
id: ID único del documento o elemento encontrado.title: título legible para las personas.url: URL canónica para citar el resultado.
En MCP, devuelve este objeto como structuredContent e incluye el mismo valor como una cadena codificada en JSON en el arreglo de contenido 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 permite recuperar el contenido completo de un documento o elemento encontrado en una búsqueda.
Argumentos:
Una cadena de texto con el identificador único del documento encontrado.
Devuelve:
Un solo objeto con las siguientes propiedades:
id: ID único del documento o elemento encontrado.title: cadena de texto con el título del elemento encontrado.text: texto completo del documento o elemento.url: URL del documento o elemento encontrado. Sirve para citar recursos específicos en una investigación.metadata: pares opcionales de clave y valor con datos sobre el resultado.
En MCP, devuelve este objeto como structuredContent e incluye el mismo valor como una cadena codificada en JSON en el arreglo de contenido 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\"}}"
}
]
}
Cómo se generan las citas
Tanto para los resultados de search como para las respuestas de fetch, ChatGPT solo crea metadatos de cita cuando url es una cadena no vacía. Si un resultado tiene title pero carece de una url utilizable, ChatGPT lo conserva como una salida normal de la herramienta sin generar una cita vacía. Para que se pueda citar un resultado, devuelve su url canónica.
Por ejemplo, ChatGPT podría llamar a search con esta consulta:
{ "query": "What is the quarterly plan?" }
El servidor MCP puede devolver un resultado con 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 que permite generar metadatos de cita 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 en el navegador. Configura el ejemplo con tus propias credenciales de la API y los datos de tu almacén de vectores.
Crea tu propia copia del servidor de ejemplo en Replit para probarlo en línea.
Aquí también puedes consultar la implementación completa de las herramientas search y fetch en FastMCP.
Prueba y conecta tu servidor MCP
Puedes probar tu servidor MCP con gpt-6.1-sol en el panel de prompts. Crea un prompt o edita uno existente y agrega una 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 la solicitud a la API omite la aprobación para esas herramientas. Mantén activada 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 las instrucciones de Conecta y prueba tu complemento.

Una vez que hayas configurado tu servidor MCP, podrás conversar desde la interfaz de prompts con un modelo que use el servidor.

Puedes probar el servidor MCP directamente con la Responses API 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-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"
}
]
}'Gestiona la autenticación
Al crear un servidor MCP remoto personalizado, puedes proteger tus datos mediante la autorización y la autenticación. Para registrar clientes, recomendamos usar OAuth con documentos de metadatos de ID de cliente cuando tu servidor de autorización admita CIMD y quien cree el complemento elija esa opción. ChatGPT admite CIMD con intercambio de tokens para clientes públicos (none) o con intercambio de tokens mediante una aserción firmada del cliente (private_key_jwt). El registro dinámico de clientes sigue disponible si se configura. Para conocer los requisitos de autenticación de los complementos, consulta Autenticación. Para obtener detalles del protocolo, consulta la guía de 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 accederán a tu servicio mediante un flujo de OAuth.
Conecta el servidor en ChatGPT
- Ve a Complementos de ChatGPT, selecciona el botón con el signo más y luego Agregar servidor MCP personalizado.
- Ingresa la URL del servidor y los datos de autenticación. Lee la advertencia sobre los riesgos y selecciona Entiendo y quiero continuar y luego Crear como complemento.
- Instala tu complemento y pruébalo con prompts en el chat y en la investigación profunda.
Para ver los pasos de configuración en detalle, consulta Conecta y prueba tu complemento.
Riesgos y seguridad
Los servidores MCP personalizados te permiten conectar tu Espacio de trabajo de ChatGPT con aplicaciones externas para que ChatGPT pueda acceder a los datos de esas 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.
Riesgos relacionados con la inyección de prompts
La inyección de prompts es un tipo de ataque en el que alguien inserta instrucciones maliciosas en contenido que probablemente encuentre uno de nuestros modelos, como una página web, para que esas instrucciones alteren el comportamiento previsto de ChatGPT. Si el modelo obedece las instrucciones inyectadas, puede realizar acciones que ni el usuario ni el desarrollador tenían previstas, como enviar datos privados a un destino externo.
Por ejemplo, podrías pedirle a ChatGPT que consulte tu calendario y tus correos recientes para buscar un restaurante para una cena en grupo. Durante la búsqueda, podría encontrar un comentario malicioso diseñado para engañar al agente y hacer que realice acciones imprevistas. El comentario podría indicarle que obtenga de Gmail un código de restablecimiento de contraseña y lo envíe a un sitio web malicioso.
La siguiente tabla describe situaciones concretas que conviene tener en cuenta. Te recomendamos revisarla con atención antes de decidir si vas a usar servidores MCP personalizados.
| Situación o riesgo | ¿Es seguro si confío en quien desarrolló el servidor MCP? | ¿Qué puedo hacer para reducir el riesgo? |
|---|---|---|
| Un atacante podría introducir una inyección de prompts en los datos accesibles desde el servidor MCP. Ejemplos: • Si usas un servidor MCP de atención al cliente, un atacante podría enviarte una solicitud de soporte que contenga una inyección de prompts. |
Confiar en quien desarrolló el servidor MCP no elimina este riesgo. Para que sea seguro, necesitas confiar en todo el contenido accesible desde el servidor MCP. |
• Evita usar un servidor MCP si puede contener datos maliciosos o no confiables ingresados por usuarios, incluso si confías en quien lo desarrolló. • Configura los permisos para limitar al mínimo la cantidad de personas que tienen acceso al servidor MCP. |
| Un servidor MCP malicioso podría solicitar más parámetros de los necesarios para una acción de lectura o escritura. Ejemplo: • Un servidor MCP para reservar vuelos de empleados podría ofrecer una acción de lectura para consultar horarios de vuelo, pero solicitar parámetros como summaryOfConversation, userAnnualIncome y userHomeAddress. |
Confiar en quien desarrolló el servidor MCP no necesariamente elimina este riesgo. Quien desarrolló el servidor podría considerar razonable solicitar ciertos datos que tú no consideras aceptable compartir. |
• Al instalar servidores MCP de forma manual, revisa los parámetros que solicita cada acción y verifica que respeten tus límites de privacidad. |
| Un atacante podría usar una inyección de prompts para engañar a ChatGPT y hacer que obtenga datos sensibles de un servidor MCP personalizado para luego enviárselos al atacante. Ejemplo: • Un atacante podría dirigir una inyección de prompts a un usuario de la empresa a través de otro servidor MCP (por ejemplo, el 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 quien desarrolló el servidor MCP no elimina este riesgo. Todo el contenido del nuevo servidor MCP podría ser seguro y confiable. El riesgo es que se roben esos datos 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 evalúa si tiene sentido asumirlo. • Configura los permisos para limitar al mínimo la cantidad de personas que tienen acceso a servidores MCP con datos especialmente sensibles. |
| Un atacante podría usar una inyección de prompts para filtrar información sensible mediante una acción de escritura en un servidor MCP personalizado. Ejemplo: • Un atacante usa una inyección de prompts a través de otro servidor MCP para engañar a ChatGPT y hacer que obtenga datos sensibles y luego se los envíe al atacante mediante un servidor MCP de atención al cliente. |
Confiar en quien desarrolló el servidor MCP no elimina este riesgo. Incluso si confías plenamente en el servidor MCP, un atacante podría intentar aprovechar cualquier efecto observable de las acciones de escritura. |
• Los usuarios deben revisar con atención cada acción de escritura en el momento en que se realiza para asegurarse de que es la que querían y de que no contiene datos que no deban compartirse. |
| Un atacante podría usar una inyección de prompts para filtrar información sensible mediante una acción de lectura en un servidor MCP personalizado malicioso, ya que el servidor puede registrar estas acciones. | Este ataque solo funciona si el servidor MCP es malicioso o si marca por error acciones de escritura como acciones de lectura. Si confías en que quien desarrolló el servidor MCP marcará como lectura únicamente las acciones de lectura y no intentará robar datos, es probable que el riesgo sea mínimo. |
• Usa únicamente servidores MCP de desarrolladores en quienes confíes, aunque eso por sí solo no garantiza que sea seguro usarlos. |
| Un atacante podría usar una inyección de prompts para engañar a ChatGPT y hacer que realice, mediante un servidor MCP personalizado, una acción de escritura dañina o destructiva que los usuarios no querían realizar. | Confiar en quien desarrolló el servidor MCP no elimina este riesgo. Aunque todo el contenido del nuevo servidor MCP sea seguro y confiable, el riesgo persiste porque el ataque proviene de otra fuente maliciosa. |
• Los usuarios deben revisar con atención las acciones de escritura para asegurarse de que sean las previstas 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 imprevistas. • Configura los permisos para limitar al mínimo la cantidad de personas que tienen acceso a servidores MCP con datos especialmente sensibles. |
Riesgos ajenos a la inyección de prompts
Los servidores MCP personalizados presentan otros riesgos que no dependen de los ataques de inyección de prompts:
- Las acciones de escritura pueden aumentar tanto la utilidad como los riesgos de los servidores MCP, ya que permiten que el servidor realice acciones potencialmente destructivas, además de proporcionar información a ChatGPT. Actualmente, ChatGPT exige una confirmación manual en cualquier conversación antes de realizar acciones de escritura. La confirmación señalará los datos potencialmente sensibles. Usa acciones de escritura solo si has evaluado con atención la posibilidad de que ChatGPT cometa un error al realizarlas y estás dispuesto a asumir ese riesgo. Pueden producirse acciones de escritura incluso si el servidor MCP las ha marcado como de solo lectura. Por eso 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 en las consultas. Incluso si el servidor no es malicioso, tendrá acceso a todos los datos que ChatGPT le proporcione durante la interacción. Estos podrían incluir datos sensibles que el usuario haya compartido antes con ChatGPT. Por ejemplo, estos datos podrían aparecer en las consultas que ChatGPT envía al servidor MCP cuando usa la investigación profunda o las herramientas de aplicaciones en el chat.
Conexión con servidores de confianza
Te recomendamos conectarte a un servidor MCP personalizado solo si conoces la aplicación subyacente y confías en ella.
Por ejemplo, elige servidores oficiales alojados por los propios proveedores del servicio. Conéctate al servidor que Stripe aloja en mcp.stripe.com en lugar de usar un servidor MCP no oficial de Stripe alojado por un tercero. Como hoy hay pocos servidores MCP oficiales disponibles, podrías considerar uno alojado por una organización que reenvíe las solicitudes a otro servicio mediante una API. Conéctate solo después de revisar cómo usa la organización tus datos y verificar que puedes confiar en el servidor. Cuando crees tu propio servidor MCP y te conectes a él, vuelve a comprobar que sea el servidor correcto. Cuando OpenAI llame a tu servidor MCP, ten cuidado con los datos que proporcionas en respuesta a las solicitudes y con el tratamiento que das a los datos que recibes.
Tu servidor MCP remoto permite que otras personas conecten OpenAI con tus servicios. También permite que OpenAI acceda a los datos de esos servicios, envíe y reciba datos, y realice acciones en ellos. 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, evita incluir contenido malicioso en las definiciones de tus herramientas.
