MCP Servers

Intermedio
OpenAI
OpenAI
Actualizado: 03/07/2025

¡Desbloquea el curso completo!

IA
Ejercicios
Certificado
Entrar

Qué es Model Context Protocol (MCP)

El Model Context Protocol (MCP) es un protocolo abierto introducido por Anthropic en noviembre de 2024 que estandariza la forma en que las aplicaciones proporcionan herramientas y contexto a los modelos de lenguaje. 

En lugar de que cada empresa desarrolle su propia implementación para conectar herramientas externas, MCP establece un estándar común que permite la interoperabilidad entre diferentes sistemas.

Arquitectura del protocolo

MCP funciona mediante una arquitectura cliente-servidor donde los servidores MCP exponen herramientas específicas que los clientes pueden utilizar. 

Esta separación permite que las herramientas se ejecuten de forma independiente y segura, mientras que el modelo de lenguaje actúa como cliente que consume estas capacidades.

# Conceptualmente, MCP funciona así:
# Cliente (OpenAI API) ←→ Servidor MCP (herramientas específicas)
# 
# El modelo solicita herramientas → El servidor las proporciona
# El modelo ejecuta herramientas → El servidor devuelve resultados

Los servidores MCP pueden ser mantenidos por diferentes organizaciones y exponer herramientas relacionadas con sus servicios. Por ejemplo, Stripe mantiene un servidor MCP que expone herramientas para crear enlaces de pago, mientras que GitHub podría mantener otro para interactuar con repositorios.

Protocolos de transporte soportados

MCP soporta múltiples protocolos de transporte para la comunicación entre cliente y servidor:

  • Streamable HTTP: Permite comunicación en tiempo real con respuestas streaming
  • HTTP/SSE: Utiliza Server-Sent Events para mantener conexiones persistentes
  • stdio: Para servidores locales que se ejecutan como procesos independientes
# Ejemplo de configuración de servidor MCP
mcp_server_config = {
    "server_label": "stripe_payments",
    "server_url": "https://mcp.stripe.com",
    "transport": "streamable_http",  # Protocolo de transporte
    "authentication": {
        "type": "bearer_token",
        "token": "sk_live_..."
    }
}

Ecosistema actual de servidores

El ecosistema MCP ha crecido rápidamente desde su introducción. Actualmente incluye servidores oficiales mantenidos por empresas como Cloudflare, HubSpot, Intercom, PayPal, Shopify, Stripe, Twilio y Zapier, entre otros.

Cada servidor MCP expone un conjunto específico de herramientas relacionadas con su dominio:

  • Stripe MCP: Herramientas para pagos, suscripciones y facturación
  • GitHub MCP: Herramientas para gestión de repositorios y código
  • Shopify MCP: Herramientas para comercio electrónico y gestión de productos
  • Twilio MCP: Herramientas para comunicaciones y mensajería

Ventajas del estándar MCP

La adopción de MCP como estándar ofrece varios beneficios significativos:

Interoperabilidad: Los desarrolladores pueden utilizar herramientas de diferentes proveedores sin necesidad de implementar integraciones específicas para cada uno.

Seguridad: Las herramientas se ejecutan en servidores remotos controlados por sus respectivos proveedores, lo que reduce los riesgos de seguridad en el lado del cliente.

Escalabilidad: Nuevos servidores MCP pueden añadirse al ecosistema sin modificar el código cliente, permitiendo que el sistema crezca orgánicamente.

# Un mismo cliente puede usar múltiples servidores MCP
tools_config = [
    {
        "type": "mcp",
        "server_label": "payments",
        "server_url": "https://mcp.stripe.com"
    },
    {
        "type": "mcp", 
        "server_label": "communications",
        "server_url": "https://mcp.twilio.com"
    },
    {
        "type": "mcp",
        "server_label": "analytics", 
        "server_url": "https://mcp.analytics-provider.com"
    }
]

Integración con OpenAI

OpenAI ha integrado soporte nativo para MCP en su API Responses en marzo de 2025, permitiendo que los modelos accedan directamente a servidores MCP remotos. Esta integración elimina la necesidad de implementar proxies o adaptadores personalizados, simplificando significativamente el proceso de conexión con herramientas externas.

