3737from mcp .server .session import ServerSession
3838from mcp .server .sse import SseServerTransport
3939from mcp .server .stdio import stdio_server
40- from mcp .shared .context import RequestContext
40+ from mcp .shared .context import LifespanContextT , RequestContext
4141from mcp .types import (
4242 AnyFunction ,
4343 EmbeddedResource ,
@@ -564,7 +564,7 @@ def _convert_to_content(
564564 return [TextContent (type = "text" , text = result )]
565565
566566
567- class Context (BaseModel ):
567+ class Context (BaseModel , Generic [ LifespanContextT ] ):
568568 """Context object providing access to MCP capabilities.
569569
570570 This provides a cleaner interface to MCP's RequestContext functionality.
@@ -598,13 +598,13 @@ def my_tool(x: int, ctx: Context) -> str:
598598 The context is optional - tools that don't need it can omit the parameter.
599599 """
600600
601- _request_context : RequestContext [ServerSession , Any ] | None
601+ _request_context : RequestContext [ServerSession , LifespanContextT ] | None
602602 _fastmcp : FastMCP | None
603603
604604 def __init__ (
605605 self ,
606606 * ,
607- request_context : RequestContext | None = None ,
607+ request_context : RequestContext [ ServerSession , LifespanContextT ] | None = None ,
608608 fastmcp : FastMCP | None = None ,
609609 ** kwargs : Any ,
610610 ):
@@ -620,7 +620,7 @@ def fastmcp(self) -> FastMCP:
620620 return self ._fastmcp
621621
622622 @property
623- def request_context (self ) -> RequestContext :
623+ def request_context (self ) -> RequestContext [ ServerSession , LifespanContextT ] :
624624 """Access to the underlying request context."""
625625 if self ._request_context is None :
626626 raise ValueError ("Context is not available outside of a request" )
0 commit comments