F3.2 F3

Tools、Resources、Prompts:MCP 的三大原语

MCP 定义了三种原语——三种 server 可以暴露给 AI 应用的能力类型。各有各的用途。

Tools:执行动作

Tools 是动作原语。Client 调用一个 tool,server 执行操作,结果返回。创建 GitHub issue、查询数据库、发 Slack 消息——这些都是 tool 操作。

Tools 的流向是从 client 到 server:AI 应用发起,server 执行。它们可能有副作用(在外部系统里创建、修改、删除东西)。

Resources:浏览数据

Resources 是数据原语。它让 AI 应用浏览外部系统里有什么,而不执行任何动作。列出未关闭的 issue、查看项目文件结构、浏览数据库 schema——这些都是 resource 操作。

Resources 的流向是从 server 到 client:server 暴露可用内容的目录,client 从中读取条目。和 tools 的关键区别:resources 是只读的。浏览 issue 列表不会创建、修改或删除任何东西。

Resources 减少了探索性的工具调用。模型不用盲目地用各种参数调 search_issues 来摸索有什么,它可以先浏览 resource 目录,看看有什么可用的,再发起有针对性的 tool 调用。

Prompts:模板文本

Prompts 是 server 可以提供的预定义 prompt 模板。它们不是可执行代码——是结构化文本,AI 应用可以拿来当交互的起点。可以理解成 server 建议的现成工作流或推荐做法。

这是最不直觉的一个原语。Prompts 本身不任何事。它们提供的文本用来引导 AI 应用如何与 server 的 tools 和 resources 交互。

最重要的区分

Tools vs Resources 是你最常碰到的问题。划分线在于:它是否改变了外部系统中的东西?如果是,就是 tool。如果纯粹是读取/浏览,就是 resource。


一句话总结: Tools 执行动作(可能有副作用),Resources 浏览数据(只读目录),Prompts 提供模板——tool 和 resource 的区别在于行动 vs 观察。