normalize string ID to int in server messages for compatibility
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
- [x] 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
- [x] I have read the MCP Documentation
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] 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.