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