Skip to content

Commit e571c42

Browse files
committed
Set auth context per request in streamable HTTP
Github-Issue:#1250
1 parent b39061f commit e571c42

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/mcp/server/lowlevel/server.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ async def main():
8383
from typing_extensions import TypeVar
8484

8585
import mcp.types as types
86+
from mcp.server.auth.middleware.auth_context import auth_context_var
87+
from mcp.server.auth.middleware.bearer_auth import AuthenticatedUser
8688
from mcp.server.experimental.request_context import Experimental
8789
from mcp.server.lowlevel.experimental import ExperimentalHandlers
8890
from mcp.server.lowlevel.func_inspection import create_call_wrapper
@@ -723,6 +725,7 @@ async def _handle_request(
723725
logger.debug("Dispatching request of type %s", type(req).__name__)
724726

725727
token = None
728+
auth_token = None
726729
try:
727730
# Extract request context and close_sse_stream from message metadata
728731
request_data = None
@@ -743,6 +746,14 @@ async def _handle_request(
743746
task_metadata = None
744747
if hasattr(req, "params") and req.params is not None:
745748
task_metadata = getattr(req.params, "task", None)
749+
if request_data is not None:
750+
scope = getattr(request_data, "scope", None)
751+
if isinstance(scope, dict):
752+
scope_dict = cast(dict[str, Any], scope)
753+
user = scope_dict.get("user")
754+
if isinstance(user, AuthenticatedUser):
755+
auth_token = auth_context_var.set(user)
756+
746757
token = request_ctx.set(
747758
RequestContext(
748759
message.request_id,
@@ -775,6 +786,8 @@ async def _handle_request(
775786
response = types.ErrorData(code=0, message=str(err), data=None)
776787
finally:
777788
# Reset the global state after we are done
789+
if auth_token is not None:
790+
auth_context_var.reset(auth_token)
778791
if token is not None: # pragma: no branch
779792
request_ctx.reset(token)
780793

0 commit comments

Comments
 (0)