refactor: replace lowlevel Server decorators with on_* constructor kwargs (#1985)

This commit is contained in:
Max Isbey 2026-02-12 15:55:54 +00:00 • committed by GitHub
commit 0a22a9dc33
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -9,13 +9,12 @@ import httpx
import pytest
from starlette.types import Message
from mcp import Client, types
from mcp import Client
from mcp.client.streamable_http import streamable_http_client
from mcp.server import streamable_http_manager
from mcp.server.lowlevel import Server
from mcp.server import Server, ServerRequestContext, streamable_http_manager
from mcp.server.streamable_http import MCP_SESSION_ID_HEADER, StreamableHTTPServerTransport
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
from mcp.types import INVALID_REQUEST
from mcp.types import INVALID_REQUEST, ListToolsResult, PaginatedRequestParams
@pytest.mark.anyio
@ -218,7 +217,7 @@ async def test_stateless_requests_memory_cleanup():
# Patch StreamableHTTPServerTransport constructor to track instances
original_constructor = streamable_http_manager.StreamableHTTPServerTransport
original_constructor = StreamableHTTPServerTransport
def track_transport(*args: Any, **kwargs: Any) -> StreamableHTTPServerTransport:
transport = original_constructor(*args, **kwargs)
@ -321,12 +320,11 @@ async def test_unknown_session_id_returns_404():
@pytest.mark.anyio
async def test_e2e_streamable_http_server_cleanup():
host = "testserver"
app = Server("test-server")
@app.list_tools()
async def list_tools(req: types.ListToolsRequest) -> types.ListToolsResult:
return types.ListToolsResult(tools=[])
async def handle_list_tools(ctx: ServerRequestContext, params: PaginatedRequestParams | None) -> ListToolsResult:
return ListToolsResult(tools=[])
app = Server("test-server", on_list_tools=handle_list_tools)
mcp_app = app.streamable_http_app(host=host)
async with (
mcp_app.router.lifespan_context(mcp_app),