Skip to content

Commit 144db31

Browse files
committed
enable http headers in sse in the context
1 parent 1066199 commit 144db31

File tree

4 files changed

+11
-2
lines changed

4 files changed

+11
-2
lines changed

src/mcp/server/lowlevel/server.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,11 @@ async def _handle_request(
526526
logger.debug(f"Dispatching request of type {type(req).__name__}")
527527

528528
token = None
529+
headers = {}
530+
try:
531+
headers = message.request.root.headers # type: ignore
532+
except Exception:
533+
pass
529534
try:
530535
# Set our global state that can be retrieved via
531536
# app.get_request_context()
@@ -535,6 +540,7 @@ async def _handle_request(
535540
message.request_meta,
536541
session,
537542
lifespan_context,
543+
headers,
538544
)
539545
)
540546
response = await handler(req)

src/mcp/server/sse.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,8 @@ async def handle_post_message(
160160
logger.debug(f"Received JSON: {json}")
161161

162162
try:
163-
message = types.JSONRPCMessage.model_validate(json)
163+
message_with_headers = {**json, "headers": dict(request.headers)}
164+
message = types.JSONRPCMessage.model_validate(message_with_headers)
164165
logger.debug(f"Validated client message: {message}")
165166
except ValidationError as err:
166167
logger.error(f"Failed to parse message: {err}")

src/mcp/shared/context.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from dataclasses import dataclass
1+
from dataclasses import dataclass, field
22
from typing import Generic, TypeVar
33

44
from mcp.shared.session import BaseSession
@@ -14,3 +14,4 @@ class RequestContext(Generic[SessionT, LifespanContextT]):
1414
meta: RequestParams.Meta | None
1515
session: SessionT
1616
lifespan_context: LifespanContextT
17+
headers: dict[str, str] = field(default_factory=dict)

src/mcp/types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ class JSONRPCRequest(Request):
118118
jsonrpc: Literal["2.0"]
119119
id: RequestId
120120
params: dict[str, Any] | None = None
121+
headers: dict[str, str] | None = None
121122

122123

123124
class JSONRPCNotification(Notification):

0 commit comments

Comments
 (0)