分页
Model Context Protocol(MCP)支持对可能返回大量结果集的列表操作进行分页。分页允许服务器以较小的数据块而不是一次性返回所有结果。
分页在连接到互联网上的外部服务时尤其重要,同时对于避免大数据集带来的性能问题的本地集成也很有用。
分页模型
MCP 中的分页使用不透明的基于游标的方式,而不是使用页码。
- 游标是一个不透明的字符串令牌,表示结果集中的位置
- 页面大小由服务器决定,并且可能不是固定的
响应格式
当服务器发送包含以下内容的响应时,分页开始:
- 当前页面的结果
- 如果存在更多结果,则包含一个可选的
nextCursor
字段
请求格式
收到游标后,客户端可以通过发送包含该游标的请求来_继续_分页:
分页流程
支持分页的操作
以下 MCP 操作支持分页:
resources/list
- 列出可用资源resources/templates/list
- 列出资源模板prompts/list
- 列出可用提示tools/list
- 列出可用工具
实现指南
-
服务器应该:
- 提供稳定的游标
- 优雅地处理无效游标
-
客户端应该:
- 将缺失的
nextCursor
视为结果的结束 - 支持分页和非分页流程
- 将缺失的
-
客户端必须将游标视为不透明令牌:
- 不要对游标格式做任何假设
- 不要尝试解析或修改游标
- 不要在会话之间保留游标
错误处理
无效的游标应该导致错误代码为 -32602(无效参数)的错误。