大模型技术 Agent添加MCP工具

MCP (Model Context Protocol) 是由 Anthropic 推出的新标准,旨在统一大模型与外部数据、工具之间的连接方式。在 LangChain 中集成 MCP 工具,可以让你轻松调用成百上千个现成的 MCP 服务(如本地文件操作、Google Search、SQLite 查询等)。

要在 LangChain Agent 中添加 MCP 工具,主要分为三步:连接 MCP 服务器转换工具格式注入 Agent


一、 环境准备

你需要安装 langchain-mcp 库(这是 LangChain 专门为 MCP 开发的集成包):

bash 复制代码
pip install langchain-mcp langchain-openai

二、 核心步骤与代码示例

假设我们要连接一个现成的 MCP 服务器(例如一个提供本地文件系统操作或简单数学运算的服务)。

1. 配置 MCP 服务器连接

MCP 通常通过 Stdio (标准输入输出,常用于本地可执行文件)或 SSE(服务器发送事件,常用于远程服务)进行通信。

python 复制代码
from langchain_mcp import McpToolkit
from langchain_mcp.client import StdioServerParameters

# 定义如何启动 MCP 服务器
# 这里以一个名为 "my-mcp-server" 的本地命令为例
server_params = StdioServerParameters(
    command="npx",
    args=["-y", "@modelcontextprotocol/server-everything"], # 这是一个官方示例服务器
    env=None
)

2. 获取并转换 MCP 工具

使用 McpToolkit 连接服务器并将其提供的工具转换为 LangChain 可识别的 BaseTool 格式。

python 复制代码
# 初始化 Toolkit
# 注意:这通常需要在异步环境下运行或使用 context manager
async def get_tools():
    toolkit = McpToolkit(server_parameters=server_params)
    
    # 初始化连接并获取工具列表
    await toolkit.initialize()
    return toolkit.get_tools()

3. 将工具交给 Agent

一旦拿到了 tools 列表,后续步骤与常规 LangChain Agent 开发完全一致。

python 复制代码
import asyncio
from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate

async def main():
    # 1. 初始化模型(需支持 Tool Calling)
    llm = ChatOpenAI(model="gpt-4o")

    # 2. 获取 MCP 工具
    server_params = StdioServerParameters(
        command="npx",
        args=["-y", "@modelcontextprotocol/server-everything"]
    )
    toolkit = McpToolkit(server_parameters=server_params)
    await toolkit.initialize()
    tools = toolkit.get_tools()

    # 3. 创建 Prompt
    prompt = ChatPromptTemplate.from_messages([
        ("system", "你是一个拥有外部插件能力的助手。"),
        ("human", "{input}"),
        ("placeholder", "{agent_scratchpad}"),
    ])

    # 4. 构建 Agent
    agent = create_tool_calling_agent(llm, tools, prompt)
    agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

    # 5. 执行任务
    # 假设该 MCP 服务器提供了一个 echo 工具
    result = await agent_executor.ainvoke({"input": "请使用 echo 工具对我说 '你好,MCP!'"})
    print(result["output"])

# 运行异步主函数
if __name__ == "__main__":
    asyncio.run(main())

三、 为什么使用 MCP 协议的工具?

  1. 即插即用 :你可以直接使用社区维护的 MCP 服务器列表(如 Postgres, Slack, GitHub, Docker 等),无需自己编写工具的 Python 函数。
  2. 跨语言:MCP 服务器可以用 TypeScript, Go, Python 等任何语言编写,而你的 LangChain 应用依然可以无缝调用。
  3. 标准化:工具的定义(Name, Description, Schema)完全遵循协议,减少了 LLM 解析出错的概率。

四、 常见注意事项

  • 异步运行 :MCP 的底层通信通常是异步的,因此建议在异步(async/await)环境中使用 langchain-mcp
  • 资源释放 :在生产环境中,记得在应用关闭时通过 await toolkit.close() 断开与 MCP 服务器的连接,防止僵尸进程。
  • 多服务器连接 :你可以定义多个 StdioServerParameters,将来自不同服务器的工具汇总到一个 tools 列表中交给 Agent,实现多功能组合。

总结 :通过 McpToolkit,LangChain 将 MCP 服务器变成了一个"超级工具包",极大地扩展了 Agent 的能力边界。

相关推荐
元Y亨H1 小时前
大模型技术-RAG 向量存储和检索 概述
langchain·llm
元Y亨H1 小时前
大模型技术 LangChain使用MCP
langchain·llm
chaors1 小时前
DeepResearchSystem 0x07:搜索缓存
llm·agent·ai编程
starzy19909 小时前
LangChain深度解析:模型、链、Agent三大核心,解锁大模型落地的正确姿势
chatgpt·langchain
mingo_敏11 小时前
DeepAgents : 检索(Retrieval)
人工智能·深度学习·langchain
DLYSB_12 小时前
AIOps 大模型实战:基于 LangChain 运维 Agent 的根因诊断与现场声光播报闭环
运维·langchain·报警灯
phltxy15 小时前
多智能体系统架构设计:从单体代理到协作网络
python·langchain·系统架构
玉鸯16 小时前
多 Agent 系统通信的实现原理与最佳实践
llm·agent·mcp
眼泪划过的星空16 小时前
LangChain 两大基础提示词模板:PromptTemplate 与 ChatPromptTemplate 详解
人工智能·python·langchain