<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ruby on Model Context Protocol Blog</title><link>https://blog.modelcontextprotocol.io/tags/ruby/</link><description>Recent content in Ruby on Model Context Protocol Blog</description><image><title>Model Context Protocol Blog</title><url>https://blog.modelcontextprotocol.io/og-image.png</url><link>https://blog.modelcontextprotocol.io/og-image.png</link></image><generator>Hugo -- 0.148.0</generator><language>en-us</language><copyright>Copyright © Model Context Protocol a Series of LF Projects, LLC.
For web site terms of use, trademark policy and other project policies please see https://lfprojects.org.</copyright><lastBuildDate>Sat, 25 Jul 2026 14:36:43 +0900</lastBuildDate><atom:link href="https://blog.modelcontextprotocol.io/tags/ruby/index.xml" rel="self" type="application/rss+xml"/><item><title>The Official Ruby SDK for MCP Reaches 1.0</title><link>https://blog.modelcontextprotocol.io/posts/ruby-sdk-1-0/</link><pubDate>Mon, 27 Jul 2026 09:00:00 +0000</pubDate><guid>https://blog.modelcontextprotocol.io/posts/ruby-sdk-1-0/</guid><description>The official Ruby SDK for the Model Context Protocol has reached version 1.0 with a stable public API and a 100% conformance pass rate. The SDK now meets every Tier 2 requirement of the MCP SDK tiering system, and development toward Tier 1 continues.</description><content:encoded><![CDATA[<p><a href="https://github.com/modelcontextprotocol/ruby-sdk/releases/tag/v1.0.0">Version 1.0.0</a> of the official <a href="https://github.com/modelcontextprotocol/ruby-sdk">Ruby SDK</a> for the Model Context Protocol is now available. This is the first stable release of the <a href="https://rubygems.org/gems/mcp"><code>mcp</code> gem</a>: the public API is now stable, and breaking changes ship only in major releases, following the Semantic Versioning policy documented in <a href="https://github.com/modelcontextprotocol/ruby-sdk/blob/main/VERSIONING.md">VERSIONING.md</a>.</p>
<p>Alongside the release, the Ruby SDK now meets every Tier 2 requirement of the <a href="https://modelcontextprotocol.io/community/sdk-tiers">SDK tiering system</a>, as recorded in the <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/issues/3127">Tier 2 assessment</a>, and development toward Tier 1 is ongoing.</p>
<h2 id="what-is-in-10">What is in 1.0</h2>
<p>The 1.0 release implements the 2025-06-18 and 2025-11-25 specification revisions and passes 100% of the server and client conformance scenarios. It includes:</p>
<ul>
<li>MCP servers with tools, prompts, resources (including templates and subscriptions), completions, logging, pagination, progress, and cancellation, plus server-to-client requests for sampling, elicitation (form and URL mode), and roots</li>
<li>An MCP client with a complete OAuth flow, including dynamic client registration, PKCE, and scope handling</li>
<li>stdio and Streamable HTTP transports; the HTTP transport is a standard Rack app, so it can be mounted directly in Rails routes or any Rack-compatible framework</li>
</ul>
<h2 id="from-tier-3-to-tier-2">From Tier 3 to Tier 2</h2>
<p>The Ruby SDK was assessed at <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/issues/2340">Tier 3</a> in March 2026. Since then:</p>
<ul>
<li>Server conformance moved from 83.3% to 100%, with no baselined failures</li>
<li>A conformance client was implemented and passes 100% of client scenarios</li>
<li>Sampling, elicitation, and progress notifications were implemented on both the server and client sides</li>
<li><a href="https://github.com/modelcontextprotocol/ruby-sdk/blob/main/ROADMAP.md">ROADMAP.md</a> and <a href="https://github.com/modelcontextprotocol/ruby-sdk/blob/main/VERSIONING.md">VERSIONING.md</a> were published</li>
</ul>
<p>Work is also under way to support the upcoming <a href="/posts/sdk-betas-2026-07-28/">2026-07-28 specification release</a>.</p>
<h2 id="get-started">Get started</h2>
<p>Install the gem:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>$ gem install mcp
</span></span></code></pre></div><p>A minimal stdio server looks like this:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-ruby" data-lang="ruby"><span style="display:flex;"><span>require <span style="color:#e6db74">&#34;mcp&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">ExampleTool</span> <span style="color:#f92672">&lt;</span> <span style="color:#66d9ef">MCP</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Tool</span>
</span></span><span style="display:flex;"><span>  description <span style="color:#e6db74">&#34;A simple example tool that echoes back its arguments&#34;</span>
</span></span><span style="display:flex;"><span>  input_schema(
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">properties</span>: {
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">message</span>: { <span style="color:#e6db74">type</span>: <span style="color:#e6db74">&#34;string&#34;</span> },
</span></span><span style="display:flex;"><span>    },
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">required</span>: <span style="color:#f92672">[</span><span style="color:#e6db74">&#34;message&#34;</span><span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>  )
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">class</span> <span style="color:#f92672">&lt;&lt;</span> self
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">call</span>(<span style="color:#e6db74">message</span>:, <span style="color:#e6db74">server_context</span>:)
</span></span><span style="display:flex;"><span>      <span style="color:#66d9ef">MCP</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Tool</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Response</span><span style="color:#f92672">.</span>new(<span style="color:#f92672">[</span>{
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">type</span>: <span style="color:#e6db74">&#34;text&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">text</span>: <span style="color:#e6db74">&#34;Hello from example tool! Message: </span><span style="color:#e6db74">#{</span>message<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>,
</span></span><span style="display:flex;"><span>      }<span style="color:#f92672">]</span>)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">end</span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">end</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">end</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>server <span style="color:#f92672">=</span> <span style="color:#66d9ef">MCP</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Server</span><span style="color:#f92672">.</span>new(
</span></span><span style="display:flex;"><span>  name: <span style="color:#e6db74">&#34;example_server&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">tools</span>: <span style="color:#f92672">[</span><span style="color:#66d9ef">ExampleTool</span><span style="color:#f92672">]</span>,
</span></span><span style="display:flex;"><span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">MCP</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Server</span><span style="color:#f92672">::</span><span style="color:#66d9ef">Transports</span><span style="color:#f92672">::</span><span style="color:#66d9ef">StdioTransport</span><span style="color:#f92672">.</span>new(server)<span style="color:#f92672">.</span>open
</span></span></code></pre></div><p>See the <a href="https://ruby.sdk.modelcontextprotocol.io">Ruby SDK documentation</a> for guides on building servers and clients, including Rails integration.</p>
<h2 id="give-us-your-feedback">Give us your feedback</h2>
<p>If you run into problems or unexpected behavior while using the SDK, please report them on the <a href="https://github.com/modelcontextprotocol/ruby-sdk/issues">issue tracker</a>. Reports from real-world usage are especially valuable.</p>
<p>The Ruby SDK began at <a href="https://www.shopify.com/">Shopify</a> and is maintained by <a href="https://github.com/topherbullock">Topher Bullock</a>, <a href="https://github.com/koic">Koichi Ito</a>, <a href="https://github.com/atesgoral">Ateş Göral</a>, and <a href="https://github.com/jonathanhefner">Jonathan Hefner</a> together with the wider Ruby community. Thank you to everyone for the feedback and contributions on the road to 1.0.</p>
]]></content:encoded></item></channel></rss>