La implementación de OpenAI incluye características avanzadas como filtrado de herramientas, sistema de aprobaciones para control de seguridad, y autenticación flexible mediante headers personalizados.

El protocolo MCP representa un paso importante hacia la estandarización del ecosistema de herramientas para modelos de lenguaje, facilitando la creación de aplicaciones más robustas y extensibles que pueden aprovechar capacidades distribuidas across múltiples servicios especializados.

Cómo invocar MCP servers con OpenAI SDK

Guarda tu progreso

Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

Más de 25.000 desarrolladores ya confían en CertiDevs

La integración de servidores MCP con el OpenAI SDK se realiza a través de la API Responses, que proporciona soporte nativo para conectar con servidores remotos. Esta implementación permite que los modelos accedan directamente a herramientas externas sin necesidad de configuraciones complejas.

Configuración básica de un servidor MCP

Para conectar con un servidor MCP, necesitas especificar la configuración del servidor en el parámetro tools de la API Responses. La estructura básica incluye el tipo de herramienta, etiqueta del servidor y URL del endpoint:

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-4.1",
    tools=[
        {
            "type": "mcp",
            "server_label": "deepwiki",
            "server_url": "https://mcp.deepwiki.com/mcp",
            "require_approval": "never"
        }
    ],
    input="¿Qué protocolos de transporte soporta la especificación MCP versión 2025-03-26?"
)

print(response.output_text)

El parámetro server_label actúa como identificador único para el servidor dentro de tu aplicación, mientras que server_url especifica el endpoint donde se encuentra alojado el servidor MCP.

Ejemplo de uso:

Proceso de descubrimiento de herramientas

Cuando conectas con un servidor MCP, la API Responses ejecuta automáticamente un proceso de descubrimiento de herramientas. Este proceso consulta al servidor para obtener la lista de herramientas disponibles y sus esquemas de entrada:

# El SDK automáticamente genera un objeto mcp_list_tools
# que contiene información sobre las herramientas disponibles
response = client.responses.create(
    model="gpt-4.1",
    tools=[
        {
            "type": "mcp",
            "server_label": "github_tools",
            "server_url": "https://mcp.github.com/api",
            "require_approval": "never"
        }
    ],
    input="Lista los archivos del repositorio facebook/react"
)

# La respuesta incluirá automáticamente las herramientas descubiertas
# como read_repository, list_files, get_file_content, etc.

Filtrado de herramientas específicas

Los servidores MCP pueden exponer docenas de herramientas, lo que puede resultar en mayor latencia y costos. Para optimizar el rendimiento, puedes utilizar el parámetro allowed_tools para importar únicamente las herramientas que necesitas:

response = client.responses.create(
    model="gpt-4.1",
    tools=[
        {
            "type": "mcp",
            "server_label": "stripe_payments",
            "server_url": "https://mcp.stripe.com",
            "require_approval": "never",
            "allowed_tools": ["create_payment_link", "get_payment_status"]
        }
    ],
    input="Crea un enlace de pago por 50 euros para una consultoría"
)

Esta configuración limita las herramientas disponibles solo a aquellas especificadas en la lista, reduciendo la complejidad del contexto y mejorando la eficiencia.

Autenticación con servidores MCP

La mayoría de servidores MCP requieren autenticación para acceder a sus herramientas. El SDK permite especificar headers personalizados que se incluirán en todas las peticiones al servidor:

response = client.responses.create(
    model="gpt-4.1",
    tools=[
        {
            "type": "mcp",
            "server_label": "shopify_store",
            "server_url": "https://mcp.shopify.com",
            "headers": {
                "Authorization": "Bearer shop_access_token_here",
                "X-Shopify-Shop-Domain": "mi-tienda.myshopify.com"
            },
            "require_approval": "never"
        }
    ],
    input="Muestra los 5 productos más vendidos de esta semana"
)

Los valores de los headers no se almacenan ni son visibles en las respuestas por motivos de seguridad, por lo que debes incluirlos en cada petición.

Sistema de aprobaciones

Por defecto, OpenAI requiere aprobación manual antes de compartir datos con servidores MCP remotos. Este mecanismo de seguridad te permite revisar qué información se enviará:

# Primera petición - genera una solicitud de aprobación
response = client.responses.create(
    model="gpt-4.1",
    tools=[
        {
            "type": "mcp",
            "server_label": "analytics_service",
            "server_url": "https://mcp.analytics.com"
            # require_approval por defecto es True
        }
    ],
    input="Analiza las métricas de ventas del último trimestre"
)

# La respuesta contendrá un mcp_approval_request
# que debes aprobar en una segunda petición
approval_response = client.responses.create(
    model="gpt-4.1",
    tools=[
        {
            "type": "mcp",
            "server_label": "analytics_service", 
            "server_url": "https://mcp.analytics.com"
        }
    ],
    previous_response_id=response.id,
    input=[
        {
            "type": "mcp_approval_response",
            "approve": True,
            "approval_request_id": "mcpr_ejemplo_id_aprobacion"
        }
    ]
)

Configuración de aprobaciones granulares

Puedes configurar el sistema de aprobaciones de forma granular, especificando qué herramientas no requieren aprobación:

response = client.responses.create(
    model="gpt-4.1",
    tools=[
        {
            "type": "mcp",
            "server_label": "crm_system",
            "server_url": "https://mcp.crm-provider.com",
            "require_approval": {
                "never": {
                    "tool_names": ["get_contact_info", "search_contacts"]
                }
            }
        }
    ],
    input="Busca el contacto de María García en el CRM"
)

Esta configuración permite que las herramientas de consulta se ejecuten automáticamente, mientras que las operaciones de escritura seguirán requiriendo aprobación.

Manejo de múltiples servidores MCP

Una aplicación puede conectar simultáneamente con múltiples servidores MCP, cada uno proporcionando herramientas especializadas:

response = client.responses.create(
    model="gpt-4.1",
    tools=[
        {
            "type": "mcp",
            "server_label": "payments",
            "server_url": "https://mcp.stripe.com",
            "headers": {"Authorization": "Bearer sk_live_..."},
            "require_approval": "never"
        },
        {
            "type": "mcp", 
            "server_label": "inventory",
            "server_url": "https://mcp.inventory-system.com",
            "headers": {"API-Key": "inv_key_..."},
            "require_approval": "never"
        },
        {
            "type": "mcp",
            "server_label": "notifications",
            "server_url": "https://mcp.twilio.com", 
            "headers": {"Authorization": "Bearer twilio_token_..."},
            "require_approval": "never"
        }
    ],
    input="Procesa el pedido #12345: verifica stock, cobra 299€ y envía SMS de confirmación"
)

El modelo puede coordinar automáticamente el uso de herramientas de diferentes servidores para completar tareas complejas que requieren múltiples servicios.

Gestión de errores y fallos

Cuando una herramienta MCP falla, la información del error se incluye en el objeto mcp_call de la respuesta:

response = client.responses.create(
    model="gpt-4.1",
    tools=[
        {
            "type": "mcp",
            "server_label": "external_api",
            "server_url": "https://mcp.external-service.com",
            "require_approval": "never"
        }
    ],
    input="Consulta datos que podrían no estar disponibles"
)

# Verificar si hubo errores en las llamadas MCP
for output_item in response.output:
    if output_item.type == "mcp_call" and output_item.error:
        print(f"Error en herramienta {output_item.name}: {output_item.error}")

Esta información permite implementar lógica de recuperación o proporcionar feedback específico sobre fallos en herramientas externas.

Aprendizajes de esta lección

  • Comprender qué es el protocolo Model Context Protocol (MCP) y su arquitectura cliente-servidor.
  • Conocer los protocolos de transporte soportados y el ecosistema actual de servidores MCP.
  • Aprender a configurar e invocar servidores MCP desde el OpenAI SDK.
  • Entender el proceso de descubrimiento, filtrado y autenticación de herramientas MCP.
  • Gestionar aprobaciones, múltiples servidores y manejo de errores en integraciones MCP.

Completa OpenAI y certifícate

Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.

Asistente IA

Resuelve dudas al instante

Ejercicios

Practica con proyectos reales

Certificados

Valida tus conocimientos

Más de 25.000 desarrolladores ya se han certificado con CertiDevs

⭐⭐⭐⭐⭐
4.9/5 valoración