服务端阅读 05月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 支持,这是目前最成熟的集成方式。安装依赖pip install langchain-mcp-adapters langchain-openai langgraph基本集成:使用 MultiServerMCPClientfrom langchain_mcp_adapters.client import MultiServerMCPClientfrom langgraph.prebuilt import create_react_agentfrom 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 工具并创建 Agentasync 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 asyncioasyncio.run(run())关键特性MultiServerMCPClient 是统一入口,同时管理多个 MCP 服务器连接自动将 MCP 工具转换为 LangChain Tool 格式,无需手动适配支持 stdio 和 streamable_http 两种传输方式与 LangGraph 深度集成,可直接用于构建多步骤 Agent 工作流实际场景:RAG + MCP 工具联动from langchain_mcp_adapters.client import MultiServerMCPClientfrom langchain_openai import ChatOpenAIfrom langgraph.prebuilt import create_react_agentasync 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 result2. 与 LlamaIndex 集成LlamaIndex 通过 MCP 工具适配器将 MCP Server 暴露的工具整合到其查询引擎和 Agent 中。安装依赖pip install llama-index mcp集成示例from mcp import ClientSession, StdioServerParametersfrom mcp.client.stdio import stdio_clientfrom llama_index.core.tools import FunctionToolfrom llama_index.core.agent import ReActAgentfrom llama_index.llms.openai import OpenAIasync 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 asyncioasyncio.run(llamaindex_with_mcp())LlamaIndex 集成要点LlamaIndex 适合文档密集型应用,MCP 工具可补充其外部数据获取能力优先使用 ReActAgent,它能根据查询自动决定是否调用 MCP 工具MCP 工具可与 LlamaIndex 内置的 QueryEngineTool 混合使用3. 与 OpenAI Agents SDK 集成OpenAI 的 Agents SDK 原生支持 MCP,通过 MCPServerStdio 和 MCPServerSse 两种类连接 MCP 服务器。from agents import Agent, Runnerfrom agents.mcp import MCPServerStdio, MCPServerSseasync 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 作为工具源,可快速为多智能体团队添加外部能力。from crewai import Agent, Task, Crewfrom mcp import StdioServerParametersfrom crewai_tools import MCPToolasync 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 可视化调试工具:npx @modelcontextprotocol/inspector python my_server.py该工具支持:可视化测试每个 MCP 工具的输入输出浏览 MCP Server 暴露的资源列表实时查看请求/响应日志总结MCP 的价值在于一次编写,多框架复用。2026 年主流 AI 框架已全面拥抱 MCP,langchain-mcp-adapters 是目前最成熟的集成方案。建议优先使用各框架的官方 MCP 适配器,而非自行编写桥接代码,以确保兼容性和可维护性。