diff --git a/src/mcp/server/__init__.py b/src/mcp/server/__init__.py index a0dd033d6..428926d06 100644 --- a/src/mcp/server/__init__.py +++ b/src/mcp/server/__init__.py @@ -439,12 +439,15 @@ async def run( token = None try: - # Set our global state that can be retrieved via - # app.get_request_context() + progress_token = None + if req.params is not None and req.params.model_dump().get("_meta") is not None: + meta_dict = req.params.model_dump().get("_meta") + if "progressToken" in meta_dict: + progress_token = meta_dict["progressToken"] token = request_ctx.set( RequestContext( message.request_id, - message.request_meta, + types.RequestParams.Meta(progressToken=progress_token), session, ) ) diff --git a/src/mcp/types.py b/src/mcp/types.py index a2b897403..57e236513 100644 --- a/src/mcp/types.py +++ b/src/mcp/types.py @@ -40,6 +40,7 @@ class Meta(BaseModel): model_config = ConfigDict(extra="allow") _meta: Meta | None = None + model_config = ConfigDict(extra="allow") class NotificationParams(BaseModel):