@@ -50,6 +50,7 @@ async def handle_list_prompts(ctx: RequestContext) -> list[types.Prompt]:
5050from mcp .server .models import InitializationOptions
5151from mcp .server .validation import validate_sampling_tools , validate_tool_use_result_messages
5252from mcp .shared .experimental .tasks .capabilities import check_tasks_capability
53+ from mcp .shared .experimental .tasks .helpers import RELATED_TASK_METADATA_KEY
5354from mcp .shared .message import ServerMessageMetadata , SessionMessage
5455from mcp .shared .response_router import ResponseRouter
5556from mcp .shared .session import (
@@ -520,7 +521,9 @@ def _build_elicit_form_request(
520521 # Defensive: model_dump() never includes _meta, but guard against future changes
521522 if "_meta" not in params_data : # pragma: no cover
522523 params_data ["_meta" ] = {}
523- params_data ["_meta" ]["io.modelcontextprotocol/related-task" ] = {"taskId" : related_task_id }
524+ params_data ["_meta" ][RELATED_TASK_METADATA_KEY ] = types .RelatedTaskMetadata (
525+ taskId = related_task_id
526+ ).model_dump (by_alias = True )
524527
525528 request_id = f"task-{ related_task_id } -{ id (params )} " if related_task_id else self ._request_id
526529 if related_task_id is None :
@@ -563,7 +566,9 @@ def _build_elicit_url_request(
563566 # Defensive: model_dump() never includes _meta, but guard against future changes
564567 if "_meta" not in params_data : # pragma: no cover
565568 params_data ["_meta" ] = {}
566- params_data ["_meta" ]["io.modelcontextprotocol/related-task" ] = {"taskId" : related_task_id }
569+ params_data ["_meta" ][RELATED_TASK_METADATA_KEY ] = types .RelatedTaskMetadata (
570+ taskId = related_task_id
571+ ).model_dump (by_alias = True )
567572
568573 request_id = f"task-{ related_task_id } -{ id (params )} " if related_task_id else self ._request_id
569574 if related_task_id is None :
@@ -631,7 +636,9 @@ def _build_create_message_request(
631636 # Defensive: model_dump() never includes _meta, but guard against future changes
632637 if "_meta" not in params_data : # pragma: no cover
633638 params_data ["_meta" ] = {}
634- params_data ["_meta" ]["io.modelcontextprotocol/related-task" ] = {"taskId" : related_task_id }
639+ params_data ["_meta" ][RELATED_TASK_METADATA_KEY ] = types .RelatedTaskMetadata (
640+ taskId = related_task_id
641+ ).model_dump (by_alias = True )
635642
636643 request_id = f"task-{ related_task_id } -{ id (params )} " if related_task_id else self ._request_id
637644 if related_task_id is None :
0 commit comments