Home
Login

轻量级包装器,使Anthropic模型内容协议(MCP)工具与LangChain和LangGraph兼容

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

LangChain MCP适配器 - 项目详细介绍

项目概述

LangChain MCP适配器是一个轻量级包装器库,旨在将Anthropic模型内容协议(MCP)工具与LangChain和LangGraph生态系统无缝集成。该项目解决了不同AI工具框架之间的兼容性问题,让开发者能够在LangChain/LangGraph环境中直接使用MCP工具,构建更加强大和灵活的AI代理应用。

项目地址: https://github.com/langchain-ai/langchain-mcp-adapters

核心功能与特性

🔧 工具转换与适配

  • MCP到LangChain工具转换: 将MCP工具自动转换为LangChain工具格式
  • 无缝集成: 转换后的工具可直接用于LangGraph代理
  • 类型安全: 保持原有工具的类型信息和参数验证
  • 异步支持: 完全支持异步工具操作

📦 多服务器客户端

  • 多服务器连接: 同时连接多个MCP服务器
  • 统一工具管理: 从不同服务器加载和管理工具
  • 服务器配置: 支持灵活的服务器参数配置
  • 连接池管理: 高效的连接资源管理

🌐 传输协议支持

  • STDIO传输: 支持标准输入输出传输协议
  • SSE传输: 支持服务器推送事件传输协议
  • 多协议混合: 不同服务器可使用不同传输协议
  • 自动重连: 连接断开时的自动重连机制

🤖 LangGraph集成

  • React代理: 与LangGraph的React代理完美集成
  • 异步代理: 支持异步代理执行
  • 工具链组合: 支持复杂的工具链和工作流
  • 状态管理: 维护代理执行状态

技术架构

核心组件

LangChain/LangGraph Application
         ↓
LangChain MCP Adapters
         ↓
MCP Client Implementation
         ↓
Multiple MCP Servers (Math, Weather, etc.)

工具转换流程

  1. MCP工具发现: 从MCP服务获取可用工具列表
  2. 工具元数据解析: 解析工具名称、描述、参数
  3. LangChain工具创建: 创建兼容的LangChain工具对象
  4. 代理集成: 将工具注册到LangGraph代理中
  5. 执行转发: 将LangChain工具调用转发到MCP服务

安装与使用

快速安装

# 基础安装
pip install langchain-mcp-adapters

# 完整开发环境
pip install langchain-mcp-adapters langgraph langchain-openai

环境配置

# 设置OpenAI API密钥
export OPENAI_API_KEY=<your_api_key>

使用示例

基础示例:数学服务

1. 创建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. 创建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

# 初始化模型
model = ChatOpenAI(model="gpt-4o")

# 配置服务参数
server_params = StdioServerParameters(
    command="python",
    args=["/path/to/math_server.py"],
)

# 创建代理并执行
async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        await session.initialize()
        
        # 加载MCP工具
        tools = await load_mcp_tools(session)
        
        # 创建代理
        agent = create_react_agent(model, tools)
        
        # 执行查询
        response = await agent.ainvoke({
            "messages": "what's (3 + 5) x 12?"
        })

高级示例:多服务集成

1. 天气服务

# 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. 多服务客户端

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

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

# 多服务配置
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())
    
    # 数学运算
    math_response = await agent.ainvoke({
        "messages": "what's (3 + 5) x 12?"
    })
    
    # 天气查询
    weather_response = await agent.ainvoke({
        "messages": "what is the weather in NYC?"
    })

LangGraph API服务集成

1. 图配置文件

# 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. LangGraph配置

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

应用场景与优势

🎯 应用场景

企业级AI代理

  • 多功能集成: 集成各种业务工具和API
  • 工作流自动化: 构建复杂的业务流程自动化
  • 数据处理: 整合不同数据源和处理工具

开发者工具链

  • 代码生成: 集成代码生成和分析工具
  • 测试自动化: 构建智能测试代理
  • DevOps集成: 自动化部署和监控

研究与教育

  • 科学计算: 集成数学和科学计算工具
  • 数据分析: 构建智能数据分析助手
  • 教学助手: 创建交互式学习工具

✨ 技术优势

生态系统互操作性

  • 标准化接口: 遵循MCP标准协议
  • 广泛兼容: 与LangChain生态系统无缝集成
  • 扩展性: 支持自定义工具和协议扩展

开发效率提升

  • 快速集成: 几行代码即可集成MCP工具
  • 类型安全: 完整的类型提示和验证
  • 错误处理: 完善的错误处理和重试机制

性能与可靠性

  • 异步支持: 高性能异步操作
  • 连接管理: 智能连接池和重连机制
  • 资源优化: 高效的资源使用和管理

技术规范

支持的协议版本

  • MCP协议: 兼容最新MCP协议规范
  • LangChain: 支持LangChain 0.1+版本
  • LangGraph: 支持LangGraph最新版本

传输协议

  • STDIO: 标准输入输出传输
  • SSE: 服务推送事件
  • HTTP: 基于HTTP的RESTful API
  • WebSocket: 实时双向通信(规划中)

工具类型支持

  • 同步工具: 传统同步函数工具
  • 异步工具: 高性能异步工具
  • 流式工具: 支持流式输出
  • 状态工具: 支持状态管理的工具

最佳实践

🔧 开发建议

工具设计

  • 功能单一: 每个工具专注单一功能
  • 参数清晰: 提供清晰的参数描述和类型
  • 错误处理: 实现完善的错误处理逻辑
  • 文档完整: 提供详细的工具文档

性能优化

  • 连接复用: 复用MCP服务连接
  • 异步优先: 优先使用异步工具和操作
  • 资源管理: 及时释放不需要的资源
  • 缓存策略: 合理使用缓存提升性能

安全考虑

  • 权限控制: 实现适当的权限检查
  • 输入验证: 严格验证输入参数
  • 日志记录: 记录关键操作和错误
  • 密钥管理: 安全管理API密钥和凭证

总结

LangChain MCP适配器项目是AI工具生态系统中的重要基础设施,它成功地桥接了MCP协议和LangChain框架之间的gap。通过这个适配器,开发者可以:

🎯 核心价值

  • 统一工具生态: 将不同协议下的AI工具统一到LangChain生态中
  • 开发效率提升: 显著降低AI代理开发的复杂度和工作量
  • 功能扩展性: 轻松集成各种第三方工具和服务
  • 标准化支持: 遵循业界标准,保证长期兼容性

🌟 项目亮点

  • 轻量级设计: 最小化依赖,易于集成和部署
  • 完整功能: 覆盖从工具转换到代理执行的完整流程
  • 生产就绪: 提供企业级的稳定性和性能
  • 社区驱动: 活跃的开源社区和持续的功能迭代

🔮 应用前景

随着AI代理技术的快速发展,工具集成和互操作性将变得越来越重要。LangChain MCP适配器作为连接不同AI工具生态系统的桥梁,将在未来的AI应用开发中发挥关键作用。它不仅简化了当前的开发流程,更为构建更加智能、功能丰富的AI代理应用奠定了坚实的基础。

无论您是AI应用开发者、企业技术决策者,还是研究人员,这个项目都值得深入了解和应用。它代表了AI工具集成领域的最佳实践,将帮助您构建更加强大和灵活的AI解决方案。