MCP详细讲解
MCP 的三种核心类型:Tools、Resources 与 Prompts
本文约 1000 字,面向刚接触 MCP(Model Context Protocol)的开发者,重点解释 MCP Server 暴露给 AI 应用的三类核心能力:Tools、Resources 和 Prompts。
1. MCP 是什么?
MCP,全称 Model Context Protocol,可以理解为 AI 应用连接外部系统的一套标准协议。传统情况下,模型想访问数据库、文件、业务系统或第三方 API,往往需要为每个场景单独做集成;而 MCP 的目标是把这些连接方式标准化,让客户端、模型和外部能力之间有统一的交互方式。
在 MCP 的架构里,通常有三类角色:Host、Client 和 Server。Host 是用户实际使用的 AI 应用,比如聊天工具、IDE 或智能助手;Client 负责与某个 MCP Server 建立连接;Server 则向外暴露具体能力。对大多数开发者来说,最重要的是理解 MCP Server 能提供什么。官方文档把 Server 侧能力概括为三类:Tools、Resources、Prompts。
2. Tools:让模型“能做事”
Tools 是 MCP 中最像“函数调用”的能力。它允许 MCP Server 把某些可执行操作暴露给模型,例如查询数据库、调用 API、搜索网页、创建日程、写入文件、提交工单等。
一个 Tool 通常会包含名称、描述、输入参数结构和返回结果。模型会根据上下文判断是否需要调用某个 Tool。例如用户说:“帮我查一下今天东京的天气”,模型可能会选择调用 get_weather 工具,并传入城市参数 Tokyo。工具执行后返回结构化结果,模型再把结果整理成人类可读的回答。
Tools 的关键特点是:它可能产生外部动作。查询数据相对安全,但发送邮件、删除文件、创建订单这类操作会改变外部系统状态。因此在设计 Tools 时,要特别注意权限、确认机制和审计日志。一个好的 Tool 不应该只写“执行任务”,而应该清楚说明它能做什么、不能做什么、参数含义是什么,以及失败时会返回什么错误。
适合做成 Tools 的场景包括:调用业务 API、执行计算、创建或修改数据、触发自动化流程、向外部服务提交请求等。
3. Resources:给模型“看资料”
Resources 可以理解为 MCP Server 提供给客户端读取的上下文数据。它不像 Tools 那样强调执行动作,而更像“可读取的文件、记录或数据源”。例如项目 README、数据库 schema、日志文件、用户日程、订单详情、知识库文章,都可以通过 Resource 暴露。
Resources 通常通过 URI 标识,比如 file:///project/README.md、db://schema/users、calendar://events/today。客户端可以列出可用资源,也可以按需读取资源内容,再决定是否把它们放进模型上下文。
Resources 的核心价值是:让模型获得更准确的背景信息。比如你在 IDE 中问“这个函数为什么报错”,MCP Server 可以把相关源代码、测试结果、依赖信息作为 Resources 提供给模型。模型不需要猜测,而是基于真实上下文分析问题。
和 Tools 相比,Resources 更适合只读数据。它的设计重点不是“执行”,而是“提供上下文”。因此,Resources 常用于文档读取、配置查看、数据预览、上下文注入、知识库集成等场景。
4. Prompts:把常见任务做成“模板”
Prompts 是 MCP Server 暴露的可复用提示模板。它可以把某类固定工作流封装起来,让用户或客户端通过选择模板并填写参数来启动任务。
例如一个团队经常需要生成代码评审总结,就可以提供一个 code_review_summary Prompt。它可能要求输入代码 diff、项目背景和关注点,然后生成结构化的评审意见。再比如产品团队可以定义 write_prd Prompt,用来按照统一格式生成需求文档。
Prompts 的特点是:它更偏向用户主动选择。Tools 通常由模型根据上下文决定是否调用;Resources 通常由客户端决定如何附加上下文;Prompts 则像菜单、快捷命令或工作流入口,帮助用户以标准方式完成高频任务。
适合做成 Prompts 的内容包括:总结会议、生成周报、代码审查、需求分析、Bug 复盘、客服回复、数据分析报告等。好的 Prompt 应该有明确目标、输入参数和输出格式,而不是简单写一大段泛泛的提示词。
5. 三者怎么区分?
可以用一句话概括:Tools 负责行动,Resources 负责上下文,Prompts 负责流程入口。
如果你的能力需要模型调用后执行某个操作,就优先考虑 Tools;如果只是提供资料、文件或数据给模型阅读,就更适合 Resources;如果你想把一套常见任务封装成可复用模板,就应该使用 Prompts。
举个例子:用户说“帮我规划一次出差”。Resources 可以提供日程、预算规则、历史出差偏好;Prompts 可以提供“出差规划”模板,规定模型需要收集哪些信息;Tools 则可以查询航班、预订酒店、创建日程。三者配合起来,才能形成完整的智能工作流。
6. 设计建议
开发 MCP Server 时,不要把所有能力都塞进 Tools。很多数据其实只需要被读取,做成 Resources 会更清晰、更安全;很多固定任务也不一定需要写代码逻辑,做成 Prompts 反而更容易维护。
同时,要注意边界:Tools 要强调权限和副作用控制;Resources 要保证数据新鲜度和访问范围;Prompts 要保持结构稳定,避免过度依赖模糊提示词。真正好用的 MCP Server,往往不是功能最多,而是把这三类能力拆分得足够清楚。
参考资料
- Model Context Protocol 官方介绍:https://modelcontextprotocol.io/docs/getting-started/intro
- MCP Server Features Overview:https://modelcontextprotocol.io/specification/2025-06-18/server
- MCP Tools 规范:https://modelcontextprotocol.io/specification/2025-06-18/server/tools
- MCP Resources 规范:https://modelcontextprotocol.io/specification/2025-06-18/server/resources
- MCP Prompts 规范:https://modelcontextprotocol.io/specification/2025-06-18/server/prompts
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)