langchain agent 是不是基于mcp 调用工具的?
Criado em: 24 de novembro de 2025
Criado em: 24 de novembro de 2025
langchain agent 是不是基于mcp 调用工具的?
不是“天生就基于 MCP”,但可以通过 MCP 来调用工具——前提是你显式把 MCP 适配器接进 LangChain。
LangChain 的 agents(不管是 ReAct、OpenAI tools agent、LLM Router 等)默认是走 LangChain 自己的 Tool 抽象:
你在代码里定义 Tool / StructuredTool,agent 通过模型的 function/tool calling 能力来调用它们。这个机制跟 MCP 没有强绑定关系。
MCP(Model Context Protocol)是 Anthropic 发起的一个开放协议,用来把“外部工具/数据/上下文”以标准化 client-server 方式暴露给 LLM。LangChain 现在提供了 MCP adapters,让 agent 能把 MCP server 提供的工具“转成 LangChain Tools”然后照常调用。官方文档明确说:LangChain agents 可以使用 MCP server 上定义的工具,需要借助 langchain-mcp-adapters 这类库。 (LangChain Docs)
也就是说:
LangChain agent 本身不是基于 MCP 的;MCP 只是 LangChain 支持的一种“把工具接进来”的标准接口。
你不用 MCP 也能正常写 agent;用 MCP 主要是为了跨系统/跨工具标准化接入,少写适配胶水。 (Cloudurable)
如果你愿意,我可以给你一个最小 demo:LangChain agent + MCP server 工具调用的结构长啥样。
langchain agent 是怎么路由到 具体的tool的?
LangChain Agent 路由到具体工具(Tool Routing) 的机制取决于你使用的 agent 类型,但核心流程都类似:** LLM 决定要调用哪个 tool,LangChain 负责执行**。下面我给你一个清晰、由浅到深的讲解。
你向 agent 提供工具列表(Tools)
每个 tool 都包含:
Agent 把“工具列表 + 用户输入 + 历史”交给 LLM
LLM 根据这些信息 决定要不要用工具,用哪个工具,用什么参数。
LangChain 读取 LLM 输出中的工具调用字段
"Action: tool_name" 形式的指令LangChain 从工具列表中找到对应 tool
用名称匹配:
pythontools = {tool.name: tool, ...} tools[llm_output.tool_name]()
调用工具 → 返回结果 → 再给 LLM → 直到完成
模型返回一个结构化的函数调用,例如:
json{ "tool_calls": [ { "name": "search_weather", "arguments": {"city": "New York"} } ] }
LangChain 内部基本做:
pythontool = tools["search_weather"] result = tool.run(arguments)
➡️ 路由关键点:直接用 tool.name 匹配工具表。
这是最稳定、最推荐的方式。
LLM 输出类似:
textThought: I need to look up today's weather Action: search_weather Action Input: {"city": "New York"}
LangChain 用正则解析 "Action:" 字段,然后做:
pythontool = tools[action_name] tool.run(action_input)
➡️ 路由关键点:从文本里解析 action_name,再查名字。
原理相同,只是工具来源变成 MCP 的“远程工具列表”。
LangChain 把 MCP 的 tool schema 转成 LangChain Tool,再按名称匹配。
➡️ 依然是 通过 tool.name 精确匹配。
tool_call(name="xxx")"Action: xxx"tools[name]、执行📌 工具名必须唯一
📌 LLM 决定调用哪个工具(而不是 LangChain 决定)
📌 LangChain 只是做执行与循环控制
pythonfrom langchain.agents import initialize_agent, Tool from langchain_openai import ChatOpenAI def add(x, y): return x + y def subtract(x, y): return x - y tools = [ Tool(name="add", func=lambda q: add(**q), description="Add two numbers"), Tool(name="subtract", func=lambda q: subtract(**q), description="Subtract two numbers"), ] llm = ChatOpenAI(model="gpt-4o-mini") agent = initialize_agent(tools, llm, agent="openai-tools") agent.invoke("帮我算一下 10 - 4")
运行时的路由逻辑:
"subtract"json{"name": "subtract", "arguments": {"x": 10, "y": 4}}
tools["subtract"] → 执行 → 返回 → LLM 最终回答 6你想看哪个?
网上有没有好的 langchain agent 实践的开源项目?
有,而且现在(2025 年)社区里“真正能学到 agent 工程实践”的开源项目主要集中在 LangGraph / ReAct / 多智能体编排 / 工具调用落地 这几类。我按“学习价值 + 工程参考性”给你分组推荐一些值得直接 clone 下来读的仓库。
LangGraph 是 LangChain 生态里专门做 agent 编排/状态机的官方框架,这个主仓库自带大量 example(从单 agent、ReAct、Plan&Execute 到 multi-agent、HITL、memory、RAG 等),基本就是官方实践集合。要学“生产级 agent 应该怎么控流程、怎么持久化、怎么加人类介入”,看这里最稳。 (GitHub)
你可以重点翻 examples 目录里这些主题:
create-react-agent-*(ReAct + tool calling 的标准写法)human_in_the_loop/(人工审批/回滚)multi_agent/(Supervisor/Team pattern)memory/(长期记忆/持久化 checkpoints)官方的 LangGraph ReAct agent 模板,代码量小但结构清晰,展示了“Graph 版 ReAct”如何循环推理+调用多工具。适合你当作骨架改自己项目。 (GitHub)
同一套 ReAct/graph 思路的 JS/TS 实现,想做前后端或 Node 服务的 agent 可以对照着抄。 (GitHub)
官方出的“agent harness/脚手架”,带 planning、文件系统、子 agent 生成等能力,算是偏真实产品形态的综合 demo。如果你想看更接近“AutoGPT 但 LangChain 风格”的工程组织方式,这个很有参考价值。 (GitHub)
官方开源的 no-code/low-code LangGraph agent 平台,包含 UI、部署、调试、工具接入、Supervisor 等。适合看完整产品链路:从图形化编排到运行时执行。 (GitHub)
一个从基础到进阶的 LangGraph 学习仓库,覆盖 SQL agent、RAG agent、多 agent 协作、调试与 LangSmith 观测等,路径清晰、例子多。拿来系统练手很好。 (GitHub)
偏“多智能体系统工程”的 modular 框架,有 Supervisor/专职子 agent/工具层拆分,适合学 multi-agent 的结构化组织。 (GitHub)
强调 ReAct + function calling + stateful agent,示例比较贴近“会规划/会执行/会复盘”的 agent 框架。 (GitHub)
这类仓库不大,但非常适合你快速理解 agent 路由 tools 的最小工作闭环。
junfanz1/Code-Interpreter-ReAct-LangChain-Agent:
用最少代码演示 ReAct agent + 自定义 tool 的推理/行动循环。适合当入门剖面。 (GitHub)
botextractai/ai-langchain-react-agent:
ReAct + 多工具串联(Python REPL / 搜索等),能直观看到 agent 连续选工具的过程。 (GitHub)
omiguelpinheiro/react-agent:
ReAct + SQL tool + memory buffer 的小项目,展示“agent+数据库”这类典型落地。 (GitHub)
一个专门收集 LangChain/LangGraph agent 项目的清单,适合你按领域继续挖(RAG、代码、浏览器自动化等)。 (GitHub)
两个 LangGraph 项目/模板/教程合集,里面经常能挖到新鲜的业务 demo。 (GitHub)
想学官方最新范式 / 生产级结构
→ 先看 langgraph 主仓库 examples + react-agent 模板。 (GitHub)
想做多智能体/监督者架构
→ langgraph/examples/multi_agent + LangGraph-Multi-Agent。 (GitHub)
想快速上手 agent + tools 的最小闭环
→ 任意一个小 ReAct demo(junfanz1 / botextractai / omiguelpinheiro)。 (GitHub)
想看完整“产品级 Agent 平台”
→ open-agent-platform。 (GitHub)
如果你告诉我你现在主要用 Python 还是 TS、想做 RAG/SQL/多 agent/浏览器自动化 哪一类,我可以从这些仓库里挑 2–3 个最对口的,给你一条具体的阅读/抄作业路线(从哪个 example 开始,先改哪几块)。