自动补全
Model Context Protocol(MCP)为服务器提供了一种标准化的方式,用于为提示词和资源URI提供参数自动补全建议。这使得用户能够获得类似IDE的丰富体验,在输入参数值时获得上下文相关的建议。
用户交互模型
MCP中的自动补全功能设计用于支持类似IDE代码补全的交互式用户体验。
例如,应用程序可以在用户输入时通过下拉菜单或弹出窗口显示补全建议,用户可以从可用选项中进行筛选和选择。
然而,具体实现可以根据需要采用任何适合的界面模式—协议本身不强制要求任何特定的用户交互模型。
协议消息
请求补全建议
要获取补全建议,客户端通过引用类型发送completion/complete
请求,指定需要补全的内容:
请求:
响应:
引用类型
协议支持两种类型的补全引用:
类型 | 描述 | 示例 |
---|---|---|
ref/prompt |
通过名称引用提示词 | {"type": "ref/prompt", "name": "code_review"} |
ref/resource |
引用资源URI | {"type": "ref/resource", "uri": "file:///{path}"} |
补全结果
服务器按相关性排序返回补全值数组,包含:
- 每个响应最多100项
- 可选的可用匹配总数
- 表示是否存在额外结果的布尔值
消息流
数据类型
CompleteRequest
ref
:PromptReference
或ResourceReference
argument
:包含以下内容的对象:name
:参数名称value
:当前值
CompleteResult
completion
:包含以下内容的对象:values
:建议数组(最多100个)total
:可选的匹配总数hasMore
:额外结果标志
实现注意事项
-
服务器应该:
- 按相关性排序返回建议
- 在适当的情况下实现模糊匹配
- 限制补全请求的速率
- 验证所有输入
-
客户端应该:
- 对快速补全请求进行去抖动处理
- 在适当的情况下缓存补全结果
- 优雅地处理缺失或部分结果
安全性
实现必须:
- 验证所有补全输入
- 实施适当的速率限制
- 控制对敏感建议的访问
- 防止基于补全的信息泄露