mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-22 13:34:17 +02:00
Fix get_http_headers() returning empty dict in on_initialize middleware (#2370)
This commit is contained in:
parent
a359b0b28d
commit
a7563a39b0
1 changed files with 8 additions and 2 deletions
|
|
@ -9,9 +9,11 @@ from mcp.server.auth.middleware.auth_context import (
|
|||
from mcp.server.auth.provider import (
|
||||
AccessToken as _SDKAccessToken,
|
||||
)
|
||||
from mcp.server.lowlevel.server import request_ctx
|
||||
from starlette.requests import Request
|
||||
|
||||
from fastmcp.server.auth import AccessToken
|
||||
from fastmcp.server.http import _current_http_request
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from fastmcp.server.context import Context
|
||||
|
|
@ -41,12 +43,16 @@ def get_context() -> Context:
|
|||
|
||||
|
||||
def get_http_request() -> Request:
|
||||
from mcp.server.lowlevel.server import request_ctx
|
||||
|
||||
# Try MCP SDK's request_ctx first (set during normal MCP request handling)
|
||||
request = None
|
||||
with contextlib.suppress(LookupError):
|
||||
request = request_ctx.get().request
|
||||
|
||||
# Fallback to FastMCP's HTTP context variable
|
||||
# This is needed during `on_initialize` middleware where request_ctx isn't set yet
|
||||
if request is None:
|
||||
request = _current_http_request.get()
|
||||
|
||||
if request is None:
|
||||
raise RuntimeError("No active HTTP request found.")
|
||||
return request
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue