文章目录
-
-
- [1. 知识的"服务端化":解决指令碎片化](#1. 知识的“服务端化”:解决指令碎片化)
- [2. 动态上下文的高效组合](#2. 动态上下文的高效组合)
- [3. 任务发现(Discovery)与引导](#3. 任务发现(Discovery)与引导)
- [🧱 形象化理解:建筑工地的比喻](#🧱 形象化理解:建筑工地的比喻)
- [🧪 技术选型的"金字塔"](#🧪 技术选型的“金字塔”)
-
这是一个非常深刻的架构设计问题。既然我们已经有了 Tools(能干活) 和 Resources(有资料) ,为什么还要专门设计一个 Prompts(提示模板) 交互方式呢?
在 MCP 的设计哲学中,Prompts 扮演的是 "专家说明书" 或 "工作流模板" 的角色。如果说 Tools 是 AI 的手脚,Resources 是 AI 的眼睛,那么 Prompts 就是 AI 的**"思维导图"**。
以下是 MCP 依然需要 Prompts 的三个核心理由:
1. 知识的"服务端化":解决指令碎片化
在传统的开发模式中,提示词(Prompt)通常是硬编码在客户端代码里的。
- 痛点:如果你开发了一个复杂的 SQL 分析工具,你需要告诉 AI 很多注意事项(如:不要查询大表、注意字段类型)。如果换了一个客户端(比如从 Cursor 换到 Claude Desktop),你得把这些复杂的提示词再写一遍。
- MCP 的解法 :通过
get_prompts,Server 开发者(最懂工具的人)可以直接定义最佳实践模板。- 例子 :在你提供的代码中,
analyze_code模板定义了从"代码质量、潜在 Bug、安全、性能、建议"五个维度进行审查。 - 价值 :无论 AI 在哪个客户端运行,只要接入你的 Server,它拿到的都是这一套标准化的专家级指令。
- 例子 :在你提供的代码中,
2. 动态上下文的高效组合
Prompts 能够将 Resources 和 Tools 有机地编排在一起,形成一个完整的任务。
- 痛点:AI 有时候空有工具,却不知道在什么时机、以什么标准去使用它们。
- MCP 的解法 :Prompts 允许定义动态占位符(如
{file_path})。- 当用户选择
summarize_file模板时,Server 会引导 AI 去读取特定的 Resource,并套用预设的总结格式。 - 这实际上是把 "查找数据" -> "理解意图" -> "执行操作" 这一套复杂的链路,封装成了一个简单的按钮。
- 当用户选择
3. 任务发现(Discovery)与引导
Prompts 告诉 AI:"用这个 Server 还能干成什么大事?"
- 痛点:AI 接入一个文件系统 Server 后,它只知道自己能读写文件。它可能想不到可以用这些文件来做一次"全量代码审计"。
- MCP 的解法 :当 AI 调用
prompts/list时,它会发现有一个叫analyze_code的模板。- 这会激发 AI 的"灵感",主动引导用户:"我看到这里有一个代码分析模板,需要我帮你审查一下刚才写的
main.py吗?"
- 这会激发 AI 的"灵感",主动引导用户:"我看到这里有一个代码分析模板,需要我帮你审查一下刚才写的
🧱 形象化理解:建筑工地的比喻
我们可以把一个 MCP Server 想象成一个功能完备的建筑基站:
- Tools (工具):是电钻、推土机。AI 可以随时调用它们来改变环境。
- Resources (资源):是工地的图纸、砖块和水泥。AI 可以在这里寻找原始材料。
- Prompts (提示模板) :是施工标准和作业指导书 。
- 它告诉 AI:"如果你要筑墙,请按照《国家标准施工手册》的要求,每隔 50cm 检查一次垂直度"。
🧪 技术选型的"金字塔"
在面试或实际开发中,你可以根据以下逻辑来决定使用哪种交互:
| 如果你的目的是... | 请选择... |
|---|---|
| 提供原始数据或背景信息(如日志、代码库、DB 视图) | Resources |
| 提供原子化的操作能力(如写文件、查 API、发邮件) | Tools |
| 提供复杂的业务逻辑标准或任务执行规范(如代码审查规范、周报生成模板) | Prompts |
总结:
如果没有 Prompts,MCP Server 就只是一个"冷冰冰的驱动程序"。有了 Prompts,它就变成了一个**"带有行业专家的智能工作站"**。
在你现在的 FileSystemMCPServer 代码中,你把 analyze_code 设计成了一个 Prompt 而不是 Tool,是因为你觉得"分析逻辑"本身是模型的能力,而你只是在提供审查标准对吗?