MCP协议源码解析:一次搞懂Tool、Resource、Prompt三大核心能力
关键词MCP、Model Context Protocol、Tool、Resource、Prompt、Python、FastMCP、AI Agent、Claude Desktop、Cursor前面的几篇文章我们已经完成了什么是MCP第一个MCP Server开发Cursor接入MCPClaude Desktop接入MCP很多同学已经可以开发自己的MCP工具了。但是新的问题又来了为什么AI能够自动知道什么时候调用ToolResource到底是什么Prompt为什么也是MCP协议的一部分其实这三个能力正是MCP协议最核心的设计思想。今天我们直接站在协议源码的角度一次讲透MCP最重要的三个概念。一、MCP协议到底提供了什么很多人认为MCP就是Tool调用协议。实际上并不是。官方协议主要定义了三类能力MCP ┌──────────────┐ │ Tool │ │ Resource │ │ Prompt │ └──────────────┘它们分别解决不同的问题。能力作用面向对象ToolAI执行任务可执行能力ResourceAI读取信息数据资源PromptAI复用提示模板工作流程可以理解成Tool 负责做事情 ↓ Resource 负责提供资料 ↓ Prompt 负责组织工作方式三者共同组成了完整的AI工具生态。二、Tool让AI真正拥有执行能力Tool可以理解成AI可以调用的函数。例如Python里面def weather(city): return 晴天加上app.tool()以后。它就变成AI Tool协议里面。它实际上长这样{ name: weather, description: 查询城市天气, inputSchema: { type: object, properties: { city: { type: string } } } }注意几个重点Tool Name Description Input SchemaAI真正看的。其实不是Python代码。而是这一段描述。为什么Description特别重要例如工具app.tool() def abc(a):AI根本不知道abc什么意思。但是app.tool() def query_weather(city): 查询指定城市天气 AI马上知道什么时候应该调用。所以。好的Tool描述。往往比代码更重要。实践建议Tool名称使用动词对象如query_weather、create_orderDescription明确说明用途、适用场景和返回结果可以显著提高模型正确调用工具的概率。三、Tool为什么能够自动调用很多人误以为AI自己决定。实际上。流程如下用户 北京今天多少度 ↓ LLM分析 ↓ 发现 Weather Tool Description 查询天气 ↓ 生成调用 weather(北京) ↓ MCP Server执行 ↓ 返回JSON ↓ AI整理回答所以真正起作用的是Tool Metadata不是Python代码。四、ResourceAI为什么能够读取文件很多人第一次看到Resource。都会疑惑。为什么Tool不能直接读文件答案是可以。但是Tool负责执行动作而Resource负责提供内容例如项目里面README.md design.pdf config.yaml schema.sql api.md这些不是函数。而是资源。MCP里面可以注册Project Resource以后。AI能够阅读整个项目说明。例如用户这个项目是干什么的AI↓ 读取README ↓ 总结内容 ↓ 回答用户而不是调用Tool。五、Resource的源码设计Resource通常包含{ uri:file://README.md, name:README, mimeType:text/markdown }主要包含URI Name MIME Type例如image/png text/plain application/pdf text/markdownAI就知道如何解析。六、Tool与Resource最大的区别很多新人最容易混淆。举一个例子。假设企业知识库。Toolsearch_document()负责搜索。而Resource员工手册.pdf负责提供内容。所以Tool会执行Resource不会执行只提供数据。下面是一个简单对比对比项ToolResource是否执行代码✔✘是否返回结果✔✔是否读取内容部分✔是否调用API✔✘是否可修改数据✔视实现而定通常只读也可设计可更新资源七、Prompt为什么也是协议的一部分很多人第一次看到Prompt。都会觉得不就是提示词吗其实。不是。MCP里的Prompt。更像工作模板。例如企业里面每天都需要生成日报 生成周报 Code Review SQL优化 接口文档 会议纪要以前。每个人复制Prompt。现在直接注册。例如Review Code以后。AI直接调用。无需复制。八、Prompt源码结构协议里面一个Prompt。通常类似{ name:review_code, description:代码审查, arguments:[ { name:language } ] }例如用户帮我Review下面Python代码。AI↓ 发现 review_code ↓ 填充参数 ↓ 执行Prompt ↓ 得到结果整个过程自动完成。理解方式Prompt并不是替代Tool而是帮助模型组织任务。一个Prompt可以引导AI在合适的时候调用多个Tool再将结果整合输出。九、为什么MCP设计成三种能力假设开发企业ERP。以前。所有东西都是Tool。越来越多。越来越乱。而现在可以拆分ERP MCP ├── Tool │ 查询订单 │ 创建订单 │ 修改库存 │ ├── Resource │ ERP说明书 │ 数据字典 │ API文档 │ └── Prompt 周报模板 SQL分析模板 财务分析模板职责一下清晰了。这就是MCP最大的设计思想能力Tool、知识Resource和流程Prompt相互解耦。十、企业开发中如何合理使用三种能力很多团队在设计MCP Server时都会面临一个问题一个功能到底应该设计成Tool、Resource还是Prompt可以参考下面的原则适合设计为Tool查询订单创建工单调用ERP接口查询数据库发送邮件上传文件特点需要执行操作或调用外部系统。适合设计为Resource项目README数据库Schema产品说明书API接口文档企业制度知识库文档特点主要提供内容供AI阅读和引用。适合设计为PromptCode Review模板周报生成模板SQL优化模板测试用例生成模板产品需求分析模板特点提供标准化的工作流程或提示模板。十一、三者协同工作的完整案例假设开发一个企业AI助手。用户输入分析本月销售情况并生成管理层汇报。后台可能经历这样的流程用户提问 ↓ Prompt 销售分析报告 ↓ Tool query_sales() ↓ Tool query_customer() ↓ Resource 销售指标说明.md ↓ AI整理分析 ↓ 输出完整汇报整个过程中Prompt负责定义分析框架和输出格式。Tool负责获取实时业务数据。Resource提供业务规则、指标定义等背景知识。三者各司其职共同完成一次复杂任务。总结MCP并不是一个简单的工具调用协议而是一套围绕AI Agent设计的标准化能力体系。它通过三个核心能力将AI与业务系统有效连接核心能力职责典型场景Tool执行操作查询数据库、发送邮件、调用APIResource提供知识文档、配置、数据字典、知识库Prompt定义流程Code Review、报告生成、分析模板这种设计带来的最大优势在于职责清晰执行、知识和流程彼此独立易于维护。复用能力强同一个Prompt可以调用多个Tool同一个Resource也能服务多个Prompt。更适合企业级AI Agent便于构建复杂工作流支持团队协作和持续扩展。当你真正理解了Tool、Resource和Prompt的定位就会发现MCP不仅是一套协议更是一种面向AI时代的软件架构思想。本文知识点回顾✅ Tool的协议结构与自动发现机制✅ Resource的设计理念与应用场景✅ Prompt的作用与复用方式✅ Tool、Resource、Prompt三者区别✅ 企业级MCP Server设计思路✅ AI Agent完整工具调用流程