3个突破性步骤:MCP工具链集成助力LangChain多智能体协作
副标题:Anthropic协议与Lang生态的无缝桥接方案
LangChain MCP Adapters是一个开源库,它提供了轻量级包装器,使Anthropic Model Context Protocol (MCP)工具能与LangChain和LangGraph兼容,核心价值在于解决异构AI工具生态的协同难题,让开发者轻松构建跨服务器的智能体应用。
价值定位:打破AI工具链的孤岛困境
传统AI开发面临工具集成的三重挑战:协议碎片化导致不同服务难以互通、多源工具协同需要复杂的手动适配、LangChain生态与外部系统存在整合鸿沟。LangChain MCP Adapters通过标准化的协议转换层,将这些分散的工具资源编织成统一可用的能力网络,使开发者专注于业务逻辑而非接口适配。
核心能力:功能特性与技术原理解析
| 功能特性 | 技术原理 |
|---|---|
| 🔗 双向协议转换 | 实现MCP与LangChain工具规范的双向映射,通过MCPTool类封装输入输出格式转换逻辑,保持原始工具能力的同时满足LangChain调用要求 |
| 🔄 多服务器管理 | 基于MultiServerMCPClient实现连接池管理,通过异步上下文管理器维护多个MCP服务器的持久连接,支持TCP、stdio等多种传输方式 |
| ⚙️ 工具自动发现 | 利用MCP协议的元数据交换机制,客户端可动态获取服务器提供的工具列表及参数规范,无需硬编码工具定义 |
图:MCP服务器-客户端-应用架构示意图,展示了Math和Data服务器通过Py客户端与LangGraph Agent的集成关系
场景实践:从基础集成到复杂协同
场景一:单服务器工具调用
问题描述:需要将本地运行的数学计算服务集成到LangChain智能体中,实现基本算术运算能力。
解决方案:使用Stdio传输创建MCP服务器,通过适配器加载工具并构建反应式智能体。
# 服务器端:math_server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("MathServer")
@mcp.tool()
def calculate(expression: str) -> float:
"""计算数学表达式结果,支持+、-、*、/基本运算"""
return eval(expression) # 生产环境需添加安全校验
if __name__ == "__main__":
mcp.run(transport="stdio") # 使用标准输入输出作为传输通道
# 客户端:basic_agent.py
from langchain_mcp_adapters.tools import load_mcp_tools
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from mcp.client.stdio import stdio_client
from mcp import ClientSession, StdioServerParameters
async def run_agent():
# 配置服务器参数,使用相对路径引用服务脚本
server_params = StdioServerParameters(
command="python",
args=["math_server.py"],
transport="stdio"
)
# 建立连接并加载工具
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await load_mcp_tools(session)
# 创建智能体并执行查询
model = ChatOpenAI(model="gpt-4o")
agent = create_react_agent(model, tools)
result = await agent.ainvoke({
"messages": "计算(23+47)*15-302的结果"
})
print(f"计算结果: {result['messages'][-1].content}")
if __name__ == "__main__":
import asyncio
asyncio.run(run_agent())
场景二:多服务器协同工作
问题描述:需要同时调用数学计算和天气查询服务,实现跨领域信息整合的智能问答。
解决方案:使用MultiServerMCPClient管理多个异构MCP服务器,统一工具访问接口。
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
async def multi_server_agent():
# 配置多服务器连接信息
server_config = {
"math": {
"command": "python",
"args": ["math_server.py"],
"transport": "stdio"
},
"weather": {
"url": "http://localhost:8000/sse",
"transport": "sse" # 支持服务器发送事件协议
}
}
# 上下文管理多服务器连接
async with MultiServerMCPClient(server_config) as client:
# 获取所有服务器提供的工具
tools = client.get_tools()
# 创建智能体处理复杂查询
model = ChatOpenAI(model="gpt-4o")
agent = create_react_agent(model, tools)
# 处理需要跨服务器协作的查询
response = await agent.ainvoke({
"messages": "纽约今天的平均气温是22°C,如果这个温度每小时上升3°C,5小时后的温度是多少?"
})
print(f"智能体回答: {response['messages'][-1].content}")
if __name__ == "__main__":
import asyncio
asyncio.run(multi_server_agent())
场景三:LangGraph API服务部署
问题描述:需要将MCP工具集成的智能体部署为长期运行的API服务,支持外部应用调用。
解决方案:结合LangGraph的API服务能力,构建包含MCP工具的持久化智能体服务。
# graph.py
from contextlib import asynccontextmanager
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from langgraph.graph import StateGraph, MessagesState
# 定义状态结构
class AgentState(MessagesState):
pass
@asynccontextmanager
async def graph_builder():
"""创建包含MCP工具的LangGraph智能体"""
async with MultiServerMCPClient({
"math": {
"command": "python",
"args": ["math_server.py"],
"transport": "stdio"
}
}) as client:
# 初始化模型和工具
model = ChatOpenAI(model="gpt-4o")
tools = client.get_tools()
# 构建状态图
graph = StateGraph(AgentState)
# 定义智能体节点
def agent_node(state: AgentState):
return create_react_agent(model, tools).invoke(state)
graph.add_node("agent", agent_node)
graph.set_entry_point("agent")
graph.set_finish_point("agent")
# 编译并返回图
yield graph.compile()
生态展望:扩展与集成方向
1. 云原生部署支持
未来版本将提供Kubernetes部署配置,通过容器化实现MCP服务器的弹性伸缩,满足高并发场景需求。社区正在开发Helm Chart模板,简化在云环境中的部署流程。
2. 多模态工具集成
计划扩展协议支持,允许MCP服务器提供图像生成、语音处理等多模态工具,通过LangChain MCP Adapters无缝集成到多模态智能体应用中。
3. 工具能力编排
开发可视化工具编排界面,允许开发者通过拖拽方式组合来自不同MCP服务器的工具,构建复杂的工作流,并自动生成LangGraph代码。
贡献指南
项目欢迎各类贡献,包括但不限于:
- 协议适配扩展:支持更多传输协议或工具类型
- 性能优化:连接池管理和并发处理改进
- 文档完善:教程、API文档和示例场景补充
代码仓库获取:
git clone https://gitcode.com/gh_mirrors/la/langchain-mcp-adapters
加入我们的开发者社区,一起构建更强大的AI工具集成生态!
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0151- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
LongCat-Video-Avatar-1.5最新开源LongCat-Video-Avatar 1.5 版本,这是一款经过升级的开源框架,专注于音频驱动人物视频生成的极致实证优化与生产级就绪能力。该版本在 LongCat-Video 基础模型之上构建,可生成高度稳定的商用级虚拟人视频,支持音频-文本转视频(AT2V)、音频-文本-图像转视频(ATI2V)以及视频续播等原生任务,并能无缝兼容单流与多流音频输入。00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0112