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 支持,这是目前最成熟的集成方式。

安装依赖

bash
pip install langchain-mcp-adapters langchain-openai langgraph

基本集成:使用 MultiServerMCPClient

python
from 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 格式,无需手动适配
  • 支持 stdiostreamable_http 两种传输方式
  • 与 LangGraph 深度集成,可直接用于构建多步骤 Agent 工作流

实际场景:RAG + MCP 工具联动

python
from 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 中。

安装依赖

bash
pip install llama-index mcp

集成示例

python
from 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,通过 MCPServerStdioMCPServerSse 两种类连接 MCP 服务器。

python
from 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 作为工具源,可快速为多智能体团队添加外部能力。

python
from 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 支持方式适用场景成熟度
LangChainlangchain-mcp-adapters 官方包工具编排、多步骤 Agent
LlamaIndex手动适配 + MCP ClientRAG + 外部工具增强
OpenAI Agents SDK原生 MCPServerStdio/SseOpenAI 模型优先场景
CrewAIMCPTool 适配器多智能体协作

实战建议

选择策略

  • 已有 LangChain 项目:直接使用 langchain-mcp-adapters,零侵入集成
  • 文档密集型应用:LlamaIndex + MCP 工具,检索与工具调用互补
  • OpenAI 生态:Agents SDK 原生支持,配置最简洁
  • 多智能体场景:CrewAI + MCP,每个 Agent 可连接不同的 MCP Server

性能优化

  • MCP 单次工具调用额外开销约 5-50ms,对大多数场景可忽略
  • 频繁调用的工具结果可缓存,减少重复 MCP 请求
  • 使用 streamable_http 传输时,建议配置连接池复用

调试技巧

使用 Anthropic 官方提供的 MCP Inspector 可视化调试工具:

bash
npx @modelcontextprotocol/inspector python my_server.py

该工具支持:

  • 可视化测试每个 MCP 工具的输入输出
  • 浏览 MCP Server 暴露的资源列表
  • 实时查看请求/响应日志

总结

MCP 的价值在于一次编写,多框架复用。2026 年主流 AI 框架已全面拥抱 MCP,langchain-mcp-adapters 是目前最成熟的集成方案。建议优先使用各框架的官方 MCP 适配器,而非自行编写桥接代码,以确保兼容性和可维护性。

标签:MCP