## 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
Strict pyright mode results in a lot of issues regarding non fully
determined types, due to Generics. These are some issues I came across
today. We are still far from being clean on pyright.