feat(client): add transport abstraction for Client class #1973
+570
−44
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.
Summary
Adds a
Transportprotocol and concrete transport implementations (HttpTransport,SseTransport,InMemoryTransport) so that different transports can be used via theClientinterface.Motivation and Context
The
Clientclass currently only supports in-memory connections to server instances. This change introduces a transport abstraction so thatClientcan connect over Streamable HTTP, SSE, or in-memory, with automatic inference from the target type.How Has This Been Tested?
test_transport_inference.py)test_client_transports.py)Breaking Changes
None - this is additive.
Types of changes
Checklist
Additional context
ClientTarget = Server[Any] | FastMCP | Transport | str- the Client now accepts server instances directly, transport instances, or URL strings, and infers the appropriate transport automatically.