feat(mcp_client): adopt per-instance context–manager pattern from smolagents #6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR updates the mcp_client implementation to use a per-instance context-manager pattern borrowed from smolagents, fixing cross-talk and cancel-scope errors when multiple clients are connected concurrently.
Changes Made
__aenter__
and__aexit__
methods for async context manager usageProblem Solved
The original implementation had a shared cancel scope issue where closing one MCP client would interfere with others, causing the error:
This implementation adopts the proven pattern from smolagents that isolates each client's context, allowing multiple MCP clients to coexist without interference.
Testing
The updated implementation maintains full backward compatibility with existing code while fixing the multi-client issue. The example usage demonstrates both legacy and new async context manager patterns.
A developer on Askdev.AI requested this update