当前位置: 首页 > news >正文

MCP:“AI界的USB-C“

MCP:“AI界的USB-C”

这篇文章整理自我参加MCP培训后的学习笔记,也结合了课件里的示例。复盘:MCP 是什么、解决什么问题,以及怎么用起来。

一、先说说MCP到底是个啥

用人话解释一下

MCP=Model Context Protocol= 模型上下文协议

名字听着挺学术的,其实就是 Anthropic 在2024年11月搞出来的一个开放标准。目的很单纯:给大模型和外部工具之间搭一座标准化的桥

为什么叫"USB-C接口"?

这个比喻真的绝了,我直接上张表对比一下:

USB-C接口MCP协议
解决什么问题以前各种数据线乱七八糟以前各种AI工具适配器乱七八糟
核心特点一根线通吃一个协议通吃
能干嘛充电、传数据、连显示器调工具、查数据、传上下文
谁都能用任何品牌设备任何大模型

说人话就是:以前每接一个设备都要找专门的线,现在一根Type-C搞定;以前每接一个大模型都要写专门的适配器,现在一个MCP搞定


二、MCP到底解决了什么痛点?

2.1 "M×N"的集成噩梦

培训的时候讲师画了个图,我直接给大家还原一下:

没有MCP的时候:

  • 有M个大模型(Claude、GPT、Qwen…)
  • 有N个外部工具(数据库、API、文件系统…)
  • 集成工作量 = M × N

有了MCP之后:

  • 工具开发者:按MCP标准开发一次
  • 任何支持MCP的模型:直接就能用
  • 集成工作量 = M + N

举个栗子:你有3个大模型、5个工具

  • 以前:3 × 5 = 15次适配
  • 现在:3 + 5 = 8次对接

2.2 四个核心价值

价值点之前怎么办现在怎么办
通用连接器每个模型单独适配写一次,到处用
上下文管理自己写一堆状态管理代码MCP帮你管好
安全控制自己设计权限系统自带细粒度权限控制
功能扩展改代码、加接口像插U盘一样加工具

三、MCP是怎么工作的?

3.1 架构其实很简单

就是个经典的C/S架构,我画个图给大家看看:

用户 ──▶ AI应用 ──▶ MCP客户端 ──▶ MCP服务 ──▶ 你的工具 ▲ │ │ ▼ └──────────────── 收到结果 ◀───────┘

2.2 里面的几个角色

角色是什么举个栗子
Host运行大模型的应用Claude Desktop、Dify
ClientHost里面的MCP客户端内置的,不用管
Server你写的MCP服务你自己开发的
工具大模型能调用的函数查数据库、调用API

2.3 工作流程是什么样的?

大概就是这么个过程:

  1. Host启动,连上你的MCP Server
  2. 俩人先"商量"一下:你能干啥?我有啥能力?
  3. 大模型需要用工具的时候,通过MCP调用
  4. MCP Server执行工具,把结果返回给大模型
  5. 大模型基于结果继续回答用户

四、怎么写一个MCP服务?

4.1 准备工作

先装个SDK:

pipinstallmcp-U

就这么简单,一行命令搞定。

4.2 来个最简单的例子

先来个"Hello World"级别的——获取当前时间:

frommcp.server.fastmcpimportFastMCPimportdatetime# 创建一个MCP服务mcp=FastMCP(host="0.0.0.0",port=8000)@mcp.tool()# 用这个装饰器定义工具defget_current_datetime()->dict:""" 获取当前的日期和时间 入参:无 返参:当前日期和时间 """current_datetime=datetime.datetime.now()formatted_datetime=current_datetime.strftime("%Y-%m-%d %H:%M:%S")print(f"大模型叫我干活了!当前时间:{formatted_datetime}")return{"current_datetime":formatted_datetime}if__name__=="__main__":# 启动服务mcp.run(transport="streamable-http")

运行这个脚本,你的MCP服务就启动了!任何支持MCP的应用都能调用这个get_current_datetime工具。

4.3 来个实战点的例子

培训的时候我们做了一个自然语言查数据库的例子:

fromutilsimportget_tools,execute_sqlfrommcp.server.fastmcpimportFastMCP tools=get_tools()mcp=FastMCP(host="0.0.0.0",port=8001)db_path="school.db"@mcp.tool()defquery(query:str)->dict:""" 用自然语言查询数据库 入参: query: 你的问题(比如"查一下所有18岁的学生") 返参: 查询结果 """print(f"收到问题:{query}")# 第一步:把自然语言转成SQLsql=tools[0].invoke(input=query)print(f"生成的SQL:{sql}")# 第二步:执行SQLresult=execute_sql(db_path,sql)returnresultif__name__=="__main__":mcp.run(transport="streamable-http")

这个例子挺有意思的,大模型负责理解你的问题,生成SQL,然后MCP负责执行,最后把结果返回给大模型让它用自然语言告诉你结果。

4.4 写MCP工具要注意啥?

培训的时候讲师强调了几个原则,我记下来了:

原则啥意思举个反例
职责分离工具负责"执行",资源负责"读取"别把读取文件做成工具
单一专注一个服务干一类事别把天气查询和邮件发送放一个服务里
安全可控用户要明确授权别偷偷执行危险操作
标准定义参数用JSON Schema定义好别返回奇奇怪怪的数据格式

五、在Dify里用MCP

5.1 Dify有五种应用,选哪个?

培训的时候老师花了不少时间讲这个,我整理了一下:

类型适合干嘛能不能用MCP工具
文本生成一句话生成文本不能
聊天助手聊天问答勉强能
Agent复杂任务+工具调用强烈推荐
工作流后台自动化处理可以,要手动配置
Chatflow复杂的对话流程可以

重点:如果你想用MCP工具,选Agent就对了!

5.2 怎么把MCP接到Dify?

其实挺简单的,就几步:

  1. 先把你的MCP服务跑起来(比如 http://localhost:8001)
  2. 打开Dify,创建一个Agent应用
  3. 在工具配置里选"自定义工具"或者"MCP工具"
  4. 填上你的MCP服务URL
  5. 保存,搞定!

然后你就可以在Dify的对话里直接用了:

你:帮我查一下所有18岁的学生 Agent:[调用你的query工具] → 找到了3个学生...

5.3 还能接别人的MCP服务

这个真的挺有意思的,比如高德地图搞了个MCP服务:

https://mcp.amap.com/mcp?key=你的密钥

把这个URL填到Dify里,你的Agent就能:

  • 根据地址名查经纬度
  • 规划路线
  • 查周边有什么

不用写任何代码,直接就能用!


六、MCP的三种传输方式

培训的时候提了一嘴这个,简单说下:

方式啥特点现状
stdio本地用,标准输入输出没人用
SSE远程调用,单向传输已经淘汰了
streamable-http远程调用,双向传输现在就是这个

建议:直接用streamable-http,支持远程调用,双向通信,对中文支持也好(UTF-8编码)。


七、我的学习心得

7.1 培训最大的收获

尽管目前Skills已经逐渐囊括了MCP的功能,但是我认为掌握MCP这种架构思路,仍然是企业落地应用推动者要学会的。
我觉得MCP最大的价值就三个词:

  1. 解耦:大模型和工具各干各的,谁也不绑架谁
  2. 复用:写一次,到处用
  3. 安全:用户说了算,不是大模型说了算

7.2 开发思维的转变

传统开发大模型开发
改Bug提升概率
数据层/业务层/前端知识层/业务层/前端
CRUDPrompt + RAG + Agent

培训的时候讲师说了句话我印象挺深:传统开发是改Bug,大模型开发是提升概率。因为你没法保证大模型每次都给你一样的输出,只能想办法让它"更可能"输出你想要的结果。

7.3 学习路线推荐

如果你也想学MCP,我建议这么来:

  1. 第一步:先搞懂MCP是什么、怎么工作的(看完这篇文章应该差不多)
  2. 第二步:自己写个简单的MCP工具玩玩
  3. 第三步:把你的工具接到Dify或者LangChain里
  4. 第四步:试试整合多个工具,搞个复杂点的Agent

八、一些有用的链接

  • MCP官方文档
  • MCP的GitHub仓库
  • Dify官网
  • FastAPI文档(MCP底层用的就是这个)

http://www.jsqmd.com/news/801333/

相关文章:

  • DOM Inspector Plus:浏览器开发者工具的精准元素检查与高效调试利器
  • Sunshine游戏串流服务器终极搭建与配置完全指南
  • JPEXS Free Flash Decompiler:数字遗产的守护者与技术考古学家的瑞士军刀
  • 豆瓣电影数据采集项目
  • 2026 年 4 月超声波流量计品牌排名,国产替代加速 - 陈工日常
  • 2026 国产高端芯片封装设计软件推荐选这款 - 品牌2026
  • 超声波流量计十大品牌排行榜 | 进口与国产实力解析 - 陈工日常
  • 代码生成器核心原理与工程实践:从元数据到自动化CRUD
  • WinMD驱动程序深度剖析:跨平台RAID访问的Windows内核实现
  • 2026年北京丰台成寿寺:挂号便捷的耳鼻喉医院选择指南
  • 基于AI的Tmux智能工作流编排:从意图驱动到自动化终端管理
  • 终极BT下载加速指南:Trackerslist免费Tracker优化方案
  • 如何高效使用BBDown:5个实战技巧指南轻松下载B站视频
  • 猫抓Cat-Catch:你的浏览器资源管理专家,让网络资源不再“溜走”
  • 企业即时通讯工具怎么选?本土软件的3个关键判断维度 - 小天互连即时通讯
  • AI日程管家上线倒计时?Gemini已悄然接管你的Google Calendar,这7个信号你中了几个?
  • PCB为什么一定要做耐电流测试?
  • 终极免费环世界MOD管理器:RimSort 3分钟解决加载顺序混乱问题
  • 智慧树刷课插件完整指南:3步解决视频学习自动化难题
  • 京东自动评价工具:5分钟完成30条评价,智能解放购物后烦恼
  • SQL Server介绍
  • 上市公司二氧化碳排放量 CEmi 数据(2015-2021)
  • API 接口自动化测试详细图文教程学习系列17--项目实战演练4-封装方法
  • GStreamer在Windows下的Mingw与MSVC版本选择:C#开发者必须搞清楚的DLL依赖问题
  • 如何快速解密QMC音频文件:qmc-decoder完整使用指南
  • 抖音下载器终极指南:3种高效方式批量获取无水印视频
  • VLP-16激光雷达的‘双回波’模式详解:在ROS中如何配置与利用它进行地面分割和障碍物检测
  • 德尔·考德威尔:从微波校准到计量标准,塑造现代精密测量的隐形基石
  • 架构决策记录(ADR)实践指南:使用decision-kit提升团队决策质量
  • QQ音乐加密文件解密终极指南:qmcdump工具完全使用教程