C贸mo usar MCP con la API de OpenAI usando Dolphin-MCP

馃挕驴Interesado en la 煤ltima tendencia en IA? 隆Entonces no te puedes perder Anakin AI! Anakin AI es una plataforma todo en uno para toda tu automatizaci贸n de flujos de trabajo, crea potentes aplicaciones de IA con un constructor de aplicaciones sin c贸digo f谩cil de usar, con Deepseek, o3-mini-high de OpenAI,

Build APIs Faster & Together in Apidog

C贸mo usar MCP con la API de OpenAI usando Dolphin-MCP

Start for free
Inhalte
馃挕
驴Interesado en la 煤ltima tendencia en IA?

隆Entonces no te puedes perder Anakin AI!

Anakin AI es una plataforma todo en uno para toda tu automatizaci贸n de flujos de trabajo, crea potentes aplicaciones de IA con un constructor de aplicaciones sin c贸digo f谩cil de usar, con Deepseek, o3-mini-high de OpenAI, Claude 3.7 Sonnet, FLUX, Minimax Video, Hunyuan...

隆Construye la aplicaci贸n de IA de tus sue帽os en minutos, no en semanas, con Anakin AI!
Anakin AI: Tu Plataforma de IA Todo en Uno
Anakin AI: Tu Plataforma de IA Todo en Uno

Introducci贸n

Dolphin-MCP es una implementaci贸n de c贸digo abierto que ampl铆a el Protocolo de Contexto del Modelo (MCP) de Anthropic para trabajar con varios modelos de lenguaje m谩s all谩 de Claude. Esta gu铆a t茅cnica te guiar谩 a trav茅s de la configuraci贸n y utilizaci贸n de Dolphin-MCP espec铆ficamente con la API de OpenAI, permiti茅ndote aprovechar los modelos GPT a trav茅s de la arquitectura MCP.

Visi贸n T茅cnica

Dolphin-MCP act煤a como una capa de traducci贸n entre la especificaci贸n MCP y varias API de LLM. Para la integraci贸n de OpenAI, lo hace:

  • Convierte mensajes del protocolo MCP a formatos de la API de OpenAI
  • Maneja las diferencias de mapeo de tokens entre modelos
  • Gestiona el estado y el historial de la conversaci贸n
  • Proporciona capacidades de ejecuci贸n de herramientas de manera agn贸stica al modelo

Prerequisitos

Antes de comenzar, aseg煤rate de tener:

  • Python 3.8+
  • pip (gestor de paquetes)
  • Clave de API de OpenAI
  • Git instalado
  • Comprensi贸n b谩sica de LLMs y conceptos de API

Pasos de Instalaci贸n

# Clonar el repositorio Dolphin-MCP
git clone https://github.com/cognitivecomputations/dolphin-mcp.git
cd dolphin-mcp

# Crear un entorno virtual
python -m venv venv
source venv/bin/activate  # En Windows: venv\Scripts\activate

# Instalar dependencias
pip install -r requirements.txt

# Instalar el paquete en modo de desarrollo
pip install -e .

Configuraci贸n

1. Configuraci贸n de Variables de Entorno

Crea un archivo .env en la ra铆z de tu proyecto:

OPENAI_API_KEY=sk-tu-clave-api-openai-aqui
MCP_MODEL=gpt-4-0125-preview
MCP_PROVIDER=openai

2. Creando un Archivo de Configuraci贸n

Crea un archivo config.json:

{
  "provider": "openai",
  "model_settings": {
    "model": "gpt-4-0125-preview",
    "temperature": 0.7,
    "max_tokens": 2048
  },
  "api_config": {
    "api_key": "sk-tu-clave-api-openai-aqui",
    "base_url": "https://api.openai.com/v1",
    "timeout": 120
  }
}

Ejemplos de Uso B谩sico

Ejemplo 1: Conversaci贸n Simple

from dolphin_mcp import DolphinMCP

# Inicializar el cliente
mcp_client = DolphinMCP.from_config("./config.json")

# Crear una conversaci贸n
conversation = mcp_client.create_conversation()

# A帽adir un mensaje del sistema
conversation.add_system_message("Eres un asistente de IA 煤til especializado en programaci贸n en Python.")

# Enviar un mensaje de usuario y obtener una respuesta
response = conversation.add_user_message("驴C贸mo implemento un 谩rbol de b煤squeda binaria en Python?")

# Imprimir la respuesta
print(response.content)

Ejemplo 2: Uso de Herramientas con OpenAI

from dolphin_mcp import DolphinMCP
from dolphin_mcp.tools import WebSearchTool, CodeExecutionTool

# Inicializar el cliente con herramientas
mcp_client = DolphinMCP.from_config("./config.json")

# Registrar herramientas
mcp_client.register_tool(WebSearchTool(api_key="tu-clave-api-de-busqueda"))
mcp_client.register_tool(CodeExecutionTool())

# Crear conversaci贸n con herramientas habilitadas
conversation = mcp_client.create_conversation()

# A帽adir instrucciones del sistema para las herramientas
conversation.add_system_message("""
Eres un asistente de IA con acceso a las siguientes herramientas:
- web_search: Busca en internet informaci贸n actual
- code_execution: Ejecuta c贸digo Python de forma segura en un entorno aislado

Usa estas herramientas cuando sea apropiado para proporcionar respuestas precisas y 煤tiles.
""")

# Consulta del usuario que requiere herramientas
response = conversation.add_user_message(
    "驴Cu谩l es el clima actual en Nueva York? Adem谩s, 驴puedes mostrarme c贸mo calcular el factorial de un n煤mero en Python?"
)

# La respuesta incluir谩 el uso de herramientas autom谩ticamente
print(response.content)
print("\nEjecuciones de herramientas:")
for tool_name, tool_result in response.tool_results.items():
    print(f"{tool_name}: {tool_result}")

Configuraci贸n Avanzada

Uso de Puntos Finales Compatibles con OpenAI

Si deseas usar puntos finales alternativos compatibles con OpenAI (como Azure OpenAI o modelos auto-alojados), modifica tu configuraci贸n:

{
  "provider": "openai",
  "model_settings": {
    "model": "tu-despliegue-de-modelo-personalizado",
    "temperature": 0.7,
    "max_tokens": 2048
  },
  "api_config": {
    "api_key": "tu-clave-api",
    "base_url": "https://tu-punto-final-personalizado.com/v1",
    "api_version": "2023-07-01-preview",  // Para Azure
    "api_type": "azure"  // Para Azure
  }
}

Implementaci贸n de Herramientas Personalizadas

Dolphin-MCP te permite crear herramientas personalizadas para modelos de OpenAI. Aqu铆 tienes c贸mo implementar una herramienta calculadora personalizada:

from dolphin_mcp.tools import BaseTool
import math

class CalculatorTool(BaseTool):
    name = "calculadora"
    description = "Realiza c谩lculos matem谩ticos"
    
    async def execute(self, expression: str):
        try:
            # Crear un entorno seguro con funciones matem谩ticas limitadas
            safe_env = {
                "sqrt": math.sqrt,
                "sin": math.sin,
                "cos": math.cos,
                "tan": math.tan,
                "pi": math.pi,
                "e": math.e
            }
            
            # Evaluar la expresi贸n en el entorno seguro
            result = eval(expression, {"__builtins__": {}}, safe_env)
            return str(result)
        except Exception as e:
            return f"Error en el c谩lculo: {str(e)}"
    
    @property
    def parameters(self):
        return {
            "type": "object",
            "properties": {
                "expression": {
                    "type": "string",
                    "description": "La expresi贸n matem谩tica a evaluar"
                }
            },
            "required": ["expression"]
        }

# Ejemplo de uso
mcp_client = DolphinMCP.from_config("./config.json")
mcp_client.register_tool(CalculatorTool())

Manejo de Respuestas en Streaming

Para aplicaciones que requieren respuestas en tiempo real:

async def stream_response():
    mcp_client = DolphinMCP.from_config("./config.json")
    conversation = mcp_client.create_conversation()
    
    # Configurar la conversaci贸n
    conversation.add_system_message("Eres un asistente de IA 煤til.")
    
    # Transmitir la respuesta
    async for chunk in conversation.add_user_message_streaming(
        "Explica la computaci贸n cu谩ntica en t茅rminos simples."
    ):
        if chunk.type == "content":
            print(chunk.content, end="", flush=True)
        elif chunk.type == "tool_start":
            print(f"\n[Comenzando a usar la herramienta: {chunk.tool_name}]")
        elif chunk.type == "tool_result":
            print(f"\n[Resultado de la herramienta de {chunk.tool_name}]: {chunk.result}")
        elif chunk.type == "error":
            print(f"\nError: {chunk.error}")
    
    print("\nRespuesta completa.")

# Ejecutar la funci贸n as铆ncrona
import asyncio
asyncio.run(stream_response())

Manejo de Errores

Implementa un manejo de errores robusto para gestionar problemas de API:

from dolphin_mcp.exceptions import MCPAPIError, MCPConfigError, MCPTimeoutError

try:
    mcp_client = DolphinMCP.from_config("./config.json")
    conversation = mcp_client.create_conversation()
    response = conversation.add_user_message("Generar una respuesta compleja")
    
except MCPTimeoutError:
    print("La solicitud excedi贸 el tiempo de espera. Verifica tu conexi贸n de red o aumenta el valor de tiempo de espera.")
    
except MCPAPIError as e:
    print(f"Error de API: {e.status_code} - {e.message}")
    if e.status_code == 429:
        print("L铆mite de tasa excedido. Implementa retroceso exponencial.")
    
except MCPConfigError as e:
    print(f"Error de Configuraci贸n: {e}")
    
except Exception as e:
    print(f"Error inesperado: {e}")

Optimizaci贸n del Rendimiento

Para entornos de producci贸n, considera estas optimizaciones:

# Reutilizaci贸n de sesi贸n para agrupaci贸n de conexiones
from dolphin_mcp import DolphinMCP
import aiohttp

async def optimized_mcp_usage():
    # Crear una sesi贸n compartida para agrupaci贸n de conexiones
    async with aiohttp.ClientSession() as session:
        mcp_client = DolphinMCP.from_config(
            "./config.json",
            session=session,
            request_timeout=60,
            connection_pool_size=10
        )
        
        # Procesar m煤ltiples conversaciones de manera eficiente
        tasks = []
        for i in range(5):
            conversation = mcp_client.create_conversation()
            conversation.add_system_message("Eres un asistente 煤til.")
            tasks.append(conversation.add_user_message_async(f"Pregunta {i}: 驴Qu茅 es el aprendizaje autom谩tico?"))
        
        # Reunir todas las respuestas
        responses = await asyncio.gather(*tasks)
        
        for i, response in enumerate(responses):
            print(f"Respuesta {i}: {response.content[:100]}...")

Integraci贸n con Aplicaciones Web

Ejemplo de integraci贸n en Flask:

from flask import Flask, request, jsonify
from dolphin_mcp import DolphinMCP

app = Flask(__name__)
mcp_client = DolphinMCP.from_config("./config.json")

@app.route("/chat", methods=["POST"])
def chat():
    data = request.json
    conversation_id = data.get("conversation_id")
    message = data.get("message")
    
    # Recuperar o crear conversaci贸n
    if conversation_id and conversation_id in active_conversations:
        conversation = active_conversations[conversation_id]
    else:
        conversation = mcp_client.create_conversation()
        conversation_id = conversation.id
        active_conversations[conversation_id] = conversation
        conversation.add_system_message("Eres un asistente de IA 煤til.")
    
    # Procesar el mensaje
    response = conversation.add_user_message(message)
    
    return jsonify({
        "conversation_id": conversation_id,
        "response": response.content,
        "tool_results": response.tool_results
    })

if __name__ == "__main__":
    active_conversations = {}
    app.run(debug=True)

Soluci贸n de Problemas Comunes

Problema Soluci贸n
Error "Clave API no v谩lida" Verifica que tu clave API de OpenAI sea correcta y tenga suficientes permisos
Limitaci贸n de tasa Implementa retroceso exponencial y limitaci贸n de solicitudes
Errores de tiempo de espera Aumenta el tiempo de espera en la configuraci贸n o verifica la conexi贸n de red
Modelo no encontrado Verifica que el nombre del modelo exista en los modelos disponibles de OpenAI
L铆mite de token excedido Divide las solicitudes en partes m谩s peque帽as o utiliza streaming

Conclusi贸n

Dolphin-MCP proporciona una manera flexible y de c贸digo abierto de utilizar modelos de OpenAI con el protocolo MCP. Esta implementaci贸n libera a los desarrolladores de la dependencia de proveedores mientras mantiene una interfaz consistente entre diferentes proveedores de LLM. Siguiendo los pasos en esta gu铆a, puedes aprovechar el poder de los modelos GPT a trav茅s de la arquitectura MCP estandarizada.

philschmid.de muestra integraciones similares con otros LLMs, y herramientas como mcpadapt pueden ayudar a ampliar a煤n m谩s las capacidades de Dolphin-MCP.