refactor: split RequestContext between server and client (#1987)
This commit is contained in:
parent
050aeb6456
commit
b1f7eec3cd
4 changed files with 210 additions and 212 deletions
|
|
@ -7,7 +7,6 @@ This example demonstrates the spec-compliant polling pattern:
|
|||
"""
|
||||
|
||||
import asyncio
|
||||
from typing import Any
|
||||
|
||||
import click
|
||||
from mcp import ClientSession
|
||||
|
|
@ -24,7 +23,7 @@ from mcp.types import (
|
|||
|
||||
|
||||
async def elicitation_callback(
|
||||
context: RequestContext[ClientSession, Any],
|
||||
context: RequestContext[ClientSession],
|
||||
params: ElicitRequestParams,
|
||||
) -> ElicitResult:
|
||||
"""Handle elicitation requests from the server."""
|
||||
|
|
@ -39,7 +38,7 @@ async def elicitation_callback(
|
|||
|
||||
|
||||
async def sampling_callback(
|
||||
context: RequestContext[ClientSession, Any],
|
||||
context: RequestContext[ClientSession],
|
||||
params: CreateMessageRequestParams,
|
||||
) -> CreateMessageResult:
|
||||
"""Handle sampling requests from the server."""
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ server_params = StdioServerParameters(
|
|||
|
||||
# Optional: create a sampling callback
|
||||
async def handle_sampling_message(
|
||||
context: RequestContext[ClientSession, None], params: types.CreateMessageRequestParams
|
||||
context: RequestContext[ClientSession], params: types.CreateMessageRequestParams
|
||||
) -> types.CreateMessageResult:
|
||||
print(f"Sampling request: {params.messages}")
|
||||
return types.CreateMessageResult(
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ from mcp.types import URL_ELICITATION_REQUIRED
|
|||
|
||||
|
||||
async def handle_elicitation(
|
||||
context: RequestContext[ClientSession, Any],
|
||||
context: RequestContext[ClientSession],
|
||||
params: types.ElicitRequestParams,
|
||||
) -> types.ElicitResult | types.ErrorData:
|
||||
"""Handle elicitation requests from the server.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ from contextlib import asynccontextmanager
|
|||
from dataclasses import dataclass
|
||||
|
||||
from mcp.server.mcpserver import Context, MCPServer
|
||||
from mcp.server.session import ServerSession
|
||||
|
||||
|
||||
# Mock database class for example
|
||||
|
|
@ -51,7 +50,7 @@ mcp = MCPServer("My App", lifespan=app_lifespan)
|
|||
|
||||
# Access type-safe lifespan context in tools
|
||||
@mcp.tool()
|
||||
def query_db(ctx: Context[ServerSession, AppContext]) -> str:
|
||||
def query_db(ctx: Context[AppContext]) -> str:
|
||||
"""Tool that uses initialized resources."""
|
||||
db = ctx.request_context.lifespan_context.db
|
||||
return db.query()
|
||||
|
|
|
|||
Loading…
Reference in a new issue