# ruby-sdk

> The official Ruby SDK for the Model Context Protocol.

- **URL**: https://www.freshcrate.ai/projects/ruby-sdk
- **Author**: modelcontextprotocol
- **Category**: RAG & Memory
- **Latest version**: `v0.18.0` (2026-05-30)
- **License**: NOASSERTION
- **Source**: https://github.com/modelcontextprotocol/ruby-sdk
- **Homepage**: https://rubygems.org/gems/mcp
- **Language**: Ruby
- **GitHub**: 783 stars, 107 forks
- **Registry**: github
- **Tags**: `ruby`

## Description

The official Ruby SDK for the Model Context Protocol.

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `v0.18.0` | 2026-05-30 | High | ### Added  - Support server-to-client `ping` per MCP specification (#358)  ### Changed  - Warn on implicit stdio initialization (#338) - Cache `Tool::Schema` validation to avoid re-validating identical schemas (#363)  ### Fixed  - Fix case-sensitive `Accept` header comparison (#359) |
| `v0.17.0` | 2026-05-20 | High | ### Added  - Add OAuth 2.1 client support for MCP authorization flow (#353)  ### Fixed  - Validate `MCP-Protocol-Version` header in `StreamableHTTPTransport` (#347) - Reject duplicate `initialize` requests (#350) - Reject non-Hash JSON-RPC bodies in `StreamableHTTPTransport` (#354) |
| `v0.16.0` | 2026-05-14 | High | ### Added  - Add opt-in tool output validation (#344)  ### Changed  - Advertise JSON Schema 2020-12 dialect on emitted tool schemas (#342)  ### Fixed  - Preserve client tool output schemas (#343) - Fix missing `output_schema` argument in `define_tool` API (#301) |
| `v0.15.0` | 2026-05-04 | High | ### Added  - Support `notifications/cancelled` per MCP specification (#332) - Add client-level `connect` for initialize handshake (#327) - Add client-level `connect` handshake to stdio transport (#336)  ### Changed  - Return tool argument validation failures as tool execution errors (#333)  ### Removed  - Remove obsolete `MCP::Transports` module (#331) |
| `v0.14.0` | 2026-04-24 | High | ## [0.14.0] - 2026-04-24  ### Added  - Support pagination per MCP specification (#320) - Support resource subscriptions per MCP specification (#313) - Add `roots/list` and `notifications/roots/list_changed` support (#315) - Support JSON response mode for `StreamableHTTPTransport` (#328) - Add HTTP client close for explicit session termination (#326) - Track `Mcp-Session-Id` and protocol version in HTTP client (#325) - Support `ping` client API per MCP specification (#324)  ### Fixed |
| `v0.13.0` | 2026-04-16 | High | ### Added  - Make `StreamableHTTPTransport` a Rack application (#263) - Support `elicitation/create` per MCP specification (#312) - Add `around_request` hook for request instrumentation (#309) - Add `_meta` field to resource, content, and result classes (#310)  ### Removed  - Remove `Server#create_sampling_message` direct call (#311) |
| `v0.12.0` | 2026-04-11 | High | ### Added  - Support customizing the Faraday client in `MCP::Client::HTTP` (#306)  ### Changed  - Auto-set `server.transport` in `Transport#initialize` (#305)  ### Fixed  - Validate Content-Type on POST requests (#304) |
| `v0.11.0` | 2026-04-07 | High | ### Added  - Support `sampling/createMessage` per MCP specification (#282) - Support `completion/complete` per MCP specification (#289)  ### Fixed  - Support POST response SSE streams for server-to-client messages (#294) - Return protocol errors for invalid arguments and server errors (#285) - Fix client methods silently swallowing JSON-RPC error responses (#281) - Close streams outside mutex in session cleanup (#291) |
| `v0.10.0` | 2026-03-30 | Medium | ### Added  - Session expiry controls for `StreamableHTTPTransport` via `session_idle_timeout:` option (#268)  ### Changed  - `ServerSession` for per-connection state (#275)  ### Removed  - Remove `Server#notify_progress` broadcast API (#276) - Remove undocumented handler override methods (#270)  ### Fixed  - Reject POST requests without session ID in stateful mode (#274) |
| `v0.9.2` | 2026-03-27 | Medium | ### Fixed  - Use accessor method in `server_context_with_meta` instead of ivar (#273) - Reject duplicate SSE connections with 409 to prevent stream hijacking |

## Citation

- HTML: https://www.freshcrate.ai/projects/ruby-sdk
- Markdown: https://www.freshcrate.ai/projects/ruby-sdk.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/ruby-sdk/deps

_Generated by freshcrate.ai. Indexes github releases for AI-agent ecosystem packages._
