refactor: remove request_ctx ContextVar, thread Context explicitly (#2203)
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
This commit is contained in:
parent
62575edabd
commit
cc22bf5464
3 changed files with 484 additions and 413 deletions
|
|
@ -3,8 +3,7 @@ from pydantic import FileUrl
|
|||
|
||||
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.mcpserver import Context, MCPServer
|
||||
from mcp.shared._context import RequestContext
|
||||
from mcp.types import ListRootsResult, Root, TextContent
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from typing import Any, Literal
|
|||
import pytest
|
||||
|
||||
from mcp import Client, types
|
||||
from mcp.server.mcpserver import MCPServer
|
||||
from mcp.server.mcpserver import Context, MCPServer
|
||||
from mcp.shared.session import RequestResponder
|
||||
from mcp.types import (
|
||||
LoggingMessageNotificationParams,
|
||||
|
|
@ -33,14 +33,10 @@ async def test_logging_callback():
|
|||
# Create a function that can send a log notification
|
||||
@server.tool("test_tool_with_log")
|
||||
async def test_tool_with_log(
|
||||
message: str, level: Literal["debug", "info", "warning", "error"], logger: str
|
||||
message: str, level: Literal["debug", "info", "warning", "error"], logger: str, ctx: Context
|
||||
) -> bool:
|
||||
"""Send a log notification to the client."""
|
||||
await server.get_context().log(
|
||||
level=level,
|
||||
message=message,
|
||||
logger_name=logger,
|
||||
)
|
||||
await ctx.log(level=level, message=message, logger_name=logger)
|
||||
return True
|
||||
|
||||
@server.tool("test_tool_with_log_extra")
|
||||
|
|
@ -50,9 +46,10 @@ async def test_logging_callback():
|
|||
logger: str,
|
||||
extra_string: str,
|
||||
extra_dict: dict[str, Any],
|
||||
ctx: Context,
|
||||
) -> bool:
|
||||
"""Send a log notification to the client with extra fields."""
|
||||
await server.get_context().log(
|
||||
await ctx.log(
|
||||
level=level,
|
||||
message=message,
|
||||
logger_name=logger,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import pytest
|
|||
|
||||
from mcp import Client
|
||||
from mcp.client.session import ClientSession
|
||||
from mcp.server.mcpserver import MCPServer
|
||||
from mcp.server.mcpserver import Context, MCPServer
|
||||
from mcp.shared._context import RequestContext
|
||||
from mcp.types import (
|
||||
CreateMessageRequestParams,
|
||||
|
|
@ -32,8 +32,8 @@ async def test_sampling_callback():
|
|||
return callback_return
|
||||
|
||||
@server.tool("test_sampling")
|
||||
async def test_sampling_tool(message: str):
|
||||
value = await server.get_context().session.create_message(
|
||||
async def test_sampling_tool(message: str, ctx: Context) -> bool:
|
||||
value = await ctx.session.create_message(
|
||||
messages=[SamplingMessage(role="user", content=TextContent(type="text", text=message))],
|
||||
max_tokens=100,
|
||||
)
|
||||
|
|
@ -77,9 +77,9 @@ async def test_create_message_backwards_compat_single_content():
|
|||
return callback_return
|
||||
|
||||
@server.tool("test_backwards_compat")
|
||||
async def test_tool(message: str):
|
||||
async def test_tool(message: str, ctx: Context) -> bool:
|
||||
# Call create_message WITHOUT tools
|
||||
result = await server.get_context().session.create_message(
|
||||
result = await ctx.session.create_message(
|
||||
messages=[SamplingMessage(role="user", content=TextContent(type="text", text=message))],
|
||||
max_tokens=100,
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue