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