Skip to content

normalize string ID to int in server messages for compatibility #851

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 3 commits into
base: main
Choose a base branch
from

Conversation

wangxm345566462
Copy link

@wangxm345566462 wangxm345566462 commented May 30, 2025

Some non-standard SSE servers may return numeric IDs as strings, even when the original request used an integer. This change ensures that message.root.id is always an integer to maintain consistency and avoid type issues in downstream processing.

Normalize message.root.id to integer if it is a numeric string returned by non-standard SSE servers.

Motivation and Context

Some SSE servers return numeric IDs as strings, causing mismatches between request and response IDs. This leads to callbacks not being triggered and the client waiting indefinitely. The change improves compatibility and stability by normalizing the ID type.

How Has This Been Tested?

Tested with mock SSE server responses containing string IDs; verified that messages with string numeric IDs are correctly converted to int and processed without errors.

Breaking Changes

No breaking changes. This is a backward-compatible bug fix.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

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

Additional context

This fix addresses compatibility issues with SSE servers that do not strictly follow numeric ID typing conventions. It ensures the client logic for callback matching remains reliable.

晓明 王 added 3 commits May 30, 2025 16:04
Some non-standard SSE servers may return numeric IDs as strings,
even when the original request used an integer. This change ensures
that message.root.id is always an integer to maintain consistency
and avoid type issues in downstream processing.
Some non-standard SSE servers may return numeric IDs as strings,
even when the original request used an integer. This change ensures
that message.root.id is always an integer to maintain consistency
and avoid type issues in downstream processing.
format code
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.

1 participant