37
37
from mcp .server .session import ServerSession
38
38
from mcp .server .sse import SseServerTransport
39
39
from mcp .server .stdio import stdio_server
40
- from mcp .shared .context import RequestContext
40
+ from mcp .shared .context import LifespanContextT , RequestContext
41
41
from mcp .types import (
42
42
AnyFunction ,
43
43
EmbeddedResource ,
@@ -564,7 +564,7 @@ def _convert_to_content(
564
564
return [TextContent (type = "text" , text = result )]
565
565
566
566
567
- class Context (BaseModel ):
567
+ class Context (BaseModel , Generic [ LifespanContextT ] ):
568
568
"""Context object providing access to MCP capabilities.
569
569
570
570
This provides a cleaner interface to MCP's RequestContext functionality.
@@ -598,13 +598,13 @@ def my_tool(x: int, ctx: Context) -> str:
598
598
The context is optional - tools that don't need it can omit the parameter.
599
599
"""
600
600
601
- _request_context : RequestContext [ServerSession , Any ] | None
601
+ _request_context : RequestContext [ServerSession , LifespanContextT ] | None
602
602
_fastmcp : FastMCP | None
603
603
604
604
def __init__ (
605
605
self ,
606
606
* ,
607
- request_context : RequestContext | None = None ,
607
+ request_context : RequestContext [ ServerSession , LifespanContextT ] | None = None ,
608
608
fastmcp : FastMCP | None = None ,
609
609
** kwargs : Any ,
610
610
):
@@ -620,7 +620,7 @@ def fastmcp(self) -> FastMCP:
620
620
return self ._fastmcp
621
621
622
622
@property
623
- def request_context (self ) -> RequestContext :
623
+ def request_context (self ) -> RequestContext [ ServerSession , LifespanContextT ] :
624
624
"""Access to the underlying request context."""
625
625
if self ._request_context is None :
626
626
raise ValueError ("Context is not available outside of a request" )
0 commit comments