RubyLLM::MCP v1.0.0 🎉 (from v0.8.0)
v1.0.0 is a major milestone for RubyLLM::MCP. This release moves the project from rapid foundation work to a much more stable, protocol-aligned, production-ready baseline. This includes stability in the APIs we will offer going forward.
We support all the foundational components needs to offer a great MCP experience, from tools to auth and everything in between. Making it easy as possible for Rubiest to offer different connectivity options to their applications and/or agents! 🥳
What changed since v0.8
- MCP ecosystem support expanded: Moved to an adapter pattern to be able to offer the official MCP gem as a protocol backend
- Native MCP Adatper: pushs ahead, support for MCP 2025-11-25 updates including tasks and schema changes.
- MCP Extensions and MCP Apps: Support for the newest MCP protcol draft comes with it Extension support. Including an implementation of MCP Apps. Which we have an app example for in the projects /examples folder.
- OAuth is much more robust: fixes for Rails linking, challenge handling with automatic retry, browser cleanup, RFC 6749 token error alignment, protected-resource discovery fixes (including GitHub Copilot MCP), legacy path-based discovery fallback, normalized bearer token headers, and JRuby race-condition fixes in OAuth/auth storage flows.
- Transports and lifecycle handling were hardened: improved transport reliability, better termination/status alignment, disabled repeated SSE fallback on 405, handled 201 in StreamableHTTP, and fixed inline SSE POST timeout behavior (Notion case).
- Protocol and client behavior matured: RPC message refactor, JSON-RPC error code alignment, full cancellation notification support, correct stop-response handling, and a cleaner client response-handler interaction pattern.
- Support for JRuby: While we didn't explicit not support JRuby in the past, we have added into our CI to catch any future regressions.
- Docs and DX received a major refresh: rewritten README/docs index, updated examples and issue templates, plus branding updates for dark mode and new doc accent styling.
What's Next
This project is committed to bringing MCP feature setup to Ruby and as up to date as possible against the MCP protocol. We also want to offer great experiences and will seamlessly fit into the RubyLLM DSL. Developer will continue as the protocol expands but our foundation is set.
Thanks
Special thanks to new contributors @trevorturk and @plehoux for important fixes included in this release. On top of that I would like to everyone everyone else that has open an issue and/or created a pull request to get us to this point! 💪