File tree Expand file tree Collapse file tree 3 files changed +14
-1
lines changed
Expand file tree Collapse file tree 3 files changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -491,6 +491,7 @@ async def handle_sse(request: Request) -> None:
491491 streams [0 ],
492492 streams [1 ],
493493 self ._mcp_server .create_initialization_options (),
494+ extra_metadata = {"http_request" : request },
494495 )
495496
496497 return Starlette (
@@ -501,6 +502,15 @@ async def handle_sse(request: Request) -> None:
501502 ],
502503 )
503504
505+ def get_http_request (self ) -> Request | None :
506+ ctx = self .get_context ()
507+ if (ctx .request_context and
508+ ctx .request_context .meta and
509+ hasattr (ctx .request_context .meta , "extra_metadata" )):
510+ req : Request = ctx .request_context .meta .extra_metadata .get ("http_request" ) # type: ignore
511+ return req
512+ return None
513+
504514 async def list_prompts (self ) -> list [MCPPrompt ]:
505515 """List all available prompts."""
506516 prompts = self ._prompt_manager .list_prompts ()
Original file line number Diff line number Diff line change @@ -479,6 +479,7 @@ async def run(
479479 # but also make tracing exceptions much easier during testing and when using
480480 # in-process servers.
481481 raise_exceptions : bool = False ,
482+ extra_metadata : dict [str , Any ] | None = None ,
482483 ):
483484 async with AsyncExitStack () as stack :
484485 lifespan_context = await stack .enter_async_context (self .lifespan (self ))
@@ -489,7 +490,8 @@ async def run(
489490 async with anyio .create_task_group () as tg :
490491 async for message in session .incoming_messages :
491492 logger .debug (f"Received message: { message } " )
492-
493+ if hasattr (message , "request_meta" ) and getattr (message , "request_meta" ):
494+ message .request_meta .extra_metadata = extra_metadata # type: ignore
493495 tg .start_soon (
494496 self ._handle_message ,
495497 message ,
Original file line number Diff line number Diff line change 4141class RequestParams (BaseModel ):
4242 class Meta (BaseModel ):
4343 progressToken : ProgressToken | None = None
44+ extra_metadata : dict [str , Any ] | None = None
4445 """
4546 If specified, the caller requests out-of-band progress notifications for
4647 this request (as represented by notifications/progress). The value of this
You can’t perform that action at this time.
0 commit comments