MCP 协议 vs. LangChain 工具调用:八大核心差异解析
一、定位与范畴:协议 vs. 框架
- MCP 是一套 网络协议,规定了 消息格式、传输层(SSE / Streamable HTTP / stdio)与 OAuth 2.1 安全模型,目的是让 任何 LLM 与 任何 外部系统之间可以安全、流式、标准化通信。
- LangChain 是一款 开发框架(Python / JS),侧重在 代码层 编排提示、记忆、检索、代理决策等逻辑,并通过 “工具(Tool)” 接口把函数暴露给模型。它本身不定义网络协议,也不限传输方式。
二、工具声明方式
- LangChain:在代码里
bind_tools()
将本地函数 / Pydantic 类序列化为 JSON Schema,再随同模型请求一起发给 LLM;工具元数据由 客户端 控制。 - MCP:工具(Tool)由 服务器端 预先注册,客户端通过
/.well-known/mcp.json
自动发现并拉取 Schema;模型只需发送 JSON-RPC 调用,不再传递工具定义。
三、流式与可靠传输
- MCP 原生支持 SSE、Streamable HTTP、stdio,具备 断点续传、会话 ID、事件 ID,专为 Token 级推送与长任务设计。
- LangChain 依赖底层模型 API 的
stream=True
实现流式;网络层面并无统一规范。若需跨网流式,仍要自行实现 WebSocket/HTTP 长轮询等。
四、安全模型
- MCP 强制使用 OAuth 2.1 + PKCE,令牌短效且带
scope
与audience
,并建议 mTLS;有效避免 API Key 泄露与越权请求。 - LangChain 并不规定安全机制,常见做法是将 API Key 存于环境变量或 Secrets;如何授权取决于调用的具体后端服务。
五、部署位置与可扩展性
- MCP Server 可托管在云端或内网,充当“数据网关”;一旦上线即可同时被 Claude、ChatGPT、Gemini 等不同模型消费。
- LangChain 工具 运行在与应用同一进程(或子服务),扩展到多语言 / 跨云时需要额外的 RPC 或 HTTP 层。
六、生态互操作性
- MCP 致力于“供应商中立”——任何支持 JSON-RPC + OAuth 的客户端都能访问同一服务器,形成远程端点生态(PulseMCP Directory 等)。
- LangChain 专注于 开发体验:提供链、记忆、向量检索、代理执行器等抽象,但生态主要局限在使用 LangChain API 的应用。
七、典型使用场景
需求 | 优先选择 | 理由 |
---|---|---|
让 LLM 安全读写企业 SaaS / 内部 API | MCP | OAuth 2.1、细粒度作用域、跨模型复用 |
在单体应用内编排多步推理、数据库检索、记忆 | LangChain | 丰富的链式组件与记忆管理 |
构建 DevOps / 消息流代理,需要毫秒级推送 | MCP | Streamable HTTP + 断点续传 |
快速原型、低代码实验、多模型对比 | LangChain | 统一工具调用接口、丰富插件 |
八、互补关系LangChain ≥ 0.3.0 已推出 langchain-mcp-adapters
,可让代理将工具调用透传到远程 MCP Server——开发者照写 LangChain 逻辑,同时获得 MCP 的网络与安全优势。