mirror of
https://github.com/aljazceru/mcp-python-sdk.git
synced 2025-12-19 06:54:18 +01:00
## 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
29 lines
717 B
Python
29 lines
717 B
Python
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
|