refactor: split RequestContext between server and client (#1987)

This commit is contained in:
Marcelo Trylesinski 2026-02-03 14:35:07 +01:00 • committed by GitHub
commit b1f7eec3cd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 210 additions and 212 deletions

View file

@ -5,7 +5,6 @@ from mcp import Client
from mcp.client.session import ClientSession
from mcp.server.mcpserver import MCPServer
from mcp.server.mcpserver.server import Context
from mcp.server.session import ServerSession
from mcp.shared.context import RequestContext
from mcp.types import ListRootsResult, Root, TextContent
@ -16,24 +15,18 @@ async def test_list_roots_callback():
callback_return = ListRootsResult(
roots=[
Root(
uri=FileUrl("file://users/fake/test"),
name="Test Root 1",
),
Root(
uri=FileUrl("file://users/fake/test/2"),
name="Test Root 2",
),
Root(uri=FileUrl("file://users/fake/test"), name="Test Root 1"),
Root(uri=FileUrl("file://users/fake/test/2"), name="Test Root 2"),
]
)
async def list_roots_callback(
context: RequestContext[ClientSession, None],
context: RequestContext[ClientSession],
) -> ListRootsResult:
return callback_return
@server.tool("test_list_roots")
async def test_list_roots(context: Context[ServerSession, None], message: str):
async def test_list_roots(context: Context[None], message: str):
roots = await context.session.list_roots()
assert roots == callback_return
return True

View file

@ -26,7 +26,7 @@ async def test_sampling_callback():
)
async def sampling_callback(
context: RequestContext[ClientSession, None],
context: RequestContext[ClientSession],
params: CreateMessageRequestParams,
) -> CreateMessageResult:
return callback_return
@ -71,7 +71,7 @@ async def test_create_message_backwards_compat_single_content():
)
async def sampling_callback(
context: RequestContext[ClientSession, None],
context: RequestContext[ClientSession],
params: CreateMessageRequestParams,
) -> CreateMessageResult:
return callback_return

View file

@ -1,4 +1,4 @@
from typing import Any
from __future__ import annotations
import anyio
import pytest
@ -390,7 +390,7 @@ async def test_client_capabilities_with_custom_callbacks():
received_capabilities = None
async def custom_sampling_callback( # pragma: no cover
context: RequestContext["ClientSession", Any],
context: RequestContext[ClientSession],
params: types.CreateMessageRequestParams,
) -> types.CreateMessageResult | types.ErrorData:
return types.CreateMessageResult(
@ -400,7 +400,7 @@ async def test_client_capabilities_with_custom_callbacks():
)
async def custom_list_roots_callback( # pragma: no cover
context: RequestContext["ClientSession", Any],
context: RequestContext[ClientSession],
) -> types.ListRootsResult | types.ErrorData:
return types.ListRootsResult(roots=[])
@ -474,7 +474,7 @@ async def test_client_capabilities_with_sampling_tools():
received_capabilities = None
async def custom_sampling_callback( # pragma: no cover
context: RequestContext["ClientSession", Any],
context: RequestContext[ClientSession],
params: types.CreateMessageRequestParams,
) -> types.CreateMessageResult | types.ErrorData:
return types.CreateMessageResult(