On this page
steppers
Pagination
A standardized way for servers to offer argument autocompletion suggestions for prompts and resource URIs.
Pagination in MCP uses an opaque cursor-based approach, instead of numbered pages.
- The cursor is an opaque string token, representing a position in the result set
- Page size is determined by the server, and clients MUST NOT assume a fixed page size
Response Format
Pagination starts when the server sends a response that includes:
- The current page of results
- An optional nextCursorfield if more results exist
  {
  "jsonrpc": "2.0",
  "id": "123",
  "result": {
    "resources": [...],
    "nextCursor": "eyJwYWdlIjogM30="
  }
}
  Request Format
After receiving a cursor, the client can continue paginating by issuing a request including that cursor:
  {
  "jsonrpc": "2.0",
  "method": "resources/list",
  "params": {
    "cursor": "eyJwYWdlIjogMn0="
  }
}
  Pagination Flow
sequenceDiagram
    participant Client
    participant Server
    Client->>Server: List Request (no cursor)
    loop Pagination Loop
      Server-->>Client: Page of results + nextCursor
      Client->>Server: List Request (with cursor)
    end
Operations Supporting Pagination
The following MCP operations support pagination:
- resources/list- List available resources
- resources/templates/list- List resource templates
- prompts/list- List available prompts
- tools/list- List available tools
Implementation Guidelines
- Servers SHOULD: - Provide stable cursors
- Handle invalid cursors gracefully
 
- Clients SHOULD: - Treat a missing nextCursoras the end of results
- Support both paginated and non-paginated flows
 
- Treat a missing 
- Clients MUST treat cursors as opaque tokens: - Don’t make assumptions about cursor format
- Don’t attempt to parse or modify cursors
- Don’t persist cursors across sessions
 
Error Handling
Invalid cursors SHOULD result in an error with code -32602 (Invalid params).
Last updated 10 Aug 2025, 20:01 +0100 .