← 返回 AI应用开发图解 目录
🔌 MCP与Skills与提示词图解
MCP协议原理 · Skills系统 · 提示词工程 · AI如何连接世界
🔌 S1: MCP协议 — AI的USB-C统一接口
MCP = USB-C统一接口
之前:每个AI应用要连数据库、连文件、连API,都要自己写一套接口——像一堆不同的充电线
现在:MCP定义了统一协议,AI应用只需支持MCP,就能连所有工具——像USB-C统一了所有充电线
三个角色:
🖥️ MCP Host = 你的电脑(WorkBuddy/Claude Desktop/Cursor)
🔌 MCP Client = USB口(Host内置,负责和Server通信)
📦 MCP Server = USB设备(文件系统/数据库/API——提供具体能力)
工作流程:你插上U盘(Server) → 电脑(Host)通过USB口(Client)识别 → 能读写U盘里的文件(Tools/Resources)
MCP架构:Host(Client) ↔ Server(Tools/Resources/Prompts),标准化连接
MCP实际工作流程(以"帮我查一下用户表有多少数据"为例)
① 用户提问
→
② Host发给LLM
→
③ LLM决定调Tool
→
④ Client调DB Server
→
⑤ 返回结果给LLM
→
⑥ LLM总结回答
整个过程对用户来说,就像在和AI"聊天"——AI自动决定要不要调工具、调哪个工具、怎么解读结果。
📱 S2: Skills系统 — AI的App Store
Skills = App Store里的App
你的手机(AI Host)出厂只有基本功能(聊天),装上不同的App(Skill)就有了不同能力:
📲 装了"微信支付"App → AI能帮你付款
📲 装了"GitHub"App → AI能帮你管理代码
📲 装了"PDF"App → AI能生成PDF文档
📲 装了"数据库"App → AI能帮你查数据
Skill = 一份SKILL.md文件,里面写好了:
• 这个Skill干什么(触发条件:用户说什么话时激活)
• 怎么干(步骤:1→2→3→4)
• 用什么工具(调哪些MCP Server / 什么API)
Skills = AI的App,SKILL.md定义触发条件+执行步骤+使用的工具
Skill vs MCP vs Function Calling 三者关系
| 维度 | MCP | Skills | Function Calling |
| 是什么 | 通信协议(USB-C) | 能力包(App) | API接口(函数签名) |
| 层级 | 底层协议 | 上层应用 | 中间接口 |
| 类比 | USB-C标准 | App Store里的App | API文档 |
| 定义者 | Anthropic(开放标准) | 用户/社区(SKILL.md) | AI厂商(OpenAI/Anthropic) |
| 运行时机 | AI需要外部数据/操作时 | 用户触发特定意图时 | AI判断需要调用函数时 |
| 关系 | Skill可以调MCP Server | MCP是Skill的底层 | FC是MCP Tools的底层机制 |
简单理解:MCP是"管道",Skills是"管道上的水龙头"(按需开关),Function Calling是"水龙头的阀门"(底层调用机制)。
📝 S3: 提示词工程 — 怎么跟AI说话才有用
提示词 = 给实习生的工作说明书
你说"帮我写个功能" → 实习生一脸懵,不知道写什么、什么风格、给谁用
你说"帮我在Spring Boot项目中,给UserService添加分页查询方法,用MyBatis-Plus,返回Page<UserVO>,按照现有代码风格" → 实习生秒懂!
提示词核心法则:
1️⃣ 角色 = 你是谁("你是一个资深Java架构师")
2️⃣ 任务 = 干什么("帮我设计一个高并发秒杀系统")
3️⃣ 上下文 = 背景信息("技术栈是Spring Boot + Redis + RocketMQ")
4️⃣ 示例 = 参考格式("输出格式参照以下JSON...")
5️⃣ 约束 = 不能做什么("不要使用synchronized,只允许用JUC包")
5种提示词模式:零样本→少样本→思维链→ReAct→系统提示词
🎯 S4: Function Calling — AI调用函数的底层机制
Function Calling = 给实习生配工具箱
没有FC → 实习生只能"说",不能"做"——"你该查数据库了"但实际查不了
有了FC → 实习生能"做"——AI判断需要查数据库→自动调用query函数→拿到结果→继续推理
FC流程:
你说:"今天北京天气怎么样?"
→ AI判断需要调工具 → 返回函数调用意图 get_weather("北京")
→ 你的代码执行这个函数 → 拿到结果 "25°C,晴天"
→ 把结果喂回AI → AI回答:"北京今天25度,晴天,适合户外活动!"
Function Calling流程:用户→LLM判断→返回函数调用→执行→结果喂回→最终回答
🆚 S5: MCP vs Skills vs Function Calling 对比与选型
三层架构:FC(底层能力) → MCP(标准协议) → Skills(上层应用)
什么时候用哪个?
| 场景 | 用什么 | 为什么 |
| 简单的AI对话/问答 | 只需提示词 | 不需要外部工具,纯语言能力足够 |
| AI需要调一个API | Function Calling | 最直接,定义函数→AI调用→拿到结果 |
| 多个AI应用共享工具 | MCP | 写一次Server,Claude/Cursor/WorkBuddy都能用 |
| 需要组合多个工具完成复杂任务 | Skill + MCP | Skill编排多步流程,MCP提供底层工具 |
| 企业级AI应用 | MCP + Skills + FC | 标准化协议+可复用能力包+底层调用,三层全用 |
❓ MCP/Skills/提示词FAQ
MCP和传统API有什么区别?
核心区别:传统API是"人调API",MCP是"AI调API"。
传统API:程序员写代码 response = http.get("/api/weather?city=北京")
MCP:AI自己决定什么时候调、调哪个、传什么参数。
类比:传统API = 你自己打开天气App查 → MCP = 你问AI"今天天气怎么样",AI自动帮你查
写好提示词的关键是什么?
4个关键:
1️⃣ 具体:不说"帮我写代码",而说"用Spring Boot写一个分页查询接口,返回PageResult<UserDTO>"
2️⃣ 给示例:给一个输入输出的例子,比描述1000字更有效
3️⃣ 设约束:告诉AI不要做什么("不要用synchronized""输出不要超过500字")
4️⃣ 链式思考:让AI"一步步思考",推理类任务效果提升30%+
Skill可以自己创建吗?
可以!Skill就是一份SKILL.md文件,你可以在 ~/.workbuddy/skills/ 目录下创建自己的Skill。
创建步骤:
1️⃣ 在skills目录下新建文件夹,如 my-skill/
2️⃣ 创建 SKILL.md,写明触发条件、执行步骤、使用的工具
3️⃣ (可选)创建 scripts/、references/ 目录放辅助脚本和参考
4️⃣ 重启WorkBuddy,Skill自动加载
类比:就像给自己的手机写一个App——写好代码、打包、安装就能用
MCP安全吗?AI会不会乱删我的文件?
MCP有安全机制:
1️⃣ 信任机制:新的MCP Server需要用户手动"Trust"才能启用
2️⃣ 权限控制:每个Server只暴露特定的Tools,AI只能调允许的函数
3️⃣ 沙箱隔离:文件操作等危险操作在沙箱中执行
4️⃣ 用户确认:敏感操作(支付/删除)需要用户二次确认
类比:手机App要权限才能访问相册/麦克风——MCP也一样,不是AI想干什么就干什么
不同语言开发MCP Server有什么区别?
| 语言 | MCP SDK | 适合场景 | 上手难度 |
| TypeScript | 官方SDK ✅ | Web API/前端工具 | ⭐ 最简单 |
| Python | 官方SDK ✅ | 数据/AI工具 | ⭐⭐ 简单 |
| Go | 社区SDK ✅ | 高性能/云原生 | ⭐⭐⭐ 中等 |
| Java | 社区SDK | 企业级集成 | ⭐⭐⭐ 中等 |
推荐:先学TypeScript SDK(官方支持最好),数据类用Python。
— 全栈资料库 · MCP与Skills与提示词图解 —
核心三原则速记
AI应用三原则:① 能RAG就不裸调(减少幻觉)→ ② Prompt是工作说明书,角色/约束/格式都要写清 → ③ 始终预留人工审核通道