Files
mcp-python-sdk/tests/conftest.py
Nick Merrill 60e9c7a0d7 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
2024-11-05 15:42:41 -08:00

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