MCP:AI时代的USB-C标准
一、概念什么是 MCPMCPModel Context Protocol是 Anthropic 推出的开放协议定义了 LLM 应用与外部工具、数据源之间的标准通信接口。一个类比就够了MCP 是 AI 时代的 USB-C。USB-C 之前每个设备厂商自建接口——Lightning、Micro-USB、Mini-USB……你出门要带一包线。USB-C 统一之后一根线走天下。MCP 之前也一样每个 LLM 应用要对接 GitHub就得写一套 GitHub 集成要对接数据库再写一套数据库适配。N 个应用 x M 个工具 NxM 套集成代码。MCP 的目标写一次适配所有 LLM 应用通用。核心定义术语含义MCP Server暴露工具/数据的服务端如 filesystem server、github serverMCP Client连接 Server 并消费其能力的客户端如 LangChain AgentProtocolClient 与 Server 之间的 JSON-RPC 通信协议MCP 不是 LangChain 的私有协议——它是 Anthropic 开源、社区驱动的标准任何 LLM 框架都可以接入。一句话总结MCP 是 AI 时代的 USB-C——用统一协议替代 NxM 集成一次实现处处可用。二、价值为什么不能继续各写各的1. 解决 NxM 集成爆炸没有 MCP 的世界5 个 LLM 应用 x 10 个工具 50 套集成代码有 MCP 的世界10 个 MCP Server每个工具写一次 5 个 MCP Client每个应用接一次协议 10 5 15而不是 50从 NxM 降到 NM这就是标准协议的威力。2. 生态复用一次实现处处可用社区写好了一个mcp-server-github所有支持 MCP 的框架都能用——LangChain、Claude Desktop、Cursor、Cline……你不需要为每个框架重新写 GitHub 集成。3. 与 Function Calling 的差异维度Function CallingMCP定义方各模型厂商自定义Anthropic 开源协议社区标准工具在哪嵌在应用代码里独立 Server可远程部署跨模型每个模型的格式不同统一协议跨模型通用跨应用不可复用一次实现所有应用可用动态发现需硬编码工具列表Client 运行时发现 Server 的能力Function Calling 解决的是模型怎么调工具MCP 解决的是工具怎么暴露给所有模型——两者互补不冲突。4. 跨厂商兼容MCP 不绑定任何模型厂商。OpenAI、Anthropic、Google、DeepSeek 的模型都能通过 MCP 协议访问同一组工具。工具实现一次模型随意切换。核心价值MCP 把集成成本从 NxM 降到 NM工具一次实现、生态复用、跨厂商兼容——标准化的网络效应。三、用法四种典型接入方式用法 1用 langchain-mcp-adapters 连接已有 MCP Server社区已有大量现成的 MCP Server直接连from langchain_mcp_adapters.client import MultiServerMCPClientfrom langchain.agents import create_agent# 连接 filesystem MCP Server官方提供async with MultiServerMCPClient({filesystem: {command: npx,args: [-y, modelcontextprotocol/server-filesystem, /tmp],transport: stdio,}}) as client:tools client.get_tools()agent create_agent(modeldeepseek:deepseek-chat,toolstools,)result await agent.ainvoke({messages: [{role: user, content: 列出 /tmp 下的文件}]})print(result)不需要自己写任何工具代码——MCP Server 已经实现好了langchain-mcp-adapters自动把 MCP Tools 转成 LangChain Tools。用法 2把 MCP Tools 装进 create_agentMCP Tools 可以和普通 LangChain Tools 混用from langchain_mcp_adapters.client import MultiServerMCPClientfrom langchain.agents import create_agentfrom langchain_core.tools import tool# 自定义 LangChain 工具tooldef calculate(expression: str) - str:计算数学表达式return str(eval(expression))# MCP 工具 自定义工具混用async with MultiServerMCPClient({github: {command: npx,args: [-y, modelcontextprotocol/server-github],transport: stdio,env: {GITHUB_PERSONAL_ACCESS_TOKEN: ghp_xxx},}}) as client:mcp_tools client.get_tools() # GitHub MCP 工具all_tools mcp_tools [calculate] # 混合工具列表agent create_agent(modeldeepseek:deepseek-chat,toolsall_tools,)result await agent.ainvoke({messages: [{role: user, content: 查看 langchain 仓库的 star 数再算一下它的平方}]})print(result)Agent 会自动选择用 GitHub 工具查 star再用 calculate 工具算平方——MCP 工具和原生工具对 Agent 来说没有区别。用法 3MultiServerMCPClient 连接多个 Server一个 Agent 同时访问文件系统、数据库、GitHubfrom langchain_mcp_adapters.client import MultiServerMCPClientfrom langchain.agents import create_agentserver_config {filesystem: {command: npx,args: [-y, modelcontextprotocol/server-filesystem, /data],transport: stdio,},postgres: {command: npx,args: [-y, modelcontextprotocol/server-postgres,postgresql://user:passlocalhost/mydb],transport: stdio,},github: {command: npx,args: [-y, modelcontextprotocol/server-github],transport: stdio,env: {GITHUB_PERSONAL_ACCESS_TOKEN: ghp_xxx},},}async with MultiServerMCPClient(server_config) as client:# 自动汇聚三个 Server 的所有工具all_tools client.get_tools()print(f可用工具: {[t.name for t in all_tools]})agent create_agent(modeldeepseek:deepseek-chat,toolsall_tools,)result await agent.ainvoke({messages: [{role: user,content: 从 GitHub 读取 config.json写入数据库的 config 表}]})三个 Server 的工具自动汇聚Agent 跨 Server 编排——读文件、查数据库、操作 GitHub一条指令搞定。用法 4自己写一个 MCP Server用 MCP Python SDK 暴露自定义能力# server.py —— 一个简单的待办事项 MCP Serverfrom mcp.server.fastmcp import FastMCPmcp FastMCP(todo-server)# 用内存存储演示用todos: dict[int, dict] {}_next_id 1mcp.tool()def add_todo(title: str, priority: str medium) - str:添加一条待办事项global _next_idtodos[_next_id] {title: title, priority: priority, done: False}_next_id 1return f已添加: [{priority}] {title} (id{_next_id - 1})mcp.tool()def list_todos() - str:列出所有待办事项if not todos:return 暂无待办事项lines []for tid, t in todos.items():status DONE if t[done] else TODOlines.append(f {status} [{t[priority]}] {t[title]} (id{tid}))return \n.join(lines)mcp.tool()def complete_todo(todo_id: int) - str:将待办事项标记为已完成if todo_id not in todos:return f未找到 id{todo_id} 的待办事项todos[todo_id][done] Truereturn f已完成: {todos[todo_id][title]}if __name__ __main__:mcp.run() # 默认 stdio 传输然后在 LangChain 中连接from langchain_mcp_adapters.client import MultiServerMCPClientfrom langchain.agents import create_agentasync with MultiServerMCPClient({todo: {command: python,args: [server.py],transport: stdio,}}) as client:agent create_agent(modeldeepseek:deepseek-chat,toolsclient.get_tools(),)result await agent.ainvoke({messages: [{role: user,content: 帮我添加一个高优先级待办写 MCP 教程然后列出所有待办}]})print(result)自己写的 Server 和社区 Server 对 Agent 来说完全一样——这就是协议标准化的威力。四、原理MCP 的协议设计与转换机制1. MCP 三大原语MCP Server 通过三种原语暴露能力原语作用类比Tools可被模型调用的函数HTTP POST —— 执行操作有副作用Resources可被读取的数据/文件HTTP GET —— 读取信息无副作用Prompts预定义的提示词模板书签 —— 快速加载常用 prompt最常用的是Tools——这也是 LangChain 适配器主要转换的部分。Resources 提供结构化数据如数据库 SchemaPrompts 提供领域模板如代码审查模板。2. 传输层三种方式传输方式场景特点stdio本地进程通信最简单Client 启动 Server 子进程通过 stdin/stdout 通信SSE远程 HTTP 服务Server-Sent Events适合已有 HTTP 基础设施Streamable HTTP新一代远程通信MCP 2025-03 规范引入支持双向流、无状态部署本地开发用 stdio 最方便——不需要起服务Client 自动拉起 Server 进程。生产部署用 HTTP 传输Server 独立部署、水平扩展。3. Client-Server 模型------------- ------------- -------------| LLM | | MCP Client | | MCP Server || (LangChain)|----| (适配层) |----| (工具/数据) |------------- ------------- -------------1. Agent 调用 2. 协议转换 3. 执行并返回LangChain Tool JSON-RPC 工具结果流程Agent 看到的是 LangChain Tool正常调用MCP Client 把 Tool 调用翻译成 JSON-RPC 请求发送给 ServerServer 执行操作返回结果Client 把结果包装成 LangChain ToolMessage返回给 AgentAgent 完全不知道背后是 MCP——它只看到 LangChain Tool。4. 与 LangChain Tools 的转换关系langchain-mcp-adapters做的核心事情MCP Tool Schema LangChain Tool Schema------------------- ---------------------{ tool def xxx(...):name: add_todo, - 添加待办事项description: ..., def add_todo(title: str, ...):inputSchema: { ...type: object,properties: {...}}}转换规则name → 函数名description → 工具 docstring模型靠这个判断何时调用inputSchema → 函数参数Pydantic 模型调用时的参数 → JSON-RPC 请求的params.arguments反过来也可以LangChain Tool 可以包装成 MCP Server 暴露出去——让其他 MCP Client 也能用你的工具。5. 动态发现机制MCP Client 连接 Server 后第一步是discovery发现Client ----tools/list---- Server Client ---[{name, description, inputSchema}, ...]--- Server不需要硬编码工具列表——Client 运行时自动发现 Server 提供了哪些工具。这意味着Server 升级加了新工具Client 自动感知不同 Server 可以提供同名工具Client 负责消歧按需连接不用时断开小结视角一句话概念Anthropic 推出的开放协议定义 LLM 应用与工具/数据源的标准通信接口——AI 时代的 USB-C价值把集成成本从 NxM 降到 NM一次实现生态复用跨厂商兼容与 Function Calling 互补用法langchain-mcp-adapters 连接已有 ServerMCP Tools 混入 create_agentMultiServerMCPClient 聚合多 ServerFastMCP 自建 Server原理三大原语Tools/Resources/Prompts三种传输stdio/SSE/HTTPClient-Server 模型自动发现MCP Tool - LangChain Tool 双向转换记住一件事MCP 的核心原则是用标准协议替代碎片集成——就像 USB-C 统一了充电接口MCP 统一了 AI 工具接口让一次实现成为生态资产。系列完结高阶模式三篇走完LangChain 的高阶模式体系就位了#概念角色1Multi-agent协作——多个 Agent 分工协同2垂类 Agent专精——领域知识 专用工具链3MCP连接——标准协议打通工具生态Multi-agent 解决谁来做垂类 Agent 解决做得专MCP 解决用什么——三者协同Agent 才能从玩具走向生产。

相关新闻

CodeGraph 使用指南

CodeGraph 使用指南

快速安装一键安装(推荐,无需 Node.js)bash# macOS / Linux curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh# Windows (PowerShell) irm https://raw.githubusercontent.com/colbymchenry/codegr…

2026/9/21 1:47:17 阅读更多 →
Cursor写了一周的代码,我验收时差点砸了电脑

Cursor写了一周的代码,我验收时差点砸了电脑

Cursor写了一周的代码,我验收时差点砸了电脑300万行AI代码写了个浏览器,结果连编译都通不过一、事情的起因 上个月接了个活,重构一个老旧的管理后台。 项目不大,但业务逻辑绕得很——权限分级、审批流、多租户数据隔离&#xff0c…

2026/9/18 16:50:10 阅读更多 →
抖音无水印批量下载器:简单三步实现高效内容管理终极指南

抖音无水印批量下载器:简单三步实现高效内容管理终极指南

抖音无水印批量下载器:简单三步实现高效内容管理终极指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…

2026/9/17 5:57:41 阅读更多 →

最新新闻

3行代码跑通psp图:源码解析帮你彻底搞懂原理

3行代码跑通psp图:源码解析帮你彻底搞懂原理

3行代码跑通psp图:源码解析帮你彻底搞懂原理 刚拿到这份psp图代码,是不是满屏报错?别慌,复制来的代码跑不通不知道怎么调,这是每个新手入行的第一道坎。今天咱们不整虚的,直接拆解psp图的底层逻辑,用源码解析的方式,带你从原理到实战,一步…

2026/9/22 1:23:30 阅读更多 →
洛克王国彩笛卷完整示例:3步解决代码跑不通的底层逻辑

洛克王国彩笛卷完整示例:3步解决代码跑不通的底层逻辑

洛克王国彩笛卷完整示例:3步解决代码跑不通的底层逻辑 刚拿到一份洛克王国彩笛卷相关的完整示例代码,复制进本地环境,点击运行,报错红屏一片?这种“复制粘贴就报错”的折磨,很多开发者都经历过。别急着删库重装,也别怀疑自己智商,问题往往出在环境依…

2026/9/22 1:23:30 阅读更多 →
搞定周六的英文,这份保姆级教程让你避开版本升级的坑

搞定周六的英文,这份保姆级教程让你避开版本升级的坑

搞定周六的英文,这份保姆级教程让你避开版本升级的坑 上周刚把项目从 Python 3.9 升到 3.12,原本跑得好好的脚本直接报错 ModuleNotFoundError…

2026/9/22 1:23:30 阅读更多 →
Sanic新手避坑指南:5个让你项目跑不起来的致命错误

Sanic新手避坑指南:5个让你项目跑不起来的致命错误

Sanic新手避坑指南:5个让你项目跑不起来的致命错误 看了一堆Sanic教程,代码复制粘贴就能跑,真到了自己写项目,一启动就报错,或者接口调不通,是不是特别崩溃?很多新手都栽在这里。不是Sanic难用,而是大家只学了“怎么启动”,没搞懂“…

2026/9/22 1:23:29 阅读更多 →
3步搞定微课背景音乐,水利新人必备保姆级教程

3步搞定微课背景音乐,水利新人必备保姆级教程

3步搞定微课背景音乐,水利新人必备保姆级教程 刚学完Python或JS语法,对着屏幕发呆?很多水利行业的朋友转型做移动端开发时都卡在这:代码会写,但真到给微课视频加背景音乐、处理音频流时,完全不知道项目怎么搭。别慌,这篇 保姆级教程…

2026/9/22 1:22:28 阅读更多 →
画漫画人物女生避坑指南附完整示例

画漫画人物女生避坑指南附完整示例

画漫画人物女生避坑指南附完整示例 版本升级后 API 全变了,你盯着屏幕上的报错发呆,是不是觉得昨天还能跑通的代码,今天就像换了个语言?别慌,这不是你的错,是工具链迭代太快。很多刚入行的同学,包括我自己早期,都栽在【画漫画人物女生】这类生成…

2026/9/22 1:22:28 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →