既然我们已经构建了 MCP 服务器,让我们回顾一下三个核心服务器原语,并了解何时使用每一个。关键的洞察是,每个原语都由应用程序堆栈的不同部分控制。

工具:模型控制
工具完全由 Claude 控制。AI 模型决定何时调用这些函数,结果由 Claude 直接用于完成任务。
当您想为 Claude 提供额外能力时,请使用工具。例如,如果您要求 Claude 使用 JavaScript 计算 3 的平方根,Claude 会自动决定使用 JavaScript 执行工具来提供答案。

使用该工具的决定完全由模型控制——Claude 意识到需要执行代码,并在没有应用程序或用户任何提示的情况下选择了合适的工具。
资源:应用控制
资源由您的应用程序代码控制。您的应用决定何时获取资源数据以及如何使用它,通常用于 UI 目的或为对话添加上下文。
当您需要将数据引入应用程序时,请使用资源。常见示例包括:
- 在 UI 中填充自动完成选项
- 获取要在文件选择器中显示的文档
- 在将消息发送给 Claude 之前为其添加上下文
在 Claude 的网页界面中,"从 Google Drive 添加"功能完美地展示了这一点。应用程序获取可用文档列表并在 UI 中显示它们,然后将所选文档的内容注入到聊天上下文中。
提示:用户控制
提示由用户控制。他们通过点击按钮、选择菜单选项或使用斜杠命令等直接操作来决定何时触发这些预定义的工作流程。
当您想实现用户可以轻松访问的预定义工作流程时,请使用提示。在 Claude 的界面中,您会在聊天输入框下方看到工作流程按钮,让用户可以快速开始常见任务,如写作、学习或编程。
选择正确的原语
在构建 MCP 服务器时,请思考每个功能部分需要由谁来控制:
- 需要扩展 Claude 的能力? 使用工具
- 需要将数据引入应用程序的 UI? 使用资源
- 需要为用户提供预定义的工作流程? 使用提示
这些是高层次的指导原则,可帮助您根据具体用例选择正确的原语。每个原语服务于应用程序堆栈的不同部分——工具服务于模型,资源服务于应用,提示服务于用户。