既然我们已经构建了 MCP 服务器,让我们回顾一下三个核心原语,并了解何时使用每一个。关键在于理解谁控制每个原语,以及它们在您的应用程序中各自承担什么作用。

工具:模型控制
工具完全由 Claude 控制。AI 模型决定何时调用这些函数,其结果由 Claude 直接用于完成任务。
当您想为 Claude 提供额外能力时,请使用工具。例如,如果您要求 Claude 使用 JavaScript 计算 3 的平方根,Claude 会自动决定使用 JavaScript 执行工具来提供准确的答案。
资源:应用控制
资源由您的应用程序代码控制。您的应用决定何时获取资源数据以及如何使用它,通常用于 UI 目的或为对话添加上下文。
当您需要将数据引入您的应用时,请使用资源。常见示例包括:
- 在您的 UI 中填充自动完成选项
- 在将消息发送给 Claude 之前为其添加上下文
- 显示可用文档或文件的列表
在我们的项目中,我们使用资源来获取自动完成建议,并为提示增加额外的上下文。
提示:用户控制
提示由用户操作触发。用户通过按钮点击、菜单选择或斜杠命令等 UI 交互来决定何时运行这些预定义的工作流。
对于用户应能够按需触发的工作流,请使用提示。这些非常适合:
- 预定义的对话启动语
- 常见任务模板
- 针对特定用例优化的专门工作流
真实案例
您可以在 Claude 的官方界面上看到所有三种原语的实际应用。聊天输入框下方的对话启动按钮就是提示的示例——由用户控制的工作流,用于开始预定义的交互。

"从 Google Drive 添加"选项展示了资源的实际应用。当您点击此按钮时,应用程序会获取您的文档列表并在 UI 中显示它们。这是服务于界面的应用控制行为。
当您要求 Claude 执行计算或运行代码时,您看到的就是工具在起作用。Claude 会自动决定使用可用的工具(如 JavaScript 执行)来提供准确的结果。

选择合适的原语
这里有一个快速决策指南:
- 需要扩展 Claude 的能力? 使用工具
- 需要为应用的 UI 或上下文获取数据? 使用资源
- 想为用户提供预定义的工作流? 使用提示
请记住,这些只是帮助您为特定需求选择正确方法的高层指导原则。每个原语服务于应用生态系统的不同部分——工具服务于模型,资源服务于您的应用,提示服务于您的用户。