Skip to content

Commit 6558dc9

Browse files
author
Zain Dana Harper
committed
Clarify missing tool result validation error
1 parent 220d362 commit 6558dc9

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

src/mcp/server/validation.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,5 +84,7 @@ def validate_tool_use_result_messages(messages: list[SamplingMessage]) -> None:
8484
if has_previous_tool_use and previous_content:
8585
tool_use_ids = {c.id for c in previous_content if c.type == "tool_use"}
8686
tool_result_ids = {c.tool_use_id for c in last_content if c.type == "tool_result"}
87+
if not has_tool_results:
88+
raise ValueError("tool_use blocks must be followed by matching tool_result blocks")
8789
if tool_use_ids != tool_result_ids:
8890
raise ValueError("ids of tool_result blocks and tool_use blocks from previous message do not match")

tests/server/test_validation.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,23 @@ def test_validate_tool_use_result_messages_raises_when_tool_result_ids_dont_matc
146146
validate_tool_use_result_messages(messages)
147147

148148

149+
def test_validate_tool_use_result_messages_raises_when_tool_use_has_no_following_tool_result() -> None:
150+
"""Raises a specific error when the previous assistant tool_use has no following tool_result."""
151+
messages = [
152+
SamplingMessage(
153+
role="assistant",
154+
content=ToolUseContent(type="tool_use", id="tool-1", name="test", input={}),
155+
),
156+
SamplingMessage(
157+
role="user",
158+
content=TextContent(type="text", text="No tool result is provided"),
159+
),
160+
]
161+
with pytest.raises(ValueError) as exc_info:
162+
validate_tool_use_result_messages(messages)
163+
assert str(exc_info.value) == "tool_use blocks must be followed by matching tool_result blocks"
164+
165+
149166
def test_validate_tool_use_result_messages_no_error_when_tool_result_matches_tool_use() -> None:
150167
"""No error when tool_result IDs match tool_use IDs."""
151168
messages = [

0 commit comments

Comments
 (0)