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工具集成生态!
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
CAP基于最终一致性的微服务分布式事务解决方案,也是一种采用 Outbox 模式的事件总线。C#00