服务器可能需要提供操作、提供背景数据或向用户请求信息。MCP 为这些交互提供了不同的接口。
在 2026-07-28 规范修订版中,sampling 和 roots 已被弃用。它们在弃用过渡期内仍可使用,但新实现不应再采用它们。
每种原语的作用是什么?
工具公开操作,资源公开数据,提示词公开可复用的消息模板。引出机制获取额外的用户输入。
MCP 架构指南将服务器提供的能力与客户端可以提供的输入分开。
| 原语 | 用途 | 示例 |
|---|---|---|
| 工具(Tools) | 让客户端调用函数 | 发送消息 |
| 资源(Resources) | 在资源地址处提供上下文 | 检索文档 |
| 提示词(Prompts) | 提供可复用的消息模板 | 准备用于分析的结构化请求 |
| 引出(Elicitation) | 向用户询问操作所需的信息 | 请求缺失的选项 |
| Sampling(已弃用) | 通过客户端请求模型生成 | 要求客户端生成文本 |
| Roots(已弃用) | 描述与服务器相关的文件系统位置 | 标识项目目录 |
服务器实现其集成所需的接口。客户端必须支持其使用的能力。
工具、资源和提示词在实践中有什么区别?
根据客户端需要执行操作、检索上下文还是获取可复用提示词来选择。
一个假设的日程安排服务器可以公开一个预约工具。一个资源可以提供场地信息。一个提示词可以准备用于比较预约选项的消息。
客户端发现可用的服务器能力。发现预约工具并不意味着获得了预约权限。服务仍然会对操作进行授权。
资源提供内容,但不意味着模型应遵循嵌入其中的指令。宿主控制信任哪些服务器内容和操作。
sampling 和 roots 有什么变化?
对于 roots,变更日志建议通过工具参数、资源地址或服务器配置传递文件或目录。对于 sampling,建议直接集成模型提供商的 API。
弃用并不意味着功能已被移除。现有集成在过渡期间仍可能遇到这些接口。
服务器如何请求更多输入?
服务器返回需要输入的结果,客户端在重试原始操作时提供所请求的信息。
2026-07-28 修订版将此称为多往返请求模式。它改变了引出、sampling 和 roots 请求的传递方式。架构指南仍将 elicitation/create 列为请求用户输入的方法。
我在 Bird 中使用哪些原语?
你可以使用 Bird 的 MCP 工具来发送消息并查看其记录的结果。
对于邮件,email_send 启动操作,email_get 检索消息及其汇总的投递状态。收件人结果需要对应的收件人详情。投递状态答疑解释了为什么仅凭接受无法确认投递。
你的客户端工具清单提供了当前连接的名称和输入模式。列出的工具仍可能需要你的授权所不具备的权限。
对于将多个操作串联成任务的指令,Bird 的 agent 技能提供 CLI 过程。打包的过程和 MCP 提示词是不同的接口;一个可用并不意味着另一个也可用。