Skip to content

Commit 3f87724

Browse files
committed
fix: omit empty task result fields
1 parent 616476f commit 3f87724

2 files changed

Lines changed: 3 additions & 1 deletion

File tree

src/mcp/server/experimental/task_result_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ async def handle(
116116
related_task = RelatedTaskMetadata(task_id=task_id)
117117
related_task_meta: dict[str, Any] = {RELATED_TASK_METADATA_KEY: related_task.model_dump(by_alias=True)}
118118
if result is not None:
119-
result_data = result.model_dump(by_alias=True)
119+
result_data = result.model_dump(by_alias=True, mode="json", exclude_none=True)
120120
existing_meta: dict[str, Any] = result_data.get("_meta") or {}
121121
result_data["_meta"] = {**existing_meta, **related_task_meta}
122122
return GetTaskPayloadResult.model_validate(result_data)

tests/experimental/tasks/server/test_task_result_handler.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ async def test_handle_returns_result_for_completed_task(
6565
assert response is not None
6666
assert response.meta is not None
6767
assert "io.modelcontextprotocol/related-task" in response.meta
68+
serialized = response.model_dump(by_alias=True, mode="json")
69+
assert serialized["content"] == [{"type": "text", "text": "Done!"}]
6870

6971

7072
@pytest.mark.anyio

0 commit comments

Comments
 (0)