协议修订版:2025-06-18
引出是在此版本的 MCP 规范中新引入的,其设计可能在未来的协议版本中演变。
用户交互模型
MCP 中的引出允许服务器通过启用嵌套在其他 MCP 服务器功能内部的用户输入请求来实施交互式工作流程。 实现可以自由地通过适合其需求的任何界面模式公开引出——协议本身不强制任何特定的用户交互模型。能力
支持引出的客户端必须在 初始化 期间声明elicitation 能力:
Protocol Messages
创建引出请求
要向用户请求信息,服务器发送elicitation/create 请求:
简单文本请求
请求:结构化数据请求
请求:消息流程
请求模式
requestedSchema 字段允许服务器使用 JSON Schema 的受限子集定义预期响应的结构。为了简化客户端实现,引出模式仅限于具有原始属性的平面对象:
支持的模式类型
模式仅限于这些原始类型:-
字符串模式
支持的格式:
email、uri、date、date-time -
数字模式
-
布尔模式
-
枚举模式
- 生成适当的输入表单
- 在发送前验证用户输入
- 为用户提供更好的指导
响应操作
引出响应使用三操作模型来清楚区分不同的用户操作:-
接受 (
action: "accept"):用户明确批准并提交数据content字段包含与请求模式匹配的提交数据- 示例:用户点击了”提交”、“确定”、“确认”等。
-
拒绝 (
action: "decline"):用户明确拒绝了请求content字段通常被省略- 示例:用户点击了”拒绝”、“拒绝”、“否”等。
-
取消 (
action: "cancel"):用户在不做出明确选择的情况下关闭content字段通常被省略- 示例:用户关闭了对话框、点击外部、按下 Escape 等。
- 接受:处理提交的数据
- 拒绝:处理明确拒绝(例如,提供替代方案)
- 取消:处理关闭(例如,稍后再次提示)
安全考虑
- 服务器不得通过引出请求敏感信息
- 客户端应该实施用户批准控制
- 双方应该根据提供的模式验证引出内容
- 客户端应该清楚显示哪个服务器正在请求信息
- 客户端应该允许用户随时拒绝引出请求
- 客户端应该实施速率限制
- 客户端应该以清楚显示正在请求什么信息以及为什么的方式呈现引出请求