Commit graph quickstart-resources/mcp-client-ruby/Gemfile
Author SHA1 Message Date
olaservo
d913f3a150 Add structured output to the Ruby weather server and client
The mcp gem 1.1.0 (2026-08-01) is the first to negotiate 2026-07-28, so the
Ruby examples can finally show the same thing the other four do: get_alerts
declares an array-rooted output_schema and returns a bare top-level JSON
array, get_forecast returns an object. Declaring `type:` at the root is what
suppresses the SDK object-root default.

Failure paths return an error result rather than a bare text one, because a
tool declaring an output_schema MUST return conforming structured content.
No alerts is an empty array, not an error.

The client compiles each declared schema at connect time and validates every
non-error result. The SDK client does not do this itself, so the spec
client-side SHOULD costs real code here, as it does in Go and Rust.

NOT READY TO SHIP. The gem never emits the `resultType` field that the
2026-07-28 schema marks mandatory, and no user-level knob sets it, so a
spec-strict client rejects every response including tools/list. Verified
end-to-end against the Ruby client, which does not check the field; blocked
against the TypeScript SDK client. See the server README.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 21:20:39 -07:00
Koichi ITO
12ef7bc7d6
Update Ruby MCP client example (#177)
Follow-up to #121.

This PR removes the `base64` dependency from the Gemfile, as it became a runtime dependency of
Claude SDK for Ruby v1.60.0+.
https://github.com/anthropics/anthropic-sdk-ruby/pull/161#issuecomment-5221400980
2026-08-09 20:52:33 -07:00
Koichi ITO
a1838e965a Add client-level connect handshake to stdio transport
## Motivation and Context

Follow-up to https://github.com/modelcontextprotocol/ruby-sdk/pull/336

mcp gem 0.15.0 introduced an explicit `MCP::Client#connect` method for the stdio transport,
aligning with the Python and TypeScript SDKs which require explicit handshake calls regardless
of transport type:

- Python SDK: `ClientSession.initialize()`
  https://github.com/modelcontextprotocol/python-sdk
- TypeScript SDK: `Client.connect(transport)`
  https://github.com/modelcontextprotocol/typescript-sdk

This sample is updated to call `@mcp_client.connect` explicitly after creating the client,
demonstrating the recommended initialization pattern. The Gemfile constraint is bumped to `>= 0.15.0`
to require the new API.

## How Has This Been Tested?

Ran the sample against `weather-server-ruby` and confirmed the connection, tool listing,
and chat loop continue to work as expected.

## Breaking Changes

None. The change updates the sample to use the new explicit `connect` API,
which was added as a non-breaking addition in mcp gem 0.15.0.
2026-05-06 09:27:15 +09:00
Koichi ITO
ded91068d0 Add Ruby MCP client example
## Motivation and Context

Add an LLM-powered chatbot MCP client example using the MCP Ruby SDK and the Anthropic Ruby SDK,
following the same pattern as other language examples.
https://github.com/modelcontextprotocol/ruby-sdk

The Gemfile specifies mcp version 0.9.1 or higher, which supports the stdio client.
https://github.com/modelcontextprotocol/ruby-sdk/releases/tag/v0.9.1

## Additional context

Once https://github.com/anthropics/anthropic-sdk-ruby/pull/161 is merged and released,
`gem "base64"` will no longer be needed in the Gemfile.
2026-03-23 22:45:16 +09:00