5月28日 06:28
MCP 如何与 LangChain、LlamaIndex 等 AI 框架集成?
MCP(Model Context Protocol)是 Anthropic 推出的开放标准协议,用于统一 AI 模型与外部工具、数据源的连接方式。2026 年,MCP 已成为 AI 开发领域的基础设施层,LangChain、LlamaIndex、CrewAI 等主流框架均已原生支持 MCP。
本文将介绍 MCP 与主要 AI 框架的集成方法,重点讲解 2026 年最新的官方适配方案,并提供可直接运行的代码示例。
MCP 集成的核心思路
MCP 的设计理念是"协议标准化,实现解耦"。集成的基本模式是:
- MCP Server 暴露工具和资源,遵循统一的 JSON-RPC 接口
- AI 框架 作为 MCP Client,通过标准协议调用工具
- 传输层 支持
stdio(子进程管道)和streamable_http(网络)两种方式
这意味着:你只需编写一次 MCP Server,就能被所有兼容 MCP 的框架使用,无需为每个框架写单独的适配器。
1. 与 LangChain 集成(官方推荐方案)
LangChain 通过 langchain-mcp-adapters 包提供官方 MCP 支持,这是目前最成熟的集成方式。
安装依赖
bashpip install langchain-mcp-adapters langchain-openai langgraph
基本集成:使用 MultiServerMCPClient
pythonfrom langchain_mcp_adapters.client import MultiServerMCPClient from langgraph.prebuilt import create_react_agent from langchain_openai import ChatOpenAI # 配置 MCP 服务器连接 client = MultiServerMCPClient( { "math_server": { "command": "python", "args": ["math_mcp_server.py"], "transport": "stdio", }, "search_server": { "url": "http://localhost:8000/mcp", "transport": "streamable_http", } } ) # 获取 MCP 工具并创建 Agent async def run(): async with client: tools = client.get_tools() llm = ChatOpenAI(model="gpt-4o") agent = create_react_agent(llm, tools) result = await agent.ainvoke({ "messages": [{"role": "user", "content": "计算 15 的平方根,然后搜索这个数的数学意义"}] }) print(result) import asyncio asyncio.run(run())
关键特性
MultiServerMCPClient是统一入口,同时管理多个 MCP 服务器连接- 自动将 MCP 工具转换为 LangChain Tool 格式,无需手动适配
- 支持
stdio和streamable_http两种传输方式 - 与 LangGraph 深度集成,可直接用于构建多步骤 Agent 工作流
实际场景:RAG + MCP 工具联动
pythonfrom langchain_mcp_adapters.client import MultiServerMCPClient from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent async def rag_with_mcp_tools(): client = MultiServerMCPClient( { "db_server": { "url": "http://localhost:8001/mcp", "transport": "streamable_http", } } ) async with client: tools = client.get_tools() llm = ChatOpenAI(model="gpt-4o", temperature=0) agent = create_react_agent(llm, tools) result = await agent.ainvoke({ "messages": [{"role": "user", "content": "查找最近的订单中金额最高的客户信息"}] }) return result
2. 与 LlamaIndex 集成
LlamaIndex 通过 MCP 工具适配器将 MCP Server 暴露的工具整合到其查询引擎和 Agent 中。
安装依赖
bashpip install llama-index mcp
集成示例
pythonfrom mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client from llama_index.core.tools import FunctionTool from llama_index.core.agent import ReActAgent from llama_index.llms.openai import OpenAI async def create_mcp_tool(session, tool_info): async def tool_fn(**kwargs): result = await session.call_tool(tool_info.name, arguments=kwargs) return result return FunctionTool.from_defaults( fn=tool_fn, name=tool_info.name, description=tool_info.description ) async def llamaindex_with_mcp(): server_params = StdioServerParameters( command="python", args=["my_mcp_server.py"], ) async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() tools_result = await session.list_tools() llama_tools = [] for tool_info in tools_result.tools: tool = await create_mcp_tool(session, tool_info) llama_tools.append(tool) llm = OpenAI(model="gpt-4o") agent = ReActAgent.from_tools(llama_tools, llm=llm, verbose=True) response = agent.query("帮我查询今天的天气并分析适合的出行建议") print(response) import asyncio asyncio.run(llamaindex_with_mcp())
LlamaIndex 集成要点
- LlamaIndex 适合文档密集型应用,MCP 工具可补充其外部数据获取能力
- 优先使用
ReActAgent,它能根据查询自动决定是否调用 MCP 工具 - MCP 工具可与 LlamaIndex 内置的
QueryEngineTool混合使用
3. 与 OpenAI Agents SDK 集成
OpenAI 的 Agents SDK 原生支持 MCP,通过 MCPServerStdio 和 MCPServerSse 两种类连接 MCP 服务器。
pythonfrom agents import Agent, Runner from agents.mcp import MCPServerStdio, MCPServerSse async def openai_with_mcp(): mcp_server = MCPServerStdio( name="file_system", params={"command": "python", "args": ["fs_mcp_server.py"]} ) mcp_remote = MCPServerSse( name="search", url="http://localhost:8000/sse" ) agent = Agent( name="MCP Assistant", instructions="你可以使用文件系统和搜索工具来帮助用户。", mcp_servers=[mcp_server, mcp_remote] ) result = await Runner.run(agent, "读取 config.json 并搜索相关的配置说明") print(result.final_output)
4. 与 CrewAI 集成
CrewAI 支持 MCP 作为工具源,可快速为多智能体团队添加外部能力。
pythonfrom crewai import Agent, Task, Crew from mcp import StdioServerParameters from crewai_tools import MCPTool async def crewai_with_mcp(): server_params = StdioServerParameters( command="python", args=["research_mcp_server.py"] ) mcp_tool = MCPTool(server_params=server_params) tools = await mcp_tool.get_tools() researcher = Agent( role="研究员", goal="收集和分析信息", tools=tools, verbose=True ) task = Task( description="研究 MCP 协议的最新发展趋势", agent=researcher ) crew = Crew(agents=[researcher], tasks=[task]) result = crew.kickoff() print(result)
各框架集成对比
| 框架 | MCP 支持方式 | 适用场景 | 成熟度 |
|---|---|---|---|
| LangChain | langchain-mcp-adapters 官方包 | 工具编排、多步骤 Agent | 高 |
| LlamaIndex | 手动适配 + MCP Client | RAG + 外部工具增强 | 中 |
| OpenAI Agents SDK | 原生 MCPServerStdio/Sse | OpenAI 模型优先场景 | 高 |
| CrewAI | MCPTool 适配器 | 多智能体协作 | 中 |
实战建议
选择策略
- 已有 LangChain 项目:直接使用
langchain-mcp-adapters,零侵入集成 - 文档密集型应用:LlamaIndex + MCP 工具,检索与工具调用互补
- OpenAI 生态:Agents SDK 原生支持,配置最简洁
- 多智能体场景:CrewAI + MCP,每个 Agent 可连接不同的 MCP Server
性能优化
- MCP 单次工具调用额外开销约 5-50ms,对大多数场景可忽略
- 频繁调用的工具结果可缓存,减少重复 MCP 请求
- 使用
streamable_http传输时,建议配置连接池复用
调试技巧
使用 Anthropic 官方提供的 MCP Inspector 可视化调试工具:
bashnpx @modelcontextprotocol/inspector python my_server.py
该工具支持:
- 可视化测试每个 MCP 工具的输入输出
- 浏览 MCP Server 暴露的资源列表
- 实时查看请求/响应日志
总结
MCP 的价值在于一次编写,多框架复用。2026 年主流 AI 框架已全面拥抱 MCP,langchain-mcp-adapters 是目前最成熟的集成方案。建议优先使用各框架的官方 MCP 适配器,而非自行编写桥接代码,以确保兼容性和可维护性。