<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Stack Observer]]></title><description><![CDATA[Stack Observer]]></description><link>https://stack.observer</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 01:22:40 GMT</lastBuildDate><atom:link href="https://stack.observer/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[MCP A La Carte]]></title><description><![CDATA[As I am getting more into working with AI agents through the use of AI powered environments. I set out this weekend to make an MCP server to help with local environment management but it ended with a mountain of research.
Building an MCP server
I res...]]></description><link>https://stack.observer/mcp-a-la-carte</link><guid isPermaLink="true">https://stack.observer/mcp-a-la-carte</guid><category><![CDATA[mcp]]></category><category><![CDATA[mcp server]]></category><category><![CDATA[#ai-tools]]></category><category><![CDATA[AI]]></category><category><![CDATA[claude.ai]]></category><dc:creator><![CDATA[Chris Gute]]></dc:creator><pubDate>Thu, 19 Feb 2026 04:34:20 GMT</pubDate><content:encoded><![CDATA[<p>As I am getting more into working with AI agents through the use of AI powered environments. I set out this weekend to make an MCP server to help with local environment management but it ended with a mountain of research.</p>
<h2 id="heading-building-an-mcp-server">Building an MCP server</h2>
<p>I researched the MCP spec https://modelcontextprotocol.io/specification/2025-06-18 to learn what it could do. What tools did I have in my tool chest to build with. I was off with a plan of all the cool things I could build and the features that would help my users and really make mine stand out. </p>
<p>This was going great until it was time to test and nothing worked. All the advanced things I coded were not even getting processed in Windsurf and after debugging I find that Windsurf doesn't support the feature I need that is clearly defined in the spec.</p>
<p>Now knowing that Windsurf didn't support the roots call maybe I would look into the leader in this area — the one whose engineers created the spec — Claude Code. To my utter astonishment they don't support the entire set of MCP features. </p>
<p>Looking at a few resources that track the adoption of these features I was blown away that almost EVERY AI tool has only selected a few features to implement.</p>
<ul>
<li>https://modelcontextprotocol.io/clients#client-details</li>
<li>https://mcp-availability.com/</li>
<li>https://github.com/apify/mcp-client-capabilities</li>
</ul>
<p>However one provider stood out — VS Code. They even published a post saying they finally implemented the full spec.
https://code.visualstudio.com/blogs/2025/06/12/full-mcp-spec-support</p>
<p>Adoption according to mcp-availability.com (community-tracked, self-reported — if you have a better source I'd genuinely love to see it):</p>
<pre><code>tools - <span class="hljs-number">100</span>%
resources - <span class="hljs-number">39</span>%
prompts - <span class="hljs-number">38</span>%

discovery - <span class="hljs-number">19</span>%
sampling - <span class="hljs-number">12</span>%
elicitation - <span class="hljs-number">11</span>%
roots - <span class="hljs-number">8</span>%
</code></pre><h2 id="heading-the-specification">The specification</h2>
<p>When we look into the spec it turns out this fragmentation is intentional. The spec explicitly separates what servers can offer from what clients may support:</p>
<p>From https://modelcontextprotocol.io/specification/2025-06-18#features:</p>
<p>"Servers offer <strong>any</strong> of the following features to clients: Resources, Prompts, Tools"</p>
<p>"Clients <strong>may</strong> offer the following features to servers: Sampling, Roots, Elicitation"</p>
<p>The words "any" and "may" are doing a lot of work there. Nothing is mandatory. A client that only implements tool calls is fully spec-compliant. So the protocol just says use whatever you want but you have no obligation to support all of it.</p>
<p>The handshake does let clients publish what they support, but there's a gap — clients declare what they <em>offer</em> to servers (roots, sampling, elicitation), but nothing in the handshake tells the server whether the client will actually <em>use</em> the server's resources, react to dynamic tool updates, or read anything beyond a basic tool response. There's an open proposal (SEP-1381) trying to fix this by letting both sides declare what they actually intend to consume, not just what they technically support.</p>
<h2 id="heading-lowest-common-denominator-effect">Lowest Common Denominator Effect</h2>
<p>All of this boils down to the lowest common denominator effect where if you want to build a server with the most support you target the base tools that are most commonly supported. Anything else and you're mostly coding for a specific environment or VS Code users.</p>
<p>Anthropic created this spec and their own flagship products don't implement it fully. Claude Desktop explicitly states in their own docs it does not support sampling. Claude Code is better but still missing features. Meanwhile VS Code shipped full spec support and documented it. If you want to actually use MCP to its fullest today, VS Code is where you should be. </p>
<h2 id="heading-whats-next">What's Next</h2>
<p>I'm starting to think the real solution isn't waiting for every IDE to implement the full spec. </p>
<p>I think I have my next project... </p>
]]></content:encoded></item></channel></rss>