Thanks to visit codestin.com
Credit goes to github.com

Skip to content

feat: Add Pagination for server requests #140

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

denniskawurek
Copy link
Contributor

Adds the Pagination feature to the prompts/list feature to fulfil the specification.

Motivation and Context

This adds the Pagination feature to the prompts/list feature as described in the specification.

To make this possible mainly two changes are made:

  1. The logic for cursor handling is added.
  2. Handling for invalid parameters (MCP error code -32602 (Invalid params)) is added to the McpServerSession.

Decisions made:

  1. For now the cursor is the integer value of the start index encoded as a base64 string.
  2. The page size is set to 10.
  3. When parameters are found to be invalid the newly introduced McpParamsValidationError is returned to handle it properly in the McpServerSession.

If this change is ok, I'm happy to create a follow-up PR for the other MCP features. Maybe some parts of the cursor handling can be moved out to separate methods.

How Has This Been Tested?

Integration tests are added for the prompts/list feature.

Types of changes

  • New feature (non-breaking change which adds functionality)

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

@denniskawurek denniskawurek force-pushed the add-pagination branch 2 times, most recently from 4c05e1a to 8d48b93 Compare April 18, 2025 12:06
Copy link
Member

@chemicL chemicL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the contribution! It is a great start, would you like to take this further and unify the logic for other listing requests?

@chemicL chemicL added the waiting for user Waiting for user feedback or more details label Apr 23, 2025
@denniskawurek
Copy link
Contributor Author

Hi,

thanks for your review and your feedback!

Thank you for the contribution! It is a great start, would you like to take this further and unify the logic for other listing requests?

Yes I will do this. I should be able to update the pull request by the end of the week.

@denniskawurek denniskawurek force-pushed the add-pagination branch 3 times, most recently from 3dce44d to 0c93c71 Compare April 26, 2025 14:52
@denniskawurek denniskawurek requested a review from chemicL April 26, 2025 15:36
@denniskawurek
Copy link
Contributor Author

I did another push with small changes in the commit title and message and have also changed a few comments and names in tests. No business logic was affected.

@denniskawurek denniskawurek changed the title feat: Add Pagination for requesting list of prompts feat: Add Pagination for server requests Apr 29, 2025
@denniskawurek denniskawurek force-pushed the add-pagination branch 3 times, most recently from 3718965 to 5f7bb9b Compare May 3, 2025 11:41
Adds the Pagination feature as described in the specification for
prompts, resources, resource templates and tools.

To make this possible mainly two changes are made:

1. The logic for cursor handling is added.
2. Handling for invalid parameters (MCP error code `-32602 (Invalid params)`) is added to the `McpServerSession`.

For now the cursor is the base64 encoded start index of the next page
and the hash value of the collection at time of computing.

The page size is set to 10.

When parameters are found to be invalid the newly introduced `McpParamsValidationError` is returned to handle it properly in the `McpServerSession`.
@tzolov tzolov removed the waiting for user Waiting for user feedback or more details label May 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants