15
15
import uvicorn
16
16
from pydantic import AnyUrl
17
17
from starlette .applications import Starlette
18
+ from starlette .requests import Request
18
19
19
20
import mcp .types as types
20
21
from mcp .client .session import ClientSession
@@ -89,7 +90,7 @@ def echo(message: str) -> str:
89
90
return f"Echo: { message } "
90
91
91
92
# Create the SSE app
92
- app : Starlette = mcp .sse_app ()
93
+ app = mcp .sse_app ()
93
94
94
95
return mcp , app
95
96
@@ -201,7 +202,7 @@ def make_everything_fastmcp_app():
201
202
"""Create a comprehensive FastMCP server with SSE transport."""
202
203
mcp = make_everything_fastmcp ()
203
204
# Create the SSE app
204
- app : Starlette = mcp .sse_app ()
205
+ app = mcp .sse_app ()
205
206
return mcp , app
206
207
207
208
@@ -440,11 +441,10 @@ def make_fastmcp_with_context_app():
440
441
def echo_headers (ctx : Context ) -> str :
441
442
"""Returns the request headers as JSON."""
442
443
headers_info = {}
443
- try :
444
- if ctx .request_context .request :
445
- headers_info = ctx .request_context .request .get ("headers" , {})
446
- except Exception :
447
- pass
444
+ if ctx .request_context .request and isinstance (
445
+ ctx .request_context .request , Request
446
+ ):
447
+ headers_info = dict (ctx .request_context .request .headers )
448
448
return json .dumps (headers_info )
449
449
450
450
# Tool that returns full request context
@@ -457,17 +457,15 @@ def echo_context(custom_request_id: str, ctx: Context) -> str:
457
457
"method" : None ,
458
458
"url" : None ,
459
459
}
460
- try :
461
- if ctx .request_context .request :
462
- context_data ["headers" ] = ctx .request_context .request .get ("headers" , {})
463
- context_data ["method" ] = ctx .request_context .request .get ("method" )
464
- context_data ["url" ] = ctx .request_context .request .get ("url" )
465
- except Exception :
466
- pass
460
+ 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 )
467
465
return json .dumps (context_data )
468
466
469
467
# Create the SSE app
470
- app : Starlette = mcp .sse_app ()
468
+ app = mcp .sse_app ()
471
469
return mcp , app
472
470
473
471
0 commit comments