<?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>Announcement on Model Context Protocol Blog</title><link>https://blog.modelcontextprotocol.io/tags/announcement/</link><description>Recent content in Announcement 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/announcement/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><item><title>Beta SDKs for the 2026-07-28 MCP Spec Release Candidate Are Here</title><link>https://blog.modelcontextprotocol.io/posts/sdk-betas-2026-07-28/</link><pubDate>Mon, 29 Jun 2026 09:00:00 +0000</pubDate><guid>https://blog.modelcontextprotocol.io/posts/sdk-betas-2026-07-28/</guid><description>Beta releases of the Python, TypeScript, Go, and C# SDKs are now available with support for the 2026-07-28 MCP specification release candidate. Here is what changes for your server, how to migrate, and how to test before the spec goes final on July 28.</description><content:encoded><![CDATA[<p>The MCP protocol is about to undergo its biggest revision since launch. As you might&rsquo;ve seen
from <a href="/posts/2026-07-28-release-candidate/">our recent release candidate announcement</a>, the new
protocol revision goes stateless, removing the <code>initialize</code> handshake and the protocol-level
session, and completing the plan we laid out in
<a href="/posts/2025-12-19-mcp-transport-future/">The Future of MCP Transports</a>. If you&rsquo;re building MCP
servers, you can now scale them using a simple round-robin load balancer, removing the need to
manage sticky sessions and to store shared sessions. For client developers, new patterns, like
<a href="https://modelcontextprotocol.io/specification/draft/basic/patterns/mrtr">Multi Round-Trip Requests (MRTR)</a>
enable a whole new range of possibilities for server-to-client interactions. You can check out
the <a href="https://modelcontextprotocol.io/specification/draft/changelog">full changelog</a> to see
what&rsquo;s coming.</p>
<p>Starting today you can test all the forthcoming updates to the protocol with all four
<a href="https://modelcontextprotocol.io/community/sdk-tiers">Tier 1</a> SDKs, led by
<a href="https://github.com/modelcontextprotocol/python-sdk">Python</a> v2 and
<a href="https://github.com/modelcontextprotocol/typescript-sdk">TypeScript</a> v2, with
<a href="https://github.com/modelcontextprotocol/go-sdk">Go</a> and
<a href="https://github.com/modelcontextprotocol/csharp-sdk">C#</a> betas also available. We encourage you
to run the beta SDKs against your real workloads and tell us what breaks as we inch closer to
the actual spec revision. The new protocol specification will be launched on July 28, 2026.</p>
<p><img alt="Three-layer stack: the MCP specification at the base, SDKs (Python, TypeScript, Go, C#, and more) in the middle, and clients and servers built on top." loading="lazy" src="/posts/images/sdk-betas/stack.svg"></p>
<h2 id="your-existing-server-keeps-working">Your existing server keeps working</h2>
<p>First, we want to reassure you that for existing clients and servers nothing breaks today,
and nothing breaks on July 28 either. This is merely the date when the normative specification
text is published and is not a switch-off for any implementers relying on the current protocol
version.</p>
<p>The SDK beta releases exist so you can test the protocol changes and give us feedback
before the new specification is locked. For any critical workloads, the stable SDK releases
remain the recommended versions.</p>
<p>You might&rsquo;ve seen that some of the SDKs, like Python and TypeScript, have also switched to v2.
Those are new major versions, so moving your own code onto them is a breaking change, and one
you can take on your own schedule; it is separate from anything that happens on July 28.
Once v2 ships, the TypeScript SDK will continue shipping v1.x bug fixes and security updates
for at least six months, and the Python v1.x branch continues to receive critical bug fixes and
security patches.</p>
<p>Trying a beta is safe because it is opt-in at every step. Installing the
Python, Go, or C# SDK without explicitly requesting a pre-release still resolves to
a stable version; the TypeScript v2 packages are new package names with no
stable release yet, so installing them is itself the opt-in. In the TypeScript and Go
SDKs, the opt-in extends to the wire: upgrading does not by itself change what your server speaks over
HTTP. Serving <code>2026-07-28</code> is an explicit choice you make when you wire up
the transport. A Python or C# server picks up the new revision on upgrade
instead: a Python v2 server answers both protocol revisions from one
endpoint, and the C# preview&rsquo;s HTTP transport defaults to the new stateless
mode. And clients that speak <code>2026-07-28</code> fall back to the
<code>initialize</code> handshake when they reach a server on <code>2025-11-25</code> or earlier,
so old servers and new clients keep interoperating.</p>
<p>If you want to make sure your own users are not caught out:</p>
<ul>
<li>If you publish a library that depends on the Python <code>mcp</code> package, add an
upper bound now (for example <code>mcp&gt;=1.27,&lt;2</code>) so the stable v2 release does
not surprise your users.</li>
<li>When you test a beta, pin the exact version. Public APIs may still change
between the beta and the stable releases.</li>
</ul>
<h2 id="what-beta-sdks-implement">What beta SDKs implement</h2>
<p>All four beta releases implement the core protocol changes from the release candidate,
with each release&rsquo;s notes detailing which changes are covered. The
<a href="/posts/2026-07-28-release-candidate/">RC announcement</a> covers the changes
in depth, but if you&rsquo;re curious about the short version:</p>
<ul>
<li><strong>The stateless core</strong>
(<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2575">SEP-2575</a>,
<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2567">SEP-2567</a>).
Every request is self-describing, capabilities come from
<code>server/discover</code>, and any server instance can handle any request.</li>
<li><strong>Multi Round-Trip Requests (MRTR)</strong>
(<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2322">SEP-2322</a>).
Tools can return <code>InputRequiredResult</code> to ask the user something
mid-call, and the client retries with the answers. No long-lived stream
required!</li>
<li><strong>Routable transport headers</strong>
(<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2243">SEP-2243</a>).
<code>Mcp-Method</code> rides on every request, and <code>Mcp-Name</code> on requests that name
a tool, resource, or prompt, so gateways and rate limiters can route
without parsing bodies.</li>
<li><strong>Authorization hardening</strong>, including <code>iss</code> validation per
<a href="https://www.rfc-editor.org/rfc/rfc9207">RFC 9207</a>
(<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2468">SEP-2468</a>),
<code>application_type</code> in Dynamic Client Registration
(<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/837">SEP-837</a>),
scope accumulation on step-up
(<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2350">SEP-2350</a>),
and credential binding to the issuing authorization server
(<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2352">SEP-2352</a>).
The <code>application_type</code> change is the one desktop and CLI clients will
feel: authorization servers stop defaulting them to <code>&quot;web&quot;</code> and
rejecting their <code>localhost</code> redirects.</li>
<li><strong>Standard error codes</strong>
(<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2164">SEP-2164</a>).
A missing resource now returns JSON-RPC <code>-32602</code> instead of the
MCP-custom <code>-32002</code>. If your client matches on the literal value, you should update
it.</li>
<li><strong>Deprecation annotations</strong>
(<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577">SEP-2577</a>)
on roots, sampling, and logging. This is advisory only, as the deprecated methods,
types, and capability flags keep working in this release and in every
specification version published within a year of it.</li>
</ul>
<p>The full protocol text is in the
<a href="https://modelcontextprotocol.io/specification/draft">draft specification</a>,
and the
<a href="https://modelcontextprotocol.io/specification/draft/changelog">changelog</a>
lists every change against <code>2025-11-25</code>.</p>
<h2 id="python-mcp-v2">Python: <code>mcp</code> v2</h2>
<p>The v2 line is a rework of the package you already know: <code>FastMCP</code> becomes
<code>MCPServer</code>, and the decorator API carries over. A complete server still
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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> mcp.server <span style="color:#f92672">import</span> MCPServer
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>mcp <span style="color:#f92672">=</span> MCPServer(<span style="color:#e6db74">&#34;Demo&#34;</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:#a6e22e">@mcp.tool</span>()
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">add</span>(a: int, b: int) <span style="color:#f92672">-&gt;</span> int:
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;&#34;&#34;Add two numbers.&#34;&#34;&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> a <span style="color:#f92672">+</span> b
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">@mcp.resource</span>(<span style="color:#e6db74">&#34;greeting://</span><span style="color:#e6db74">{name}</span><span style="color:#e6db74">&#34;</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">greeting</span>(name: str) <span style="color:#f92672">-&gt;</span> str:
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;&#34;&#34;Greet someone by name.&#34;&#34;&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Hello, </span><span style="color:#e6db74">{</span>name<span style="color:#e6db74">}</span><span style="color:#e6db74">!&#34;</span>
</span></span></code></pre></div><p>As in v1, there is no JSON Schema to write, as idiomatic Python constructs take over.
Install the beta with an exact pin, since unpinned installs stay on v1.x:</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-bash" data-lang="bash"><span style="display:flex;"><span>uv add <span style="color:#e6db74">&#34;mcp[cli]==2.0.0b1&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># or</span>
</span></span><span style="display:flex;"><span>pip install <span style="color:#e6db74">&#34;mcp[cli]==2.0.0b1&#34;</span>
</span></span></code></pre></div><p>If you have a v1 server today, the
<a href="https://py.sdk.modelcontextprotocol.io/v2/migration/">migration guide</a>
walks through every breaking change.</p>
<p>On the protocol side, the beta speaks <code>2026-07-28</code> end to end: servers
answer the new <code>server/discover</code> method, and the client&rsquo;s default mode
probes it and falls back to <code>initialize</code> on older servers. Upgrading your
server does not strand existing clients: a v2 server answers the legacy
<code>initialize</code> handshake alongside <code>server/discover</code>, so clients on
<code>2025-11-25</code> keep connecting. You can test all
of it in-process: pass your <code>MCPServer</code> instance directly to <code>Client</code>
(<code>async with Client(mcp) as client:</code>) and it connects in memory, the same
pattern as FastAPI&rsquo;s <code>TestClient</code>. No subprocess, no port. The
<a href="https://py.sdk.modelcontextprotocol.io/v2/">SDK documentation</a> has the tutorial and the full
API reference.</p>
<h2 id="typescript-split-packages">TypeScript: split packages</h2>
<p>TypeScript v2 retires the monolithic <code>@modelcontextprotocol/sdk</code> package in
favor of focused ones, like <code>@modelcontextprotocol/server</code> for servers,
<code>@modelcontextprotocol/client</code> for clients, plus thin adapters for Node.js,
Express, Hono, and Fastify. It is ESM-only and runs on Node.js 20+, Bun, and
Deno. Tool schemas now use
<a href="https://standardschema.dev/">Standard Schema</a>, so you can bring Zod v4,
Valibot, ArkType, or any compatible library.</p>
<p>You can bootstrap a minimal server 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-typescript" data-lang="typescript"><span style="display:flex;"><span><span style="color:#66d9ef">import</span> { <span style="color:#a6e22e">McpServer</span> } <span style="color:#66d9ef">from</span> <span style="color:#e6db74">&#34;@modelcontextprotocol/server&#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">import</span> { <span style="color:#a6e22e">StdioServerTransport</span> } <span style="color:#66d9ef">from</span> <span style="color:#e6db74">&#34;@modelcontextprotocol/server/stdio&#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">import</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">as</span> <span style="color:#a6e22e">z</span> <span style="color:#66d9ef">from</span> <span style="color:#e6db74">&#34;zod/v4&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">const</span> <span style="color:#a6e22e">server</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">McpServer</span>({ <span style="color:#a6e22e">name</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;greeting-server&#34;</span>, <span style="color:#a6e22e">version</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;1.0.0&#34;</span> });
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">server</span>.<span style="color:#a6e22e">registerTool</span>(
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;greet&#34;</span>,
</span></span><span style="display:flex;"><span>  {
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">description</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;Greet someone by name&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">inputSchema</span>: <span style="color:#66d9ef">z.object</span>({ <span style="color:#a6e22e">name</span>: <span style="color:#66d9ef">z.string</span>() }),
</span></span><span style="display:flex;"><span>  },
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">async</span> ({ <span style="color:#a6e22e">name</span> }) <span style="color:#f92672">=&gt;</span> ({
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">content</span><span style="color:#f92672">:</span> [{ <span style="color:#66d9ef">type</span><span style="color:#f92672">:</span> <span style="color:#e6db74">&#34;text&#34;</span>, <span style="color:#a6e22e">text</span><span style="color:#f92672">:</span> <span style="color:#e6db74">`Hello, </span><span style="color:#e6db74">${</span><span style="color:#a6e22e">name</span><span style="color:#e6db74">}</span><span style="color:#e6db74">!`</span> }],
</span></span><span style="display:flex;"><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">async</span> <span style="color:#66d9ef">function</span> <span style="color:#a6e22e">main() {</span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">const</span> <span style="color:#a6e22e">transport</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">StdioServerTransport</span>();
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">await</span> <span style="color:#a6e22e">server</span>.<span style="color:#a6e22e">connect</span>(<span style="color:#a6e22e">transport</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:#a6e22e">main</span>();
</span></span></code></pre></div><p>To install any of the packages, you can use the now-familiar <code>npm</code> commands:</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-bash" data-lang="bash"><span style="display:flex;"><span>npm install @modelcontextprotocol/server@beta
</span></span><span style="display:flex;"><span>npm install @modelcontextprotocol/client@beta
</span></span></code></pre></div><p>For HTTP deployments, which is where the stateless protocol pays off, <code>createMcpHandler</code> from
<code>@modelcontextprotocol/server</code> is the entry point. It serves <code>2026-07-28</code>
per request and handles <code>2025-11-25</code> traffic from the same endpoint, with
the adapter packages connecting it to Node.js, Express, Hono, and Fastify.</p>
<p>Migrating from v1 is mostly mechanical, and there is a codemod that does the boring parts
for you, including the rename from <code>.tool()</code> to
<code>registerTool</code> and the error-type renames. You can get it with:</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-bash" data-lang="bash"><span style="display:flex;"><span>npx @modelcontextprotocol/codemod@beta v1-to-v2 .
</span></span></code></pre></div><p>The repository ships two guides that will help you along the way:</p>
<ul>
<li><a href="https://github.com/modelcontextprotocol/typescript-sdk/blob/main/docs/migration/upgrade-to-v2.md">Upgrading from v1 to v2</a></li>
<li><a href="https://github.com/modelcontextprotocol/typescript-sdk/blob/main/docs/migration/support-2026-07-28.md">Adopting the 2026-07-28 revision</a></li>
</ul>
<p>While it might seem confusing, these two are standalone steps - you can move to v2
now and turn on the new protocol revision when you are ready. The
<a href="https://ts.sdk.modelcontextprotocol.io/v2/">v2 API documentation</a> covers
the rest.</p>
<h2 id="go-and-c">Go and C#</h2>
<p>The Go and C# betas take a slightly gentler path - there is no package split and no rework of
the API you use day to day.</p>
<p>The Go SDK ships <code>2026-07-28</code> support in <code>v1.7.0-pre.1</code>, on the same
module path as the version you are already using:</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-bash" data-lang="bash"><span style="display:flex;"><span>go get github.com/modelcontextprotocol/go-sdk@v1.7.0-pre.1
</span></span></code></pre></div><p>Serving the new revision over HTTP is the same explicit choice as in
TypeScript: the streamable HTTP transport accepts <code>2026-07-28</code> only when
you set <code>StreamableHTTPOptions.Stateless = true</code>. Leave it unset and
clients negotiate down to <code>2025-11-25</code>. The
<a href="https://github.com/modelcontextprotocol/go-sdk/releases/tag/v1.7.0-pre.1">release notes</a>
walk through every protocol change and the
<a href="https://go.sdk.modelcontextprotocol.io">SDK documentation</a> will cover the updated
API.</p>
<p>The C# beta, in turn, is released as the <code>2.0.0-preview.1</code> version of the
<code>ModelContextProtocol</code> packages:</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-bash" data-lang="bash"><span style="display:flex;"><span>dotnet add package ModelContextProtocol --prerelease
</span></span></code></pre></div><p>Stable v1.x APIs keep working in v2. The breaking changes are confined to
the capabilities the specification deprecates (roots, sampling, and
logging), which are marked <code>[Obsolete]</code> with pointers to their
replacements, and to experimental APIs whose contracts changed as the
specification settled. The
<a href="https://github.com/modelcontextprotocol/csharp-sdk/releases/tag/v2.0.0-preview.1">preview release notes</a>
include a per-SEP implementation table, and the
<a href="https://csharp.sdk.modelcontextprotocol.io">SDK documentation</a> will have the updated
API reference once the package is stable.</p>
<h2 id="give-us-your-feedback">Give us your feedback</h2>
<p>We&rsquo;re a mere four weeks away until the specification is final. We need your help to make the
release smoother!</p>
<ol>
<li>
<p>Install a beta in a branch of your server and run your real traffic
against it, not just the happy path.</p>
</li>
<li>
<p>If you operate behind a gateway or load balancer, serve the stateless
path and see whether your routing still needs anything the protocol no
longer provides. In TypeScript that path is <code>createMcpHandler</code>; in Go,
set <code>StreamableHTTPOptions.Stateless = true</code>; in Python, the v2 HTTP
app answers both protocol revisions from one endpoint.</p>
</li>
<li>
<p>File what you find. SDK problems go to the issue tracker for the SDK
you are using:</p>
<ul>
<li><a href="https://github.com/modelcontextprotocol/python-sdk/issues">Python</a></li>
<li><a href="https://github.com/modelcontextprotocol/typescript-sdk/issues">TypeScript</a></li>
<li><a href="https://github.com/modelcontextprotocol/go-sdk/issues">Go</a></li>
<li><a href="https://github.com/modelcontextprotocol/csharp-sdk/issues">C#</a></li>
</ul>
<p>And if you spot issues with the protocol itself, go to the
<a href="https://github.com/modelcontextprotocol/modelcontextprotocol/issues">specification repository</a>.</p>
</li>
</ol>
<p>It&rsquo;s worth noting that public APIs may still change between the betas and the stable releases, so
pin exact versions. Your feedback in the next four weeks is what they will be
built from. And if you have other feedback or want to engage with SDK maintainers, join our
<a href="https://modelcontextprotocol.io/community/communication#discord">contributor Discord</a>.</p>
<p>We&rsquo;re excited to see what you build!</p>
]]></content:encoded></item><item><title>Understanding MCP Extensions</title><link>https://blog.modelcontextprotocol.io/posts/2026-03-11-understanding-mcp-extensions/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>https://blog.modelcontextprotocol.io/posts/2026-03-11-understanding-mcp-extensions/</guid><description>A practical guide to MCP extensions: how they layer new capabilities on top of the core protocol, and patterns the community is already using.</description><content:encoded><![CDATA[<p>You&rsquo;ve built an MCP server that works quite well, but now you&rsquo;re wondering: <em>How do I add richer UI elements? Custom auth flows? What about domain-specific conventions, like those for finance or healthcare?</em></p>
<p>This is where <em>extensions</em> come in. They let developers layer new capabilities on top of the baseline MCP implementation without touching the core protocol. This allows us to keep things stable while also opening up room to experiment, learn, and build with the community&rsquo;s needs in mind.</p>
<p>In this post, we&rsquo;ll walk through how extensions fit into the MCP ecosystem and share some patterns the community is already exploring. Think of this less as a formal specification change and more as a short practical guide to extending MCP.</p>
<h2 id="how-mcp-is-structured">How MCP is structured</h2>
<p>It helps to think of MCP in three layers:</p>
<ul>
<li><strong>MCP core specification:</strong> <a href="https://modelcontextprotocol.io/specification/latest">The protocol itself</a>. This is how clients and servers talk to each other. It also represents the absolute minimum bar for client and server interoperability.</li>
<li><strong>MCP projects:</strong> Supporting infrastructure like the <a href="https://registry.modelcontextprotocol.io/">Registry</a>, that helps developers discover MCP servers, or <a href="https://modelcontextprotocol.io/docs/tools/inspector">Inspector</a>, that makes MCP server testing and debugging easier.</li>
<li><strong>MCP extensions:</strong> Optional patterns that developers can adopt for specialized use cases, built on top of the MCP core specification.</li>
</ul>
<p>Extensions let the ecosystem grow and give us an avenue to test changes and emerging spec components without destabilizing the core protocol that lots of production clients and servers already depend on.</p>
<p>The <a href="https://modelcontextprotocol.io/extensions/overview">Extensions documentation</a> covers the full details — including extension identifiers, capability negotiation during the initialization handshake, and the SEP (Specification Enhancement Proposal) process for proposing new ones.</p>
<p>Here&rsquo;s where it gets interesting. Extensions are <strong>patterns built on existing MCP mechanisms</strong>, and they&rsquo;re strictly additive: a client or server that doesn&rsquo;t recognize an extension simply skips it during negotiation, and the baseline protocol keeps working. Nothing breaks when one side hasn&rsquo;t opted in.</p>
<p>In practice, a few of these patterns have already emerged — some now formalized as official extensions, others still exploratory:</p>
<ul>
<li><strong>UI extensions:</strong> Imagine a server that returns not just data, but an interactive interface for working with it — a chart you can filter, a form you can submit, a dashboard you can drill into. That&rsquo;s what <a href="https://modelcontextprotocol.io/extensions/apps/overview">MCP Apps</a> enables. It&rsquo;s the first official MCP extension and <a href="https://blog.modelcontextprotocol.io/posts/2026-01-26-mcp-apps/">went GA in January 2026</a>, with support already live in ChatGPT, Claude, VS Code, Goose, and <a href="https://modelcontextprotocol.io/extensions/client-matrix">more</a>.</li>
<li><strong>Authorization extensions:</strong> Need machine-to-machine auth without a user in the loop, or centralized enterprise IdP control? The <a href="https://modelcontextprotocol.io/extensions/auth/overview">auth extensions</a> layer these on top of MCP&rsquo;s core OAuth framework — OAuth Client Credentials and Enterprise-Managed Authorization are both live today.</li>
<li><strong>Domain-specific extensions:</strong> Community groups are already exploring conventions for verticals like financial services, where developers might want standardized ways to handle compliance metadata.</li>
</ul>
<p>Another important side-effect to this approach is that MCP client and server developers get richer functionality without having to wait for protocol changes, which might need more extensive validation before being merged into the core.</p>
<p>Extensions are also <em>the way</em> to validate future protocol changes - if a particular implementation gains traction, that signals that there is a growing community need in protocol functionality that could become a part of the specification.</p>
<h3 id="how-extensions-are-governed">How extensions are governed</h3>
<p>Extensions are community-driven, and <strong>all of them are optional</strong>. Developers adopt what makes sense for their use case.</p>
<p>At the same time, we encourage implementing official and recommended extensions when possible. It helps the whole ecosystem work better together. Official extensions typically start as conversations between MCP contributors, both on the core team and in the broader community, before graduating to the <a href="https://github.com/modelcontextprotocol">Model Context Protocol GitHub organization</a> where they&rsquo;re maintained collaboratively, following the <a href="https://modelcontextprotocol.io/seps/2133-extensions">Extensions Track SEP process</a>.</p>
<p>Beyond officially-supported extensions, community members and working groups are also free to define their own extensions for any custom needs.</p>
<h3 id="a-note-on-proprietary-integrations">A note on proprietary integrations</h3>
<p>Some MCP clients ship their own proprietary features, like custom UI systems, that happen to use MCP under the hood. These are <strong>not necessarily</strong> considered MCP extensions. They integrate with MCP servers but they don&rsquo;t define how MCP itself behaves at the protocol level. We will work with client and server implementers to help them adopt extensions as the de-facto way to implement custom behaviors.</p>
<h2 id="get-started">Get started</h2>
<p>If you&rsquo;re building on MCP and want to explore extensions:</p>
<ul>
<li><strong>Read the docs:</strong> The <a href="https://modelcontextprotocol.io/extensions/overview">Extensions overview</a> covers identifiers, negotiation, governance, and the full list of official extensions.</li>
<li><strong>Build an MCP App:</strong> Follow the <a href="https://modelcontextprotocol.io/extensions/apps/build">MCP Apps quickstart</a> to ship an interactive UI that works across supporting clients today.</li>
<li><strong>Check client support:</strong> See the <a href="https://modelcontextprotocol.io/extensions/client-matrix">Extension Support Matrix</a> for which clients already implement which extensions.</li>
<li><strong>Propose your own:</strong> If you have an idea for a new extension, the <a href="https://modelcontextprotocol.io/community/sep-guidelines">SEP guidelines</a> walk you through opening an Extensions Track SEP.</li>
</ul>
<h2 id="thank-you">Thank you</h2>
<p>This post wouldn&rsquo;t exist without the <a href="https://modelcontextprotocol.io/community/communication">MCP community</a>. The ideas here grew out of countless conversations - working group calls, GitHub threads, extension proposals, and plenty of back-and-forth in <a href="https://modelcontextprotocol.io/community/communication#discord">Discord</a>.</p>
<p>To everyone who&rsquo;s contributed ideas, challenged our initial assumptions, and helped shape where this is all going: thank you.</p>
<p>We&rsquo;ll keep sharing updates here on the blog and in the <a href="https://github.com/modelcontextprotocol">public repos</a>. See you there.</p>
]]></content:encoded></item><item><title>MCP joins the Agentic AI Foundation</title><link>https://blog.modelcontextprotocol.io/posts/2025-12-09-mcp-joins-agentic-ai-foundation/</link><pubDate>Tue, 09 Dec 2025 09:00:00 +0000</pubDate><guid>https://blog.modelcontextprotocol.io/posts/2025-12-09-mcp-joins-agentic-ai-foundation/</guid><description>Anthropic is donating MCP to the newly formed Agentic AI Foundation under the Linux Foundation, ensuring vendor-neutral governance for the protocol&amp;#39;s future.</description><content:encoded><![CDATA[<p>Today marks a major milestone for the Model Context Protocol. Anthropic is donating MCP to the Agentic AI Foundation, a directed fund under the Linux Foundation. MCP will become a founding project of the newly created foundation.</p>
<p>In one year, MCP has become one of the fastest-growing and widely-adopted open-source projects in AI: Over 97 million monthly SDK downloads, 10,000 active servers and first-class client support across major AI platforms like ChatGPT, Claude, Cursor, Gemini, Microsoft Copilot, Visual Studio Code and many more.</p>
<p>Since its inception, we&rsquo;ve remained committed to ensuring MCP remains open and community-driven. This move formalizes that commitment—ensuring MCP&rsquo;s vendor-neutrality and long-term independence under the same neutral stewardship that supports Kubernetes, PyTorch, and Node.js. Anthropic&rsquo;s commitment to MCP is unchanged: we will continue to invest in its development, maintain core infrastructure, and actively participate in the community.</p>
<h2 id="the-agentic-ai-foundation">The Agentic AI Foundation</h2>
<p>MCP will be a founding project of the newly created Agentic AI Foundation (AAIF), a directed fund under the Linux Foundation, co-founded by Anthropic, Block and OpenAI, with support from Google, Microsoft, AWS, Cloudflare and Bloomberg to advance open-source innovation in agentic AI.</p>
<p>MCP joins two other founding projects: goose by Block and AGENTS.md by OpenAI as founding projects.</p>
<p>The AAIF Governing Board will make decisions regarding strategic investments, budget allocation, member recruitment, and approval of new projects, while individual projects, such as MCP, maintain full autonomy over their technical direction and day-to-day operations.</p>
<h2 id="mcps-maintainer-structure-stays-the-same">MCP&rsquo;s maintainer structure stays the same</h2>
<p>For MCP little changes. The governance model we introduced earlier this year continues as is. The people making decisions about the protocol are still the maintainers who have been stewarding it, guided by community input through our SEP process.</p>
<p>The Linux Foundation provides a neutral home and infrastructure that allows maintainers to operate independently, and will not dictate the technical direction of MCP.</p>
<h2 id="thank-you">Thank you</h2>
<p>To all who&rsquo;ve adopted and contributed to MCP so far, thank you. None of this would&rsquo;ve been possible without your contribution. From building servers to maintaining SDKs to filing issues to improving documentation to welcoming new visitors and everything in between, you&rsquo;ve made MCP what it is today.</p>
<p>Here&rsquo;s to MCP&rsquo;s next chapter under the Linux Foundation&rsquo;s stewardship.</p>
]]></content:encoded></item><item><title>SEPs Are Moving to Pull Requests</title><link>https://blog.modelcontextprotocol.io/posts/2025-11-28-sep-process-update/</link><pubDate>Fri, 28 Nov 2025 11:00:00 +0000</pubDate><guid>https://blog.modelcontextprotocol.io/posts/2025-11-28-sep-process-update/</guid><description>SEPs are moving from GitHub Issues to pull requests against the seps/ directory — why, and what changes for contributors.</description><content:encoded><![CDATA[<p>We&rsquo;re updating how Specification Enhancement Proposals (SEPs) are submitted and managed. Starting today, SEPs will be created as pull requests to the <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/tree/main/seps"><code>seps/</code> directory</a> instead of GitHub issues.</p>
<h2 id="why-the-change">Why the Change?</h2>
<p>When we <a href="https://blog.modelcontextprotocol.io/posts/2025-07-31-governance-for-mcp/">introduced SEPs in July</a>, we chose GitHub Issues as our starting point. Issues are familiar to developers, low-friction, and got us up and running quickly. But as more proposals have come through the process, we&rsquo;ve identified some key pain points:</p>
<p><strong>Scattered discussions.</strong> With issues, the proposal text lives in the issue body while implementation details often end up in a separate PR. This splits the conversation and makes it harder to follow the full history of a proposal. This also introduces two distinct numbers referencing the same SEP, making it harder to consistently track and manage changes.</p>
<p><strong>No version history.</strong> Issues don&rsquo;t have the same revision tracking that files in a repository do. When a SEP evolves through review, it&rsquo;s difficult to see what changed and when.</p>
<p>The new PR-based approach, inspired by <a href="https://peps.python.org/">Python&rsquo;s PEP process</a>, solves both problems.</p>
<h2 id="how-it-works">How It Works</h2>
<p>The new workflow will be familiar if you&rsquo;ve submitted pull requests on GitHub before:</p>
<ol>
<li>
<p><strong>Draft your SEP</strong> as a markdown file named <code>0000-your-feature.md</code> using the <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/seps/TEMPLATE.md">SEP template</a></p>
</li>
<li>
<p><strong>Create a pull request</strong> adding your SEP to the <code>seps/</code> directory</p>
</li>
<li>
<p><strong>Update the SEP number</strong> once your PR is created, rename the file using the PR number (e.g., PR #1850 becomes <code>1850-your-feature.md</code>) and push a new commit with the rename</p>
</li>
<li>
<p><strong>Find a sponsor</strong> from our <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/MAINTAINERS.md">maintainer list</a> to shepherd your proposal</p>
</li>
<li>
<p><strong>Iterate</strong> on feedback directly in the PR</p>
</li>
</ol>
<p>That&rsquo;s it. The PR number becomes the SEP number, discussion happens in one place, and git tracks every revision.</p>
<h2 id="what-about-status">What About Status?</h2>
<p>One notable change: <strong>sponsors are now responsible for updating SEP status</strong>. In addition to applying labels to the pull request, the sponsor is responsible for ensuring that the <code>Status</code> field is updated in the SEP markdown file. This keeps the canonical state of the proposal in the file itself, versioned alongside the content, while PR labels make it easy to filter and find SEPs by status.</p>
<p>Status transitions work the same as before: <code>Draft</code> to <code>In-Review</code> to <code>Accepted</code> to <code>Final</code>, with the sponsor managing each transition as the proposal progresses.</p>
<h2 id="getting-started">Getting Started</h2>
<p>Ready to propose a change to MCP? Here&rsquo;s what you need to know:</p>
<p><strong>For new SEPs:</strong></p>
<ul>
<li>Read the latest <a href="https://modelcontextprotocol.io/community/sep-guidelines">SEP Guidelines</a></li>
<li>Use the <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/seps/README.md#sep-file-structure">SEP template</a> to create your proposal</li>
<li>Browse existing SEPs in the <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/tree/main/seps"><code>seps/</code> directory</a> for examples</li>
<li>Follow the workflow described above</li>
</ul>
<p><strong>For existing SEPs:</strong>
If you have a SEP submitted as a GitHub issue, you can continue with your current workflow. We strongly encourage migrating to the new process for better version control and centralized discussion. To migrate:</p>
<ol>
<li>Create a markdown file using the SEP template, starting with <code>0000-your-feature.md</code></li>
<li>Copy and adapt your proposal content to fit the template structure</li>
<li>Submit a pull request to the <code>seps/</code> directory</li>
<li>Rename the file using your new PR number (e.g., PR #1900 becomes <code>1900-your-feature.md</code>)</li>
<li>Close the original issue with a link to the new PR</li>
</ol>
<p>The new PR gets a fresh SEP number and gives your proposal proper version control and centralized discussion. Any valuable context from the original issue discussion should be summarized in the new SEP or referenced via links.</p>
<p>As always, if you&rsquo;re unsure whether your idea warrants a SEP, start a conversation on <a href="https://modelcontextprotocol.io/community/communication#discord">Discord</a> or <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/discussions">GitHub Discussions</a>. We&rsquo;re happy to help you figure out the right path forward.</p>
<h2 id="thank-you">Thank You</h2>
<p>This change is a direct result of feedback from contributors who&rsquo;ve been through the SEP process. Your input helps us continuously improve how we build MCP together. Keep it coming.</p>
]]></content:encoded></item><item><title>Introducing the MCP Registry</title><link>https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/</link><pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate><guid>https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/</guid><description>Launching the MCP Registry in preview: an open catalog and API for discovering publicly available MCP servers.</description><content:encoded><![CDATA[<p>Today, we&rsquo;re launching the Model Context Protocol (MCP) Registry—an open catalog and API for publicly available MCP servers to improve discoverability and implementation. By standardizing how servers are distributed and discovered, we’re expanding their reach while making it easier for clients to get connected.</p>
<p>The MCP Registry is now available in preview. To get started:</p>
<ul>
<li><strong>Add your server</strong> by following our guide on <a href="https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/quickstart.mdx">Adding Servers to the MCP Registry</a> (for server maintainers)</li>
<li><strong>Access server data</strong> by following our guide on <a href="https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/registry-aggregators.mdx">Accessing MCP Registry Data</a> (for client maintainers)</li>
</ul>
<h1 id="single-source-of-truth-for-mcp-servers">Single source of truth for MCP servers</h1>
<p>In March 2025, we shared that we wanted to build a central registry for the MCP ecosystem. Today we are announcing that we’ve launched <a href="https://registry.modelcontextprotocol.io">https://registry.modelcontextprotocol.io</a> as the official MCP Registry. As part of the MCP project, the MCP Registry, as well as a parent <a href="https://github.com/modelcontextprotocol/registry/blob/main/docs/reference/api/official-registry-api.md">OpenAPI specification</a>, are open source—allowing everyone to build a compatible sub-registry.</p>
<p>Our goal is to standardize how servers are distributed and discovered, providing a primary source of truth that sub-registries can build upon. In turn, this will expand server reach and help clients find servers more easily across the MCP ecosystem.</p>
<h2 id="public-and-private-sub-registries">Public and private sub-registries</h2>
<p>In building a central registry, it was important to us not to take away from existing registries that the community and companies have built. The MCP Registry serves as a primary source of truth for publicly available MCP servers, and organizations can choose to <a href="https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/registry-aggregators.mdx">create sub-registries</a> based on custom criteria. For example:</p>
<p><strong>Public subregistries</strong> like opinionated “MCP marketplaces” associated with each MCP client are free to augment and enhance data they ingest from the upstream MCP Registry. Every MCP end-user persona will have different needs, and it is up to the MCP client marketplaces to properly serve their end-users in opinionated ways.</p>
<p><strong>Private subregistries</strong> will exist within enterprises that have strict privacy and security requirements, but the MCP Registry gives these enterprises a single upstream data source they can build upon. At a minimum, we aim to share API schemas with these private implementations so that associated SDKs and tooling can be shared across the ecosystem.</p>
<p>In both cases, the MCP Registry is the starting point – it’s the centralized location where MCP server maintainers publish and maintain their self-reported information for these downstream consumers to massage and deliver to their end-users.</p>
<h2 id="community-driven-mechanism-for-moderation">Community-driven mechanism for moderation</h2>
<p>The MCP Registry is an official MCP project maintained by the registry working group and permissively licensed. Community members can submit issues to flag servers that violate the MCP <a href="https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/moderation-policy.mdx">moderation guidelines</a>—such as those containing spam, malicious code, or impersonating legitimate services. Registry maintainers can then denylist these entries and retroactively remove them from public access.</p>
<h1 id="getting-started">Getting started</h1>
<p>To get started:</p>
<ul>
<li><strong>Add your server</strong> by following our guide on <a href="https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/quickstart.mdx">Adding Servers to the MCP Registry</a> (for server maintainers)</li>
<li><strong>Access server data</strong> by following our guide on <a href="https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/registry-aggregators.mdx">Accessing MCP Registry Data</a> (for client maintainers)</li>
</ul>
<p>This preview of the MCP Registry is meant to help us improve the user experience before general availability and does not provide data durability guarantees or other warranties. We advise MCP adopters to watch development closely as breaking changes may occur before the registry is made generally available.</p>
<p>As we continue to develop the registry, we encourage feedback and contributions on the <a href="https://github.com/modelcontextprotocol/registry">modelcontextprotocol/registry GitHub repository</a>: Discussion, Issues, and Pull Requests are all welcome.</p>
<h1 id="thanks-to-the-mcp-community">Thanks to the MCP community</h1>
<p>The MCP Registry has been a collaborative effort from the beginning and we are incredibly grateful for the enthusiasm and support from the broader developer community.</p>
<p>In February 2025, it began as a grassroots project when MCP creators <a href="https://github.com/dsp-ant">David Soria Parra</a> and <a href="https://github.com/jspahrsummers">Justin Spahr-Summers</a> asked the <a href="https://www.pulsemcp.com/">PulseMCP</a> and <a href="https://block.github.io/goose/">Goose</a> teams to help build a centralized community registry. Registry Maintainer <a href="https://github.com/tadasant">Tadas Antanavicius</a> from <a href="https://www.pulsemcp.com/">PulseMCP</a> spearheaded the initial effort in collaboration with <a href="https://github.com/alexhancock">Alex Hancock</a> from <a href="https://block.xyz/">Block</a>. They were soon joined by Registry Maintainer <a href="https://github.com/toby">Toby Padilla</a>, Head of MCP at <a href="https://github.com/">GitHub</a>, and more recently, <a href="https://github.com/domdomegg">Adam Jones</a> from <a href="https://www.anthropic.com/">Anthropic</a> joined as Registry Maintainer to drive the project towards the launch today. The <a href="https://github.com/modelcontextprotocol/registry/discussions/11">initial announcement</a> of the MCP Registry&rsquo;s development lists 16 contributing individuals from at least 9 different companies.</p>
<p>Many others made crucial contributions to bring this project to life: <a href="https://github.com/rdimitrov">Radoslav Dimitrov</a> from <a href="https://stacklok.com/">Stacklok</a>, <a href="https://github.com/sridharavinash">Avinash Sridhar</a> from <a href="https://github.com/">GitHub</a>, <a href="https://github.com/connor4312">Connor Peet</a> from <a href="https://code.visualstudio.com/">VS Code</a>, <a href="https://github.com/joelverhagen">Joel Verhagen</a> from <a href="https://www.nuget.org/">NuGet</a>, <a href="https://github.com/pree-dew">Preeti Dewani</a> from <a href="https://last9.io/">Last9</a>, <a href="https://github.com/Avish34">Avish Porwal</a> from <a href="https://www.microsoft.com/">Microsoft</a>, <a href="https://github.com/jonathanhefner">Jonathan Hefner</a>, and many Anthropic and GitHub employees that provided code reviews and development support. We are also grateful to everyone on the <a href="https://github.com/modelcontextprotocol/registry/graphs/contributors">Registry&rsquo;s contributors log</a> and those who participated in <a href="https://github.com/modelcontextprotocol/registry">discussions and issues</a>.</p>
<p>We deeply appreciate everyone investing in this foundational open source infrastructure. Together, we&rsquo;re helping developers and organizations worldwide to build more reliable, context-aware AI applications. On behalf of the MCP community, thank you.</p>
]]></content:encoded></item><item><title>Announcing the Official PHP SDK for MCP</title><link>https://blog.modelcontextprotocol.io/posts/2025-09-05-php-sdk/</link><pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate><guid>https://blog.modelcontextprotocol.io/posts/2025-09-05-php-sdk/</guid><description>The official PHP SDK for the Model Context Protocol is now generally available, built in collaboration with the PHP Foundation and Symfony.</description><content:encoded><![CDATA[<p>The official <a href="https://github.com/modelcontextprotocol/php-sdk">PHP SDK</a> for the Model Context Protocol is now generally available.</p>
<p>Built in collaboration with the <a href="https://thephp.foundation/">PHP Foundation</a> and <a href="https://symfony.com/">Symfony</a>, the PHP SDK handles protocol details, so developers don’t have to worry about low-level mechanics and can focus on building their applications.</p>
<p>The initial release enables PHP developers to build MCP <a href="https://modelcontextprotocol.io/docs/learn/server-concepts">servers</a>, exposing <a href="https://modelcontextprotocol.io/docs/learn/server-concepts#tools-ai-actions">tools</a>, <a href="https://modelcontextprotocol.io/docs/learn/server-concepts#prompts-interaction-templates">prompts</a>, and <a href="https://modelcontextprotocol.io/docs/learn/server-concepts#resources-context-data">resources</a> to AI applications. Support for PHP applications to act as MCP <a href="https://modelcontextprotocol.io/docs/learn/client-concepts">clients</a> will follow.</p>
<p>The PHP SDK now joins 9 other <a href="https://modelcontextprotocol.io/docs/sdk">officially supported language SDKs</a> in the MCP ecosystem, making it easier for developers everywhere to adopt MCP in their preferred language.</p>
<h2 id="get-involved">Get involved</h2>
<p>The PHP SDK is now open to the community to install, test, and contribute:</p>
<ul>
<li>SDK repo: <a href="https://github.com/modelcontextprotocol/php-sdk">modelcontextprotocol/php-sdk</a></li>
<li>Composer package: <a href="https://packagist.org/packages/mcp/sdk">mcp/sdk</a></li>
</ul>
<p>We welcome your feedback and contribution, including issues, documentation improvements, and pull requests. Framework-specific integrations and real-world examples are also particularly valuable.</p>
<h2 id="thanks-to-the-mcp-community">Thanks to the MCP community</h2>
<p>This release consolidates earlier community work into a single, trusted implementation. The SDK is maintained by the <a href="https://symfony.com/">Symfony</a> team, with <a href="https://github.com/CodeWithKyrian">Kyrian Obikwelu</a> joining as a maintainer based on his previous <a href="https://github.com/php-mcp">PHP-MCP</a> work. The <a href="https://thephp.foundation/">PHP Foundation</a> helped to coordinate the initiative with support from the members of MCP steering group.</p>
<p>Thank you to all involved in bringing PHP to the MCP ecosystem.</p>
]]></content:encoded></item><item><title>Building to Last: A New Governance Model for MCP</title><link>https://blog.modelcontextprotocol.io/posts/2025-07-31-governance-for-mcp/</link><pubDate>Thu, 31 Jul 2025 00:00:00 +0000</pubDate><guid>https://blog.modelcontextprotocol.io/posts/2025-07-31-governance-for-mcp/</guid><description>Introducing MCP&amp;#39;s formal governance model: Specification Enhancement Proposals (SEPs), a maintainer structure, and a community-driven process for evolving the protocol.</description><content:encoded><![CDATA[<p>Since its open source release in November of 2024, the Model Context Protocol project has grown faster than we could have ever imagined. That&rsquo;s a wonderful problem to have, but with growth come growing pains. Our existing processes, which worked well for a small team, have started to show their limits.</p>
<p>Today, we&rsquo;re taking a big step to ensure MCP can continue to grow and thrive. We&rsquo;re introducing a formal governance model designed to bring clarity to the development process while preserving the collaborative, open source spirit that has made MCP successful.</p>
<h2 id="specification-enhancement-proposals-seps">Specification Enhancement Proposals (SEPs)</h2>
<p>One of the first major changes we&rsquo;re introducing is <a href="https://modelcontextprotocol.io/community/sep-guidelines">Specification Enhancement Proposals</a> (SEPs). This will be the primary mechanism for anyone to propose changes to MCP. SEPs are inspired by other projects, like <a href="https://peps.python.org/">Python PEPs</a> or <a href="https://github.com/rust-lang/rfcs">Rust RFCs</a>. We aim to make the process for suggesting changes to Model Context Protocol as straightforward as possible:</p>
<ol>
<li>Following the <a href="https://modelcontextprotocol.io/community/sep-guidelines">SEP guidelines</a>, submit a proposal as <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/issues">a GitHub issue</a> to start the conversation.</li>
<li>Our maintainers and core maintainers regularly review proposals and tag SEPs for review and sponsorship. You can also reach out and collaborate with contributing folks on <a href="https://discord.gg/6CSzBmMkjX">Discord</a> or <a href="https://github.com/modelcontextprotocol/modelcontextprotocol">GitHub</a>. Refer to <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/MAINTAINERS.md"><code>MAINTAINERS.md</code></a> for a list of currently active maintainers and their focus areas.</li>
<li>Work with the sponsor and the MCP community to move your proposal through draft, review, and implementation stages.</li>
</ol>
<p>SEPs provide a clear, documented path for evolving the protocol, ensuring that every major change is well-vetted by the community.</p>
<h2 id="leadership-roles">Leadership Roles</h2>
<p>The new model also establishes three types of leadership roles, ensuring both focused ownership and broad community representation:</p>
<ul>
<li><strong>Maintainers</strong> manage specific components like SDKs, our documentation, and individual repositories.</li>
<li><strong>Core Maintainers</strong> guide the overall direction of the project and the evolution of the MCP specification.</li>
<li><strong>Lead Maintainers</strong> serve as the final decision-makers and ensure the project&rsquo;s long-term health.</li>
</ul>
<p>All maintainers form the <strong>MCP steering group</strong>. To ensure a structured and timely review of incoming proposals, our core and lead maintainers will meet bi-weekly to review submitted <a href="#specification-enhancement-proposals-seps">SEPs</a>. Meeting notes and decisions will always be public. For example the <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1061">notes from the core maintainer meeting on July 23rd, 2025</a>.</p>
<h2 id="get-involved">Get Involved</h2>
<p>We need your help to build the future of MCP, and everyone is welcome here. Whether you&rsquo;re a seasoned open source veteran or just curious about how to get started, there&rsquo;s a place for you in our community.</p>
<p>Many of our maintainers began with a single small contribution—sometimes just fixing a typo or asking a thoughtful question. Every journey starts somewhere, and we&rsquo;re excited to help you take your first step.</p>
<ul>
<li><strong>New Contributors</strong>: Unsure where to begin? Start by helping with documentation, fixing bugs, or building out examples. Every contribution matters, and we&rsquo;re here to support you. Check out issues tagged with <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22"><code>good first issue</code></a> - they&rsquo;re perfect for getting started, and you&rsquo;ll find friendly faces ready to help.</li>
<li><strong>SDK Developers</strong>: Have a favorite programming language? As MCP grows, we need your expertise to build and maintain the protocol SDKs. Your work could empower entire new communities to use MCP.</li>
<li><strong>Documentation Writers</strong>: Clear, comprehensive <a href="https://modelcontextprotocol.io/introduction">documentation</a> is what turns a good project into a great one. If you love explaining things or making guides, your contributions will help others succeed.</li>
<li><strong>Future Maintainers</strong>: We believe in growing our team from within. The path to becoming a maintainer starts with consistent, quality contributions and a commitment to the project&rsquo;s success. Imagine yourself guiding new contributors and shaping the future of MCP.</li>
</ul>
<p>No matter your background or experience, you belong here. Join our <a href="https://discord.gg/6CSzBmMkjX">Discord</a> to connect with other contributors, ask questions, and find mentorship. Whether you&rsquo;re fixing a typo or proposing a major change to the protocol, your voice is valued and your efforts make a difference.</p>
<p>For all the details, please see our full <a href="https://modelcontextprotocol.io/community/governance">governance documentation</a>.</p>
<h2 id="thank-you">Thank You</h2>
<p>None of this would be possible without the incredible community that has rallied around MCP. From the early adopters who believed in the vision, to the developers building MCP clients and servers, to the maintainers dedicating their time and expertise. Every contribution has been essential to making the Model Context Protocol the success it is today.</p>
<p>You&rsquo;ve helped us identify issues, improve documentation, build SDKs, create compelling examples, and push the boundaries of what&rsquo;s possible with platform integration. Your feedback, bug reports, feature requests, and code contributions have shaped MCP into something far better than we could have built alone.</p>
<p>As we embark on this next chapter with formal governance, we&rsquo;re more committed than ever to fostering the open, inclusive community that has made MCP thrive. Thank you for being part of this journey - we can&rsquo;t wait to see what we&rsquo;ll build together next.</p>
]]></content:encoded></item><item><title>The Model Context Protocol Blog</title><link>https://blog.modelcontextprotocol.io/posts/welcome-to-mcp-blog/</link><pubDate>Wed, 02 Jul 2025 11:46:28 +0100</pubDate><guid>https://blog.modelcontextprotocol.io/posts/welcome-to-mcp-blog/</guid><description>The official Model Context Protocol blog — updates, tutorials, and insights from maintainers and contributors.</description><content:encoded><![CDATA[<p>Welcome to the official Model Context Protocol (MCP) blog! This is where we&rsquo;ll share the latest updates, tutorials, best practices, and insights about MCP.</p>
<h2 id="about-mcp">About MCP</h2>
<p>The Model Context Protocol is an open standard that enables seamless integration between AI assistants and external data sources and tools. It provides a universal way for AI models to interact with local services, APIs, and data stores.</p>
<h2 id="get-involved">Get Involved</h2>
<p>We&rsquo;re excited to build this ecosystem together with you. Here&rsquo;s how you can participate:</p>
<ul>
<li>Check out the <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/tree/main/docs/specification">MCP specification</a></li>
<li>Join the discussion on <a href="https://github.com/modelcontextprotocol">GitHub</a></li>
</ul>
]]></content:encoded></item></channel></rss>