-
Notifications
You must be signed in to change notification settings - Fork 51
[tools] add support for structured responses #81
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[tools] add support for structured responses #81
Conversation
Nice job! Does this not also require an 'outputSchema'? |
output schema is optional for structured output, for now I just added support for the response field |
test/test_helper.rb
Outdated
@@ -17,7 +17,7 @@ | |||
|
|||
require_relative "instrumentation_test_helper" | |||
|
|||
Minitest::Reporters.use!(Minitest::Reporters::ProgressReporter.new) | |||
Minitest::Reporters.use!(Minitest::Reporters::ProgressReporter.new) unless ENV["RM_INFO"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you explain where/when RM_INFO
comes from? (Explicitly calling out this change in the PR description or punting it to its specific PR would be favourable.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
created a new PR here https://github.com/modelcontextprotocol/ruby-sdk/pull/97/files
attr_reader :content, :is_error | ||
|
||
# @param structured_content [Hash] The structured content of the response, must be provided. | ||
# @param content [String, nil] The content array of the response, can be nil. If nil will generate a single element with structured content converted to JSON string. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For backwards compatibility, a tool that returns structured content SHOULD also return the serialized JSON in a TextContent block.
Not a MUST, but a SHOULD, but I agree with doing it for backwards compatibility in this gem.
- add support for structured content (https://modelcontextprotocol.io/specification/2025-06-18/server/tools#structured-content) in tool responses - for backwards compatibility implements text content auto-generation
71346ef
to
3431c23
Compare
separated unrelated change into new PR |
Add new response class to be able to return structuredContent as part of tools response in a backwards compatible way
Motivation and Context
Structured responses are an established part of the spec and the SDK should support it.
How Has This Been Tested?
Add new tested and tested with internal MCP server implementation.
Breaking Changes
None
Types of changes
Checklist