Add methods to track and verify client capabilities during initialization. This
includes storing client parameters from the initialize request and providing a
check_client_capability method to verify if specific capabilities are supported
by the connected client.
We currently return a generic instance of RequestContext without
a specialization on the Session type. This makes it impossible
for servers to typesafe call `list_roots()` and other methods.
We now return a specific instance of `RequestContext[ServerSession]`
We will be a bit more low level and expect callees to import mcp.types
instead of relying in re-exported types. This makes usage more explicit
and avoids potential collisions in mcp.server.
The helper types in mcp.server.types got really confusioning during
implementation as they overlapped with mcp.types. I now believe it
is better if we stay more low level to the spec types.
To do this, we now only use mcp.types everywhere. We renamed mcp.server.types
to mcp.server.models and removed it to the absolute minimum.
Replace generic capability dictionaries with structured types for prompts,
resources, tools, and roots. This improves type safety and makes capability
features like listChanged and subscribe more explicit in the protocol.
## Goal
Support running an MCP server in the same process as the client, while preserving MCP abstractions.
## Details
1. **(core change)** Adds a new `memory` transport module that enables in-process client-server communication.
This includes:
- `create_client_server_memory_streams()` to create bidirectional memory streams
- `create_connected_server_and_client_session()` to establish an in-process client-server connection
3. (minor) Enhances error handling and timeout support:
- Adds configurable read timeouts to sessions via `read_timeout_seconds` parameter
- Improves exception handling in the server with a new `raise_exceptions` flag to control whether errors are returned to clients or raised directly
- Ensures proper cleanup of request context tokens in error cases
4. (minor) Makes server improvements:
- Adds built-in ping handler support