fix: implemented exception handling for client indefinite blocks
This PR fixes #447 #642
Mismatch URL
Connection Error
Motivation and Context
This PR solves the indefinite blocking issue of the client by handling the exception thrown by url mismatch and also all the exceptions happens during connection:
- by propagating the error once value error is raised instead of sending it via stream
- by adding exception groups to handle value error as well as connection error etc with exception groups
- by adding errors list to add the exception groups and convert it to normal exception and throw to client
- It also fixes the yield placement issue
How Has This Been Tested?
- Tested with local python servers and typescript servers.
- Tested by building the package and installing it in local using
uv pip install /dist/mcp-1.6.1.dev12+70115b9-py3-none-any.whlin the local servers. - Tested URL mismatch scenarios, connection errors.
- Tested success scenarios too.
Breaking Changes
There are no breaking changes.
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
Seems like except* is not compatible with python 3.10 version will check with it and change it
@jerome3o-anthropic @jspahrsummers @dsp-ant Adding here for PR review
@Kludex Synced the PR. It’s up to date with main
@Kludex @jerome3o-anthropic Synced the PR. It's up to date with main
@Kludex Synced the PR.
@dsp-ant @jerome3o-anthropic @Kludex Synced the PR with main
@dsp-ant @jerome3o-anthropic @Kludex @ihrpr Synced the PR with main. Guys I've been following this PR and syncing for past 3 weeks I'm not getting any feedback and suggestions on this. I'd be happy to know the status of this PR
@dsp-ant @jerome3o-anthropic @Kludex @ihrpr Synced the PR with main.
@dsp-ant @jerome3o-anthropic @Kludex @ihrpr Synced the PR with main.
I'm not sure why test cases are failing. @ihrpr
Closing this PR, looks stale now. Please re-open if the changes are still needed and suggestions applied.