Set default content to an empty array instead of nil
Follow-up to https://github.com/modelcontextprotocol/ruby-sdk/pull/147. According to the specification schema, `content` is not optional and therefore cannot be omitted: ```typescript interface CallToolResult { _meta?: { [key: string]: unknown }; content: ContentBlock[]; isError?: boolean; structuredContent?: { [key: string]: unknown }; [key: string]: unknown; } ``` https://modelcontextprotocol.io/specification/2025-06-18/schema#calltoolresult Instead of `nil`, an empty array is set as the default value. There may be a better value for `content`, but at the very least it should not be missing.
This commit is contained in:
parent
010ae74edc
commit
0034952df9
2 changed files with 14 additions and 3 deletions
|
|
@ -13,7 +13,7 @@ module MCP
|
||||||
error = deprecated_error
|
error = deprecated_error
|
||||||
end
|
end
|
||||||
|
|
||||||
@content = content
|
@content = content || []
|
||||||
@error = error
|
@error = error
|
||||||
@structured_content = structured_content
|
@structured_content = structured_content
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -101,13 +101,24 @@ module MCP
|
||||||
refute actual[:isError]
|
refute actual[:isError]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "#to_h for a standard response with nil content and structured content" do
|
||||||
|
structured_content = { code: 401, message: "Unauthorized" }
|
||||||
|
response = Response.new(nil, structured_content: structured_content)
|
||||||
|
actual = response.to_h
|
||||||
|
|
||||||
|
assert_equal [:content, :isError, :structuredContent], actual.keys
|
||||||
|
assert_empty actual[:content]
|
||||||
|
assert_equal structured_content, actual[:structuredContent]
|
||||||
|
refute actual[:isError]
|
||||||
|
end
|
||||||
|
|
||||||
test "#to_h for a standard response with structured content only" do
|
test "#to_h for a standard response with structured content only" do
|
||||||
structured_content = { code: 401, message: "Unauthorized" }
|
structured_content = { code: 401, message: "Unauthorized" }
|
||||||
response = Response.new(structured_content: structured_content)
|
response = Response.new(structured_content: structured_content)
|
||||||
actual = response.to_h
|
actual = response.to_h
|
||||||
|
|
||||||
assert_equal [:isError, :structuredContent], actual.keys
|
assert_equal [:content, :isError, :structuredContent], actual.keys
|
||||||
assert_nil actual[:content]
|
assert_empty actual[:content]
|
||||||
assert_equal structured_content, actual[:structuredContent]
|
assert_equal structured_content, actual[:structuredContent]
|
||||||
refute actual[:isError]
|
refute actual[:isError]
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue