Home
Login

Wrapper ligero que hace que las herramientas del Protocolo de Contenido del Modelo (MCP) de Anthropic sean compatibles con LangChain y LangGraph

MITPython 2.0klangchain-ai Last Updated: 2025-06-09

Adaptador MCP de LangChain - Detalles del Proyecto

Resumen del Proyecto

El adaptador MCP de LangChain es una biblioteca wrapper ligera diseñada para integrar sin problemas las herramientas del Protocolo de Contenido del Modelo (MCP) de Anthropic con los ecosistemas LangChain y LangGraph. Este proyecto aborda los problemas de compatibilidad entre diferentes frameworks de herramientas de IA, permitiendo a los desarrolladores utilizar directamente las herramientas MCP en entornos LangChain/LangGraph, construyendo aplicaciones de agentes de IA más potentes y flexibles.

Dirección del Proyecto: https://github.com/langchain-ai/langchain-mcp-adapters

Funciones y Características Principales

🔧 Conversión y Adaptación de Herramientas

  • Conversión de MCP a Herramientas de LangChain: Convierte automáticamente las herramientas MCP al formato de herramientas de LangChain.
  • Integración Fluida: Las herramientas convertidas se pueden utilizar directamente en agentes LangGraph.
  • Seguridad de Tipos: Mantiene la información de tipo original y la validación de parámetros de las herramientas.
  • Soporte Asíncrono: Soporte completo para operaciones de herramientas asíncronas.

📦 Cliente Multi-Servidor

  • Conexión Multi-Servidor: Conexión simultánea a múltiples servidores MCP.
  • Gestión Unificada de Herramientas: Carga y gestión de herramientas desde diferentes servidores.
  • Configuración del Servidor: Soporte para la configuración flexible de parámetros del servidor.
  • Gestión de Pool de Conexiones: Gestión eficiente de los recursos de conexión.

🌐 Soporte de Protocolos de Transferencia

  • Transferencia STDIO: Soporte para el protocolo de transferencia de entrada/salida estándar.
  • Transferencia SSE: Soporte para el protocolo de transferencia de eventos enviados por el servidor (Server-Sent Events).
  • Mezcla de Múltiples Protocolos: Diferentes servidores pueden usar diferentes protocolos de transferencia.
  • Reconexión Automática: Mecanismo de reconexión automática en caso de desconexión.

🤖 Integración con LangGraph

  • Agente React: Integración perfecta con el agente React de LangGraph.
  • Agente Asíncrono: Soporte para la ejecución asíncrona del agente.
  • Combinación de Cadenas de Herramientas: Soporte para cadenas de herramientas y flujos de trabajo complejos.
  • Gestión de Estado: Mantenimiento del estado de ejecución del agente.

Arquitectura Técnica

Componentes Principales

Aplicación LangChain/LangGraph
         ↓
Adaptadores MCP de LangChain
         ↓
Implementación del Cliente MCP
         ↓
Múltiples Servidores MCP (Matemáticas, Clima, etc.)

Flujo de Conversión de Herramientas

  1. Descubrimiento de Herramientas MCP: Obtención de la lista de herramientas disponibles desde el servidor MCP.
  2. Análisis de Metadatos de Herramientas: Análisis del nombre, descripción y parámetros de la herramienta.
  3. Creación de Herramientas de LangChain: Creación de objetos de herramientas de LangChain compatibles.
  4. Integración del Agente: Registro de la herramienta en el agente LangGraph.
  5. Reenvío de Ejecución: Reenvío de la llamada a la herramienta de LangChain al servidor MCP.

Instalación y Uso

Instalación Rápida

# Instalación básica
pip install langchain-mcp-adapters

# Entorno de desarrollo completo
pip install langchain-mcp-adapters langgraph langchain-openai

Configuración del Entorno

# Establecer la clave API de OpenAI
export OPENAI_API_KEY=<tu_clave_api>

Ejemplos de Uso

Ejemplo Básico: Servidor de Matemáticas

1. Crear el Servidor MCP

# math_server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Math")

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

@mcp.tool()
def multiply(a: int, b: int) -> int:
    """Multiply two numbers"""
    return a * b

if __name__ == "__main__":
    mcp.run(transport="stdio")

2. Crear el Agente LangGraph

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI

# Inicializar el modelo
model = ChatOpenAI(model="gpt-4o")

# Configurar los parámetros del servidor
server_params = StdioServerParameters(
    command="python",
    args=["/path/to/math_server.py"],
)

# Crear el agente y ejecutar
async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        await session.initialize()
        
        # Cargar las herramientas MCP
        tools = await load_mcp_tools(session)
        
        # Crear el agente
        agent = create_react_agent(model, tools)
        
        # Ejecutar la consulta
        response = await agent.ainvoke({
            "messages": "what's (3 + 5) x 12?"
        })

Ejemplo Avanzado: Integración Multi-Servidor

1. Servidor del Clima

# weather_server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Weather")

@mcp.tool()
async def get_weather(location: str) -> str:
    """Get weather for location."""
    return f"It's always sunny in {location}"

if __name__ == "__main__":
    mcp.run(transport="sse")

2. Cliente Multi-Servidor

from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4o")

# Configuración multi-servidor
async with MultiServerMCPClient({
    "math": {
        "command": "python",
        "args": ["/path/to/math_server.py"],
        "transport": "stdio",
    },
    "weather": {
        "url": "http://localhost:8000/sse",
        "transport": "sse",
    }
}) as client:
    # Crear el agente
    agent = create_react_agent(model, client.get_tools())
    
    # Operación matemática
    math_response = await agent.ainvoke({
        "messages": "what's (3 + 5) x 12?"
    })
    
    # Consulta del clima
    weather_response = await agent.ainvoke({
        "messages": "what is the weather in NYC?"
    })

Integración con el Servidor API de LangGraph

1. Archivo de Configuración del Grafo

# graph.py
from contextlib import asynccontextmanager
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
from langchain_anthropic import ChatAnthropic

model = ChatAnthropic(model="claude-3-5-sonnet-latest")

@asynccontextmanager
async def make_graph():
    async with MultiServerMCPClient({
        "math": {
            "command": "python",
            "args": ["/path/to/math_server.py"],
            "transport": "stdio",
        },
        "weather": {
            "url": "http://localhost:8000/sse",
            "transport": "sse",
        }
    }) as client:
        agent = create_react_agent(model, client.get_tools())
        yield agent

2. Configuración de LangGraph

{
  "dependencies": ["."],
  "graphs": {
    "agent": "./graph.py:make_graph"
  }
}

Escenarios de Aplicación y Ventajas

🎯 Escenarios de Aplicación

Agentes de IA Empresariales

  • Integración Multifuncional: Integración de varias herramientas y APIs de negocio.
  • Automatización del Flujo de Trabajo: Construcción de automatización de procesos de negocio complejos.
  • Procesamiento de Datos: Integración de diferentes fuentes de datos y herramientas de procesamiento.

Cadena de Herramientas para Desarrolladores

  • Generación de Código: Integración de herramientas de generación y análisis de código.
  • Automatización de Pruebas: Construcción de agentes de prueba inteligentes.
  • Integración DevOps: Automatización del despliegue y la monitorización.

Investigación y Educación

  • Cálculo Científico: Integración de herramientas de cálculo matemático y científico.
  • Análisis de Datos: Construcción de asistentes inteligentes de análisis de datos.
  • Asistente de Enseñanza: Creación de herramientas de aprendizaje interactivas.

✨ Ventajas Técnicas

Interoperabilidad del Ecosistema

  • Interfaz Estandarizada: Cumplimiento del protocolo estándar MCP.
  • Amplia Compatibilidad: Integración perfecta con el ecosistema LangChain.
  • Extensibilidad: Soporte para la extensión de herramientas y protocolos personalizados.

Mejora de la Eficiencia del Desarrollo

  • Integración Rápida: Integración de herramientas MCP con unas pocas líneas de código.
  • Seguridad de Tipos: Sugerencias de tipo y validación completas.
  • Manejo de Errores: Mecanismo completo de manejo de errores y reintentos.

Rendimiento y Fiabilidad

  • Soporte Asíncrono: Operaciones asíncronas de alto rendimiento.
  • Gestión de Conexiones: Pool de conexiones inteligente y mecanismo de reconexión.
  • Optimización de Recursos: Uso y gestión eficientes de los recursos.

Especificaciones Técnicas

Versiones de Protocolo Compatibles

  • Protocolo MCP: Compatible con las últimas especificaciones del protocolo MCP.
  • LangChain: Soporte para la versión 0.1+ de LangChain.
  • LangGraph: Soporte para la última versión de LangGraph.

Protocolos de Transferencia

  • STDIO: Transferencia de entrada/salida estándar.
  • SSE: Eventos enviados por el servidor.
  • HTTP: API RESTful basada en HTTP.
  • WebSocket: Comunicación bidireccional en tiempo real (en planificación).

Soporte de Tipos de Herramientas

  • Herramientas Síncronas: Herramientas de función síncronas tradicionales.
  • Herramientas Asíncronas: Herramientas asíncronas de alto rendimiento.
  • Herramientas de Flujo: Soporte para salida de flujo.
  • Herramientas de Estado: Herramientas que soportan la gestión de estado.

Mejores Prácticas

🔧 Sugerencias de Desarrollo

Diseño de Herramientas

  • Función Única: Cada herramienta se centra en una sola función.
  • Parámetros Claros: Proporcionar descripciones y tipos de parámetros claros.
  • Manejo de Errores: Implementar una lógica completa de manejo de errores.
  • Documentación Completa: Proporcionar documentación detallada de la herramienta.

Optimización del Rendimiento

  • Reutilización de Conexiones: Reutilizar las conexiones del servidor MCP.
  • Prioridad Asíncrona: Priorizar el uso de herramientas y operaciones asíncronas.
  • Gestión de Recursos: Liberar los recursos innecesarios a tiempo.
  • Estrategia de Caché: Utilizar el caché de forma razonable para mejorar el rendimiento.

Consideraciones de Seguridad

  • Control de Permisos: Implementar la comprobación de permisos adecuada.
  • Validación de Entrada: Validar estrictamente los parámetros de entrada.
  • Registro de Eventos: Registrar operaciones y errores clave.
  • Gestión de Claves: Gestionar de forma segura las claves API y las credenciales.

Resumen

El proyecto del adaptador MCP de LangChain es una infraestructura importante en el ecosistema de herramientas de IA, que ha logrado cerrar la brecha entre el protocolo MCP y el framework LangChain. A través de este adaptador, los desarrolladores pueden:

🎯 Valor Principal

  • Ecosistema de Herramientas Unificado: Unificar las herramientas de IA bajo diferentes protocolos en el ecosistema LangChain.
  • Mejora de la Eficiencia del Desarrollo: Reducir significativamente la complejidad y la carga de trabajo del desarrollo de agentes de IA.
  • Extensibilidad de Funciones: Integrar fácilmente varias herramientas y servicios de terceros.
  • Soporte Estandarizado: Cumplir con los estándares de la industria, garantizando la compatibilidad a largo plazo.

🌟 Aspectos Destacados del Proyecto

  • Diseño Ligero: Minimizar las dependencias, fácil de integrar y desplegar.
  • Funcionalidad Completa: Cubre el proceso completo desde la conversión de herramientas hasta la ejecución del agente.
  • Listo para Producción: Proporciona estabilidad y rendimiento de nivel empresarial.
  • Impulsado por la Comunidad: Comunidad de código abierto activa e iteración continua de funciones.

🔮 Perspectivas de Aplicación

Con el rápido desarrollo de la tecnología de agentes de IA, la integración y la interoperabilidad de herramientas se volverán cada vez más importantes. El adaptador MCP de LangChain, como puente que conecta diferentes ecosistemas de herramientas de IA, desempeñará un papel clave en el futuro desarrollo de aplicaciones de IA. No solo simplifica los procesos de desarrollo actuales, sino que también sienta una base sólida para la construcción de aplicaciones de agentes de IA más inteligentes y ricas en funciones.

Tanto si es un desarrollador de aplicaciones de IA, un responsable de la toma de decisiones técnicas de la empresa o un investigador, este proyecto merece una comprensión y una aplicación profundas. Representa las mejores prácticas en el campo de la integración de herramientas de IA y le ayudará a construir soluciones de IA más potentes y flexibles.