Add in-memory transport (#25)
## 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
This commit is contained in:
parent
1a60e1b7c7
commit
60e9c7a0d7
1 changed files with 210 additions and 10 deletions
28
tests/conftest.py
Normal file
28
tests/conftest.py
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
import pytest
|
||||
from pydantic import AnyUrl
|
||||
|
||||
from mcp_python.server import Server
|
||||
from mcp_python.server.types import InitializationOptions
|
||||
from mcp_python.types import Resource, ServerCapabilities
|
||||
|
||||
TEST_INITIALIZATION_OPTIONS = InitializationOptions(
|
||||
server_name="my_mcp_server",
|
||||
server_version="0.1.0",
|
||||
capabilities=ServerCapabilities(),
|
||||
)
|
||||
|
||||
@pytest.fixture
|
||||
def mcp_server() -> Server:
|
||||
server = Server(name="test_server")
|
||||
|
||||
@server.list_resources()
|
||||
async def handle_list_resources():
|
||||
return [
|
||||
Resource(
|
||||
uri=AnyUrl("memory://test"),
|
||||
name="Test Resource",
|
||||
description="A test resource"
|
||||
)
|
||||
]
|
||||
|
||||
return server
|
||||
Loading…
Reference in a new issue