@@ -441,10 +441,12 @@ def make_fastmcp_with_context_app():
441
441
def echo_headers (ctx : Context ) -> str :
442
442
"""Returns the request headers as JSON."""
443
443
headers_info = {}
444
- if ctx .request_context .request and isinstance (
445
- ctx .request_context .request , Request
446
- ):
447
- headers_info = dict (ctx .request_context .request .headers )
444
+ if ctx .request_context .request :
445
+ # Extract headers from ASGI scope
446
+ headers_list = ctx .request_context .request .get ("headers" , [])
447
+ headers_info = {
448
+ k .decode ("latin-1" ): v .decode ("latin-1" ) for k , v in headers_list
449
+ }
448
450
return json .dumps (headers_info )
449
451
450
452
# Tool that returns full request context
@@ -455,13 +457,15 @@ def echo_context(custom_request_id: str, ctx: Context) -> str:
455
457
"custom_request_id" : custom_request_id ,
456
458
"headers" : {},
457
459
"method" : None ,
458
- "url " : None ,
460
+ "path " : None ,
459
461
}
460
462
if ctx .request_context .request :
461
- if isinstance (ctx .request_context .request , Request ):
462
- context_data ["headers" ] = dict (ctx .request_context .request .headers )
463
- context_data ["method" ] = ctx .request_context .request .method
464
- context_data ["url" ] = str (ctx .request_context .request .url )
463
+ # Extract data from ASGI scope
464
+ headers_list = ctx .request_context .request .get ("headers" , [])
465
+ context_data ["headers" ] = {
466
+ k .decode ("latin-1" ): v .decode ("latin-1" ) for k , v in headers_list
467
+ }
468
+ context_data ["method" ] = ctx .request_context .request .get ("method" )
465
469
return json .dumps (context_data )
466
470
467
471
# Create the SSE app
@@ -558,10 +562,7 @@ async def test_fast_mcp_with_request_context(
558
562
context_data ["headers" ].get ("authorization" )
559
563
== "Bearer fastmcp-test-token"
560
564
)
561
- assert context_data ["method" ] == "POST" # SSE messages are POSTed
562
- assert (
563
- "/messages/" in context_data ["url" ]
564
- ) # Should contain the messages endpoint
565
+ assert context_data ["method" ] == "POST" #
565
566
566
567
567
568
@pytest .mark .anyio
0 commit comments