MCP capability negotiation 怎么确认客户端支持 elicitation:form 与 url 的分支判断
接入 MCP 的服务端最容易在第一次交互时踩坑:客户端声明了 elicitation,并不代表它同时支持 form 和 url。正确做法是先读取初始化阶段的能力,再根据已声明的模式选择请求;遇到敏感信息时还要把交互放到 URL 模式,不能把密钥塞进客户端表单。
把 capability negotiation 当成发送 elicitation 前的门禁:只发客户端明确支持的模式,普通资料走 form,敏感交互走 url;能力缺失或用户拒绝时,原请求必须停在可恢复状态。
要点速览
- 客户端在初始化阶段声明 elicitation 能力,服务端据此判断可用模式。
- 空的 elicitation 能力对象按兼容规则只表示支持 form,不等于支持 url。
- 密码、API key、access token 和支付凭据不能通过 form 收集。
- accept 只表示用户同意开始交互,不一定表示 URL 页面上的流程已经完成。
先看初始化能力,再决定请求模式
MCP 的 elicitation 是服务端在处理其他请求时向用户补充信息的一种协议交互。客户端需要在初始化阶段声明 capabilities.elicitation,服务端随后才能知道自己能否发送对应模式。
判断顺序可以压缩成一条很短的路径:读取 capabilities,确认存在 elicitation,再分别检查 form 或 url。没有能力声明时,服务端不应猜测客户端会弹出什么界面。

form 与 url 不是同一个输入框的两种外观
form 是带结构约束的站内收集:服务端可以提供 requestedSchema,客户端负责展示字段、校验输入并让用户在提交前复核。它适合姓名、邮箱、筛选条件等一般资料。
url 是站外交互:客户端把目标域名展示给用户,经明确同意后打开页面,敏感数据不会经过 MCP 客户端。服务端仍要提供清楚的 message、有效的 URL 和唯一的 elicitationId,并让用户知道为什么要跳转。
因此,不能把“客户端支持 elicitation”直接写成“客户端支持所有 elicitation 模式”。兼容场景下,空的 elicitation 对象只按支持 form 处理;服务端发送 url 前必须看到明确的 url 能力。

服务端的分支判断怎么落地
可以把一次请求拆成四个检查点。第一,保存初始化响应中的能力快照,并按客户端连接和用户身份关联。第二,普通输入只在存在 form 能力时发送表单请求。第三,遇到密码、API key、access token 或支付凭据时,只选择已声明的 url 模式。第四,两个模式都不支持时返回可解释的失败结果,不要悄悄降级成明文输入。
这条边界也适用于外部 OAuth。URL 模式用于让 MCP 服务端代表用户完成第三方授权,不是用来替代 MCP 客户端与 MCP 服务端之间的授权。两条授权关系要分别记录,不能把客户端凭据透传给第三方。
用户动作要按 accept、decline、cancel 分开处理
elicitation 的结果有三种动作。accept 表示用户明确批准;form 模式通常会带回 content,url 模式的 accept 只表示同意开始站外交互。decline 表示用户明确拒绝,服务端应给出替代路径或结束当前操作。cancel 则更像关闭弹窗、返回上一页或页面加载失败,适合保留原任务并允许之后继续。
尤其不要把 url 模式的 accept 当作“授权已经完成”。官方规范明确把站外流程和 MCP 客户端隔开;服务端需要等待自己的状态变化或完成通知,再决定是否重试原请求。
上线前的安全复查清单
- 服务端是否拒绝了客户端未声明的模式。
- form 是否只收集一般资料,是否屏蔽了敏感凭据。
- url 是否使用 HTTPS、展示完整域名,并要求用户明确同意。
- URL 中是否混入了用户凭据、个人信息或预授权参数。
- 服务端是否把 elicitation 状态绑定到真实用户,而不是只绑定一个容易复用的会话标识。
- 用户拒绝、取消、页面未完成和完成通知缺失时,是否都有可恢复路径。
常见问题
客户端只声明了空的 elicitation 对象,能发送 url 吗?
不能。兼容规则把空对象视为仅支持 form;要发送 url,必须看到明确的 url 能力。
收集邮箱也必须使用 url 吗?
不必。邮箱等一般资料可以使用 form,但仍应让用户知道请求来自哪个服务端,并允许修改或拒绝。
url 模式返回 accept 后就能继续原请求吗?
不能直接假定完成。accept 只代表同意开始站外交互,服务端应根据自身状态或完成通知确认流程结果。
没有 url 能力但业务必须输入 API key 怎么办?
应暂停这次操作并提示客户端升级或改用支持 url 的客户端,不要把 API key 改成 form 字段。
把能力协商变成发布门禁
实际实现中,最稳妥的做法是把能力快照、模式选择、用户动作和站外完成状态写进同一条可追踪记录。每次发送 elicitation 前重新核对模式,每次恢复原请求前核对用户身份和交互状态。这样既能兼容只支持 form 的旧客户端,也能把敏感数据留在正确的安全边界内。
DBeaver 怎么把查询结果导出为 Excel:结果集导出向导与字段确认
- 上一篇
- DBeaver 怎么把查询结果导出为 Excel:结果集导出向导与字段确认
- 下一篇
- 米坛官网入口是什么?米坛社区适合哪些智能穿戴用户
-
- 科技周边 · 人工智能 | 6小时前 |
- 大模型流式输出断在半句:增量 JSON 缓冲、finish_reason 与重连收口
- 348浏览 收藏
-
- 科技周边 · 人工智能 | 6小时前 | MySQL · 数据库 · JSON_TABLE · SQL教程 · mysql JSON_TABLE 嵌套数组 JSON路径 数据展开
- MySQL JSON_TABLE 如何拆分嵌套数组:路径映射、行扩展与空值边界
- 322浏览 收藏
-
- 科技周边 · 人工智能 | 7小时前 | 异步任务 · 人工智能 · openai · 工程实践 · Batch API · OpenAI Batch API 部分结果 cancelling cancelled output_file_id error_file_id
- OpenAI Batch API 取消任务后怎么收口:cancelling、cancelled 与部分结果处理
- 250浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ljg-skills
- ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
- 5424次使用
-
- MELO音乐
- MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
- 4911次使用
-
- UniScribe
- UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
- 4834次使用
-
- 剧云
- 剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
- 5097次使用
-
- 万象有声
- 万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
- 5056次使用
-
- Go HTTP 出站请求如何防 SSRF:URL 解析、内网地址拦截与重定向复核
- 2026-08-10 275浏览
-
- Go http.MaxBytesReader 如何限制上传体积:超限响应、读取顺序与连接复用
- 2026-08-26 327浏览
-
- Go io/fs 如何用 Sub 实现受限文件树:路径规范化与 Open 失败处理
- 2026-08-29 284浏览
-
- CodeGeeX for Jetbrains IDEs正式上线!
- 2023-01-17 284浏览
-
- 技术阿里云实现ocr批量图片和pdf文件表格图片转换excel文档/支持票据图片提取/普通图片文字提取处理
- 2023-01-18 387浏览

