<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Michael Egberts</title>
    <description>The latest articles on DEV Community by Michael Egberts (@megberts).</description>
    <link>https://dev.to/megberts</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3842727%2F72c75668-5f03-4d45-8287-c5aaa231ad58.jpg</url>
      <title>DEV Community: Michael Egberts</title>
      <link>https://dev.to/megberts</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/megberts"/>
    <language>en</language>
    <item>
      <title>I Connected Hermes Agent to a Live MCP Server with 59 Tools and Here's What It Actually Built</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Thu, 28 May 2026 10:29:23 +0000</pubDate>
      <link>https://dev.to/megberts/i-connected-hermes-agent-to-a-live-mcp-server-with-59-tools-and-heres-what-it-actually-built-42m</link>
      <guid>https://dev.to/megberts/i-connected-hermes-agent-to-a-live-mcp-server-with-59-tools-and-heres-what-it-actually-built-42m</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hermes-agent-2026-05-15"&gt;Hermes Agent Challenge&lt;/a&gt;: Write About Hermes Agent&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;Every AI can generate HTML. Give Claude, ChatGPT, or Gemini a prompt and they'll produce a beautiful landing page in seconds. But here's the thing nobody mentions in the demos:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The HTML has nowhere to go.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You copy it. You find hosting. You configure DNS. You set up SSL. You build a form backend. You connect a payment provider. You do this every single time, for every single client. The AI is fast. Everything around it is slow.&lt;/p&gt;

&lt;p&gt;That's why we built &lt;a href="https://websitepublisher.ai" rel="noopener noreferrer"&gt;WebsitePublisher.ai&lt;/a&gt; — an AI web platform where the AI doesn't just generate HTML, it publishes a live website through MCP tools. Pages, forms, data, payments, visual editing — 59 tools that turn any AI conversation into a working website.&lt;/p&gt;

&lt;p&gt;But we hit a different problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Skill Problem
&lt;/h2&gt;

&lt;p&gt;We wrote a &lt;a href="https://mcp.websitepublisher.ai/skill" rel="noopener noreferrer"&gt;SKILL.md&lt;/a&gt; — 1,800 lines of documentation teaching AI assistants how to use our tools correctly. Patching rules, fragment conventions, design context, form integration patterns. Everything an AI needs to know.&lt;/p&gt;

&lt;p&gt;And every AI interpreted it differently.&lt;/p&gt;

&lt;p&gt;Claude sometimes forgot to re-fetch pages after patching. ChatGPT would skip fragments and hardcode headers into every page. Gemini ignored design context entirely. We rewrote the skill dozens of times. Added more examples. Simplified. Restructured. Still, each platform had its own blind spots.&lt;/p&gt;

&lt;p&gt;Then we discovered Hermes Agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Hermes Agent Actually Is
&lt;/h2&gt;

&lt;p&gt;I'll be honest — I initially thought Hermes was an AI model. It's not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hermes Agent is an agent framework.&lt;/strong&gt; It's the orchestration layer — tools, memory, and self-improving skills — that sits between you and any LLM. You plug in Claude, GPT-4o, Gemini, or a local model as the "brain." Hermes handles the rest.&lt;/p&gt;

&lt;p&gt;Think of it like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Framework&lt;/th&gt;
&lt;th&gt;Brain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;Claude&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;Claude / GPT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hermes Agent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Your choice&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The key differentiator: &lt;strong&gt;self-improving skills.&lt;/strong&gt; Hermes learns from its own sessions. It builds reusable knowledge documents that persist across conversations. The more it works, the better it gets.&lt;/p&gt;

&lt;p&gt;For us, this was the missing piece. Instead of rewriting our SKILL.md for every AI platform, what if we put Hermes in front — as an enforcement layer that learns our tool patterns once and applies them correctly, regardless of which LLM is doing the thinking?&lt;/p&gt;

&lt;p&gt;We had to test it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up the Connection
&lt;/h2&gt;

&lt;p&gt;The setup was surprisingly smooth. On a Mac:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Install Hermes:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Install MCP support:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/.hermes/hermes-agent
uv pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;".[mcp]"&lt;/span&gt; &lt;span class="nt"&gt;--python&lt;/span&gt; ~/.hermes/hermes-agent/venv/bin/python
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Configure Claude as the brain&lt;/strong&gt; (in &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;anthropic&lt;/span&gt;
&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-sonnet-4-20250514&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Add WebsitePublisher as MCP server:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;mcp_servers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;websitepublisher&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://mcp.websitepublisher.ai/mcp"&lt;/span&gt;
    &lt;span class="na"&gt;auth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oauth&lt;/span&gt;
    &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;60&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Authenticate:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hermes mcp login websitepublisher
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The browser opened, OAuth 2.1 + PKCE completed in seconds, and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ Authenticated — 59 tool(s) available
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;59 tools discovered. No session ID issues. No configuration headaches. Total setup time: under 10 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tests
&lt;/h2&gt;

&lt;p&gt;We ran six structured tests to see how Hermes handles a real-world MCP integration. No cherry-picking — these are the actual results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 1: Skill Loading + Page Creation
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; &lt;em&gt;"Call get_skill to load the WebsitePublisher skill, then build a simple landing page for an AI-powered website builder called 'Hermes Web'. Use a modern dark theme with a hero section, 3 feature cards, and a CTA button."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hermes did something interesting. Without being told the specific workflow, it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Called &lt;code&gt;get_skill&lt;/code&gt; — twice (main + design guidelines)&lt;/li&gt;
&lt;li&gt;Called &lt;code&gt;get_project_status&lt;/code&gt; to check for existing design context&lt;/li&gt;
&lt;li&gt;Set a design context via &lt;code&gt;execute_integration&lt;/code&gt; to persist the color palette&lt;/li&gt;
&lt;li&gt;Created the page with &lt;code&gt;create_page&lt;/code&gt;
That workflow — skill → context → build — is exactly what our SKILL.md recommends. Hermes absorbed it and followed it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; A professional dark-themed landing page, built in &lt;strong&gt;1 minute 27 seconds.&lt;/strong&gt; Gradient text, glass-morphism cards, responsive design, meta descriptions set, SEO enabled.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;See it live:&lt;/strong&gt; &lt;a href="https://hermes-mcp.websitepublisher.ai" rel="noopener noreferrer"&gt;hermes-mcp.websitepublisher.ai&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 2: Patching
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; &lt;em&gt;"Change the CTA button text to 'Launch Your Site Now' and update the hero subtitle."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hermes correctly chose &lt;code&gt;patch_page&lt;/code&gt; over &lt;code&gt;update_page&lt;/code&gt; — a targeted edit instead of replacing the entire page. It found both CTA buttons (hero and footer) and updated them in a single call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time: 17 seconds.&lt;/strong&gt; No mismatches, no broken HTML.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 3: Fragments
&lt;/h3&gt;

&lt;p&gt;This is where most AI assistants struggle. Fragments are reusable components (headers, footers) that share across pages — they use a different tool (&lt;code&gt;create_fragment&lt;/code&gt;) than pages, and they can't be patched, only fully replaced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; &lt;em&gt;"Create a reusable header fragment with navigation and the same dark theme."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hermes correctly used &lt;code&gt;create_fragment&lt;/code&gt; (not &lt;code&gt;create_page&lt;/code&gt;), named it &lt;code&gt;site-header&lt;/code&gt;, maintained the exact same color palette and fonts, added a mobile hamburger menu, and documented the include tag: &lt;code&gt;&amp;lt;!--#wps-include fragment="site-header" --&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time: 44 seconds.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 4: Data Entities
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; &lt;em&gt;"Create a 'features' entity with title, description, icon, and sort_order fields. Set public read. Add 3 records."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hermes created the entity, enabled public read, and added 3 records in separate calls with correct sort ordering. Then — without being asked — it documented both the SSR template syntax (&lt;code&gt;&amp;lt;!--#wps-mapi --&amp;gt;&lt;/code&gt; with mustache tags) and the JavaScript fetch endpoint.&lt;/p&gt;

&lt;p&gt;That SSR syntax comes directly from our SKILL.md. Hermes learned it and applied it correctly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time: 32 seconds.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 5: Form Integration
&lt;/h3&gt;

&lt;p&gt;The SAPI form system has a specific pattern: configure the form server-side first, then add the HTML. The honeypot spam protection is automatic — if an AI manually adds a honeypot field, it breaks the form.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; &lt;em&gt;"Add a contact form. Do NOT manually add a honeypot field."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hermes called &lt;code&gt;configure_form&lt;/code&gt; first (correct order), then &lt;code&gt;patch_page&lt;/code&gt; to add the HTML. No manual honeypot. Dark theme styling maintained. Rate limiting configured.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time: 1 minute 6 seconds.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Test 6: Self-Reflection
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt; &lt;em&gt;"What have you learned? What would you do differently?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is where it got interesting. Hermes identified its own mistakes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I created the features entity but then didn't actually use it in the page! Should have replaced the static feature cards with SSR."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Should have immediately updated the landing page to use the fragment instead of the inline header."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And a quote that captures exactly why this matters:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The platform remembers so the AI doesn't have to."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Test&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;th&gt;Key Observation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Skill + Page Creation&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;1m 27s&lt;/td&gt;
&lt;td&gt;Followed SKILL.md workflow without being told&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patching&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;17s&lt;/td&gt;
&lt;td&gt;Correct method, found both CTAs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fragments&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;44s&lt;/td&gt;
&lt;td&gt;Right tool, consistent design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Entities&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;32s&lt;/td&gt;
&lt;td&gt;SSR syntax from skill applied&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Forms&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;1m 6s&lt;/td&gt;
&lt;td&gt;No manual honeypot, correct order&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-Reflection&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;41s&lt;/td&gt;
&lt;td&gt;Identified own mistakes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;6 tests. 0 failures. 9% context window used. ~5 minutes total tool execution time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That context efficiency deserves emphasis. After loading a 1,800-line skill document, creating a full page, patching it, building a fragment, setting up a data entity with 3 records, configuring a form, and reflecting on the session — Hermes had used just 9% of its context window. That means you could run 10x this workload in a single session before hitting any limits.&lt;/p&gt;

&lt;p&gt;There's another thing we didn't expect: &lt;strong&gt;Sonnet performed like Opus.&lt;/strong&gt; Through Hermes, Claude Sonnet 4 produced output quality we normally associate with Opus — structured reasoning, correct workflow ordering, self-criticism. It's as if the agent layer acts as a pre-processor that elevates the underlying model's performance by providing the right context at the right time. The skill system doesn't just teach the LLM what to do — it makes a mid-tier model punch above its weight.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Insight
&lt;/h2&gt;

&lt;p&gt;The test results are nice. But here's what actually matters:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hermes Agent can be a skill enforcement layer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Right now, when we support a new AI platform, we have to test whether it interprets our SKILL.md correctly. Does it follow the patching rules? Does it use fragments? Does it remember to set design context? Every platform has different blind spots, and we end up rewriting the skill over and over.&lt;/p&gt;

&lt;p&gt;With Hermes in the middle, the equation changes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; Every AI must understand the skill → different interpretations → inconsistent results&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt; Hermes understands the skill → any LLM can be the brain → consistent results&lt;/p&gt;

&lt;p&gt;The self-improving skill system means Hermes gets better at using our tools over time. It builds up patterns, learns from mistakes ("I should have used the entity SSR instead of static HTML"), and applies those lessons in future sessions. The underlying LLM doesn't matter — the agent layer enforces quality.&lt;/p&gt;

&lt;p&gt;This isn't theoretical. We just proved it works with a live MCP server, real OAuth authentication, and a published website you can visit right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;We're exploring Hermes Agent as a permanent part of our platform architecture — not just as another supported AI, but as the orchestration layer that sits in front of all of them. One skill to learn, one agent to enforce it, any brain to power it.&lt;/p&gt;

&lt;p&gt;The code and configuration are open source: &lt;a href="https://github.com/megberts/mcp-hermes-integration" rel="noopener noreferrer"&gt;github.com/megberts/mcp-hermes-integration&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The live test result: &lt;a href="https://hermes-mcp.websitepublisher.ai" rel="noopener noreferrer"&gt;hermes-mcp.websitepublisher.ai&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;WebsitePublisher.ai is an AI web platform where AI assistants build and publish complete websites via MCP. 59 tools, OAuth 2.1, works with Claude, ChatGPT, Gemini, Cursor, Copilot, Grok, Mistral, and now — Hermes Agent.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Google I/O Just Made MCP Inevitable</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Wed, 20 May 2026 19:01:30 +0000</pubDate>
      <link>https://dev.to/megberts/google-io-just-made-mcp-inevitable-1abf</link>
      <guid>https://dev.to/megberts/google-io-just-made-mcp-inevitable-1abf</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is a submission for the Google I/O 2026 Writing Challenge&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Yesterday, Sundar Pichai stood on stage and described Gemini Spark — a 24/7 personal AI agent that runs in the cloud, works while you sleep, and integrates with third-party tools through MCP.&lt;/p&gt;

&lt;p&gt;I watched that announcement from a beach chair, on my phone. And I smiled. Because I run one of those third-party MCP servers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://websitepublisher.ai" rel="noopener noreferrer"&gt;WebsitePublisher.ai&lt;/a&gt; exposes 55+ tools through the Model Context Protocol. Nine AI platforms already connect to it — Claude, ChatGPT, Cursor, GitHub Copilot, Windsurf, Gemini, Grok, Mistral, and others. When Google announced that Spark will use MCP for third-party integrations, it wasn't a surprise. It was confirmation.&lt;/p&gt;

&lt;p&gt;MCP just went from "promising open standard" to "the protocol Google built its flagship agent on."&lt;/p&gt;

&lt;p&gt;Here's what that means from the perspective of someone who's been building on MCP for the past year.&lt;/p&gt;




&lt;h2&gt;
  
  
  Three I/O Announcements That Matter for MCP
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Gemini Spark Runs on MCP
&lt;/h3&gt;

&lt;p&gt;Spark is Google's most ambitious agent product yet. It runs on dedicated cloud VMs, powered by Gemini 3.5 and the Antigravity framework. It handles long-horizon tasks in the background — tracking RSVPs, managing workflows, sending reminders — without you keeping a browser tab open.&lt;/p&gt;

&lt;p&gt;The critical detail: Spark will connect to third-party tools through MCP. Not a proprietary Google protocol. Not a plugin marketplace with approval gates. MCP — the same open, JSON-RPC based standard that Anthropic published and that dozens of platforms already support.&lt;/p&gt;

&lt;p&gt;For MCP server operators like us, this means our existing infrastructure just gained access to Google's most powerful agent. We don't need to build a new integration. We don't need to apply to a directory. When Spark's MCP support ships, our 55 tools are available to it immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Antigravity 2.0 Goes Agent-First
&lt;/h3&gt;

&lt;p&gt;Antigravity is Google's developer platform, and version 2.0 leans hard into agents. The new CLI supports subagent orchestration, terminal sandboxing, credential masking, and Git-aware policies.&lt;/p&gt;

&lt;p&gt;What caught my attention: the architecture assumes agents will call external tools as a core workflow, not an afterthought. The sandboxing, the credential management, the ability to spin up specialized subagents — all of this assumes a world where AI agents routinely reach out to external services via standardized protocols.&lt;/p&gt;

&lt;p&gt;That's the MCP model. Build once, connect everywhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. AI Edge Gallery Gets MCP Support
&lt;/h3&gt;

&lt;p&gt;This one flew under the radar, but it might be the most interesting for the open-source community. Google AI Edge Gallery now supports MCP, with Gemma 4 handling reasoning locally while only the API calls leave the device.&lt;/p&gt;

&lt;p&gt;Think about what that means: an open-weight model, running on your phone or edge device, calling MCP tools on remote servers. The reasoning stays private. Only the structured tool calls travel over the network. That's a privacy-first agent architecture built entirely on open standards.&lt;/p&gt;




&lt;h2&gt;
  
  
  What "MCP Everywhere" Actually Looks Like in Production
&lt;/h2&gt;

&lt;p&gt;When people hear "MCP support," they think about the protocol spec. I think about what happens at 2 AM when a model sends a malformed tool call.&lt;/p&gt;

&lt;p&gt;Running an MCP server in production across 9 platforms has taught me things that don't show up in protocol documentation. Here's what Google's MCP bet actually means for the ecosystem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every platform implements MCP slightly differently.&lt;/strong&gt; Claude sends tool calls one way. ChatGPT structures them another. Cursor batches things. Copilot has its own patterns. The protocol is standardized, but the behavior isn't. When Gemini Spark joins this ecosystem, it will bring its own quirks. MCP server builders need to be resilient to all of them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model size determines orchestration depth, not tool-call success.&lt;/strong&gt; I wrote about this in detail in my &lt;a href="https://dev.to/megberts/which-gemma-4-variant-should-power-your-mcp-agent-2nl8"&gt;Gemma 4 article&lt;/a&gt; — simple tool calls succeed regardless of model size. What varies is how many sequential, context-dependent calls a model can chain before losing coherence. With Spark running on Gemini 3.5 and persistent cloud VMs, Google is betting on deep orchestration. That changes what MCP servers need to support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication is the real battleground.&lt;/strong&gt; MCP specifies OAuth 2.1 for auth, but every platform handles it differently. Some use session tokens. Some use project-scoped keys. Some do dynamic client registration. When we tested our server on &lt;a href="https://mcpplaygroundonline.com" rel="noopener noreferrer"&gt;MCP Playground&lt;/a&gt; last week, it connected and authenticated — but tool discovery failed because our server was too restrictive about token types. Multiply that by every new platform adopting MCP, and you see the challenge: the protocol is open, but making it work everywhere requires constant adaptation.&lt;/p&gt;




&lt;h2&gt;
  
  
  From Vibe Coding to Wave Coding
&lt;/h2&gt;

&lt;p&gt;There's a bigger shift happening underneath these announcements, and Google I/O crystallized it for me.&lt;/p&gt;

&lt;p&gt;The current hype is "vibe coding" — you prompt an AI, it generates code, you hope it works. It's fun for demos. It's terrifying for production.&lt;/p&gt;

&lt;p&gt;What MCP enables is something we've started calling &lt;strong&gt;wave coding&lt;/strong&gt;: instead of generating code from scratch, the AI assembles proven, production-tested software building blocks through structured tool calls. Each wave of assembly builds on the last. The AI doesn't write your payment integration from a prompt — it calls &lt;code&gt;execute_integration&lt;/code&gt; with your Stripe credentials and configures a tested, deployed payment flow.&lt;/p&gt;

&lt;p&gt;Google's I/O announcements accelerate this shift. When Spark can call MCP tools in the background, 24/7, on dedicated VMs — that's not vibe coding anymore. That's an agent riding waves of pre-built, battle-tested components to deliver real results while you sleep.&lt;/p&gt;

&lt;p&gt;Our MCP server already supports 13 e-commerce integrations: product catalogs, shopping carts, checkout flows, payment processing, invoice generation, inventory tracking. An agent like Spark could orchestrate an entire webshop build through sequential MCP calls — not by generating code, but by assembling proven pieces.&lt;/p&gt;

&lt;p&gt;That's the trajectory Google just endorsed.&lt;/p&gt;




&lt;h2&gt;
  
  
  What MCP Server Builders Should Do Right Now
&lt;/h2&gt;

&lt;p&gt;If you're building or running an MCP server, here's what I'd prioritize based on the I/O announcements:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Support deep orchestration.&lt;/strong&gt; Spark runs on dedicated VMs with Gemini 3.5. It will attempt longer tool-call chains than any current platform. Your server needs to handle 10-15+ sequential calls within a single session without state confusion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Harden your auth.&lt;/strong&gt; Accept multiple token types (session tokens, project-scoped keys, OAuth flows). Every new platform that adopts MCP will try to authenticate differently. Be permissive in what you accept, strict in what you authorize.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make tool schemas discoverable.&lt;/strong&gt; Your &lt;code&gt;tools/list&lt;/code&gt; endpoint is your storefront. When Spark connects and asks what you can do, the response needs to be clear, well-structured, and complete. Poor schemas mean poor tool selection by the agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test across platforms.&lt;/strong&gt; We test against 9 platforms. When Spark launches its MCP support, it'll be 10. Each one surfaces different edge cases. What works perfectly with Claude might fail silently with Gemini.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;A year ago, MCP was a specification from Anthropic. Today, Google built its flagship consumer AI agent on it. Cursor, Copilot, Windsurf, Mistral, Grok — they all support it too.&lt;/p&gt;

&lt;p&gt;We're watching MCP become the HTTP of AI agents: an open protocol that lets any model talk to any tool, regardless of who built either one.&lt;/p&gt;

&lt;p&gt;Google I/O 2026 didn't invent this future. But it made it inevitable. When the company that runs Search, Gmail, Android, and Chrome tells the world "our AI agent uses MCP for third-party tools," the debate is over. MCP is the standard.&lt;/p&gt;

&lt;p&gt;For those of us who've been building on it, that's not a surprise. It's a validation.&lt;/p&gt;

&lt;p&gt;And for everyone else: the doors are open. The protocol is documented. The models are ready. The only question is what you'll build.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Written and published from a phone, during Google I/O, while running the MCP server that just got a whole lot more relevant.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;MCP Specification&lt;/a&gt; — the protocol powering all of this&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://websitepublisher.ai" rel="noopener noreferrer"&gt;WebsitePublisher.ai&lt;/a&gt; — our MCP server, free tier with 55+ tools&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.google/innovation-and-ai/sundar-pichai-io-2026/" rel="noopener noreferrer"&gt;Google I/O 2026 Keynote&lt;/a&gt; — Sundar Pichai's full recap&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/megberts/which-gemma-4-variant-should-power-your-mcp-agent-2nl8"&gt;My Gemma 4 x MCP article&lt;/a&gt; — testing Gemma 4 as an MCP agent from a phone&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>googleiochallenge</category>
    </item>
    <item>
      <title>Which Gemma 4 Variant Should Power Your MCP Agent?</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Mon, 18 May 2026 05:48:02 +0000</pubDate>
      <link>https://dev.to/megberts/which-gemma-4-variant-should-power-your-mcp-agent-2nl8</link>
      <guid>https://dev.to/megberts/which-gemma-4-variant-should-power-your-mcp-agent-2nl8</guid>
      <description>&lt;p&gt;I’m writing this from a phone, on vacation. That’s not a flex — it’s the point.&lt;/p&gt;

&lt;p&gt;I run an MCP server in production: &lt;a href="https://websitepublisher.ai" rel="noopener noreferrer"&gt;WebsitePublisher.ai&lt;/a&gt;, 55+ tools, 9 AI platforms connected. This afternoon I opened Google AI Studio on my phone, selected Gemma 4 26B, gave it our tool schemas, and asked it to build a bakery website. It returned six structured tool calls. I executed them. The site went live.&lt;/p&gt;

&lt;p&gt;No laptop. No terminal. No IDE. Just a phone, a model, and a protocol.&lt;/p&gt;

&lt;p&gt;That experience crystallized something I’ve been thinking about: Gemma 4 doesn’t ship one model — it ships four, each sized for a different deployment reality. The question isn’t whether open-weight models can power MCP agents. It’s &lt;strong&gt;which Gemma 4 variant fits which part of your agent stack?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is MCP?
&lt;/h2&gt;

&lt;p&gt;Model Context Protocol is an open standard (JSON-RPC based) that lets AI models call external tools through a universal interface. Instead of each AI platform building proprietary integrations, you build one MCP server and every compatible AI can use it.&lt;/p&gt;

&lt;p&gt;Our MCP server exposes tools like &lt;code&gt;create_page&lt;/code&gt;, &lt;code&gt;upload_asset&lt;/code&gt;, &lt;code&gt;create_record&lt;/code&gt;, &lt;code&gt;configure_form&lt;/code&gt;, and &lt;code&gt;execute_integration&lt;/code&gt;. When a model connects, it can create web pages, manage structured data, handle form submissions, and trigger third-party services — all through standardized tool calls.&lt;/p&gt;

&lt;p&gt;Any model that can produce structured output can be an MCP client. The question is: &lt;em&gt;how well&lt;/em&gt; does it handle the work once connected?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Gemma 4 Lineup
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;E2B&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;E4B&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;26B A4B&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;31B Dense&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Active params&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~2B&lt;/td&gt;
&lt;td&gt;~4B&lt;/td&gt;
&lt;td&gt;3.8B (26B total, MoE)&lt;/td&gt;
&lt;td&gt;31B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;256K&lt;/td&gt;
&lt;td&gt;256K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Audio input&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Min RAM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~4 GB&lt;/td&gt;
&lt;td&gt;~8 GB&lt;/td&gt;
&lt;td&gt;~16 GB&lt;/td&gt;
&lt;td&gt;~24 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Runs on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phone, RPi&lt;/td&gt;
&lt;td&gt;Laptop&lt;/td&gt;
&lt;td&gt;Dev workstation&lt;/td&gt;
&lt;td&gt;GPU server&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All Apache 2.0. No usage caps, no MAU thresholds.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Test: Gemma 4 26B Builds a Website from a Phone
&lt;/h2&gt;

&lt;p&gt;Here’s exactly what happened.&lt;/p&gt;

&lt;p&gt;I opened Google AI Studio on my iPhone, selected &lt;strong&gt;Gemma 4 26B A4B IT&lt;/strong&gt;, and pasted a prompt containing five of our MCP tool schemas (&lt;code&gt;create_page&lt;/code&gt;, &lt;code&gt;create_entity&lt;/code&gt;, &lt;code&gt;create_record&lt;/code&gt;, &lt;code&gt;configure_form&lt;/code&gt;, &lt;code&gt;list_pages&lt;/code&gt;) along with this instruction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“A user says: Build me a simple landing page for my bakery called ‘Golden Crust’. Include a short intro, three signature breads, and a contact form. Respond with the exact sequence of MCP tool calls.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gemma 4 returned six tool calls in valid JSON:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;create_entity&lt;/strong&gt; — defined a “bread” data model with name and description fields&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;create_record&lt;/strong&gt; x3 — added Sourdough, French Baguette, and Honey Whole Wheat&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;create_page&lt;/strong&gt; — generated a full HTML landing page with inline CSS, product listings, and a contact form&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;configure_form&lt;/strong&gt; — set up the contact form with name, email, and message fields&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every tool call used the correct parameter structure. The ordering was logical: data model first, then records, then the page that references them, then the form configuration. The HTML included sensible styling, warm bakery colors, and properly structured sections.&lt;/p&gt;

&lt;p&gt;I copied the tool calls into Claude (the AI assistant I use for MCP execution), ran them against our server, and the site went live at &lt;a href="https://gemma-test.websitepublisher.ai" rel="noopener noreferrer"&gt;gemma-test.websitepublisher.ai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Total time from prompt to live website: under 10 minutes. From a phone. Over 5G.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Test Actually Proves
&lt;/h2&gt;

&lt;p&gt;Let me be precise about what this demonstrates and what it doesn’t.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It proves:&lt;/strong&gt; Gemma 4 26B can parse MCP tool schemas, reason about task decomposition, produce correctly structured tool calls, and sequence them in a logical order — all without any fine-tuning on our specific tools. This is zero-shot tool use on a real production API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It doesn’t prove:&lt;/strong&gt; That Gemma 4 can handle a live MCP connection autonomously. In this test, I manually copied the tool calls and executed them. The model generated the plan; I was the middleware.&lt;/p&gt;

&lt;p&gt;That distinction matters, and it’s where the variant comparison gets interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mapping Variants to MCP Agent Roles
&lt;/h2&gt;

&lt;p&gt;Based on running MCP across 9 AI platforms and watching models of every size class interact with our tools, here’s how I’d think about placing each Gemma 4 variant:&lt;/p&gt;

&lt;h3&gt;
  
  
  E2B: The Front Door
&lt;/h3&gt;

&lt;p&gt;With ~2B active parameters, E2B fits as the &lt;em&gt;trigger&lt;/em&gt;: the component that understands intent and dispatches a single tool call. A voice command on a phone — “publish my latest blog post” — parsed and routed to the right MCP tool. One intent, one call, one response.&lt;/p&gt;

&lt;p&gt;The native audio input is the differentiator. For voice-triggered MCP agents on battery-constrained devices, this is the size class that makes sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Likely sweet spot:&lt;/strong&gt; Single-tool dispatcher. Voice-triggered agent entry point.&lt;br&gt;
&lt;strong&gt;Likely limitation:&lt;/strong&gt; Multi-step chains where context from earlier calls matters.&lt;/p&gt;

&lt;h3&gt;
  
  
  E4B: The Local Workhorse
&lt;/h3&gt;

&lt;p&gt;This is where local MCP agents become genuinely useful. Running on any modern laptop, handling single-step tool calls with good reliability.&lt;/p&gt;

&lt;p&gt;Based on what I’ve seen at this parameter range: straightforward create-and-deploy loops work well. Where models this size show limits is context-dependent sequences — “build a five-page site with consistent navigation” requires maintaining consistency across multiple creation steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Likely sweet spot:&lt;/strong&gt; Local development agent. Content creation. Moderate single-step tool calls.&lt;br&gt;
&lt;strong&gt;Likely limitation:&lt;/strong&gt; Multi-page orchestration requiring consistency across 4+ sequential calls.&lt;/p&gt;

&lt;h3&gt;
  
  
  26B A4B: The Efficiency Sweet Spot
&lt;/h3&gt;

&lt;p&gt;This is the variant I tested. And it delivered.&lt;/p&gt;

&lt;p&gt;Six sequential tool calls, all correctly structured, logically ordered, with a coherent HTML output that referenced the data model it had just created. That’s not trivial — it requires the model to hold its own plan in context and execute against it consistently.&lt;/p&gt;

&lt;p&gt;The MoE architecture (activating only 3.8B parameters per token while drawing on 26B total) and the 256K context window make this variant particularly suited for MCP work. Tool schemas are large — our 55+ tools consume significant context before the model even starts reasoning. The 256K window gives comfortable headroom.&lt;/p&gt;

&lt;p&gt;But the bakery test was deliberately simple. Our MCP server also exposes 13 e-commerce integrations — product catalogs, shopping carts, checkout flows, payment processing via Stripe or Mollie, invoice generation, inventory tracking, and more. Building a full webshop means orchestrating these proven software building blocks in sequence: the AI picks the right pieces and combines them into a working application. We call this &lt;strong&gt;wave coding&lt;/strong&gt; — not prompting and praying like vibe coding, but riding deliberate waves of AI-assembled, production-tested components. Each wave builds on the last. That’s where a model like the 26B earns its place: enough reasoning depth to orchestrate 6-8 integration calls reliably, enough context to hold the full picture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proven sweet spot:&lt;/strong&gt; Multi-step tool orchestration. Production agent server. The “right answer” for most self-hosted MCP deployments.&lt;br&gt;
&lt;strong&gt;Likely limitation:&lt;/strong&gt; Highly creative or ambiguous tasks where raw reasoning power matters more than efficiency.&lt;/p&gt;

&lt;h3&gt;
  
  
  31B Dense: The Precision Architect
&lt;/h3&gt;

&lt;p&gt;Every token touches all 31B parameters — no routing, no sparsity. Slower, heavier, but the strongest reasoner in the family.&lt;/p&gt;

&lt;p&gt;For MCP agent work, this class earns its compute in two scenarios: architecture-level planning where the &lt;em&gt;sequence&lt;/em&gt; of tool calls matters as much as individual calls, and fine-tuning for domain-specific tool patterns. The dense architecture makes fine-tuning more predictable than MoE.&lt;/p&gt;

&lt;p&gt;Where 31B pulls ahead of 26B is &lt;strong&gt;full wave coding sessions&lt;/strong&gt; — building an entire webshop from brief to live, orchestrating 15+ sequential integration calls while maintaining consistency across product data, payment configuration, email templates, and frontend pages. That’s the kind of sustained, multi-layer orchestration where every additional parameter matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Likely sweet spot:&lt;/strong&gt; Complex project planning. Full wave coding orchestration. Fine-tuned domain agents.&lt;br&gt;
&lt;strong&gt;Likely limitation:&lt;/strong&gt; Cost and latency. For tasks where 26B delivers equivalent results, you’re burning compute you don’t need.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned About Model Size and Tool Calling
&lt;/h2&gt;

&lt;p&gt;Running MCP across 9 platforms, one pattern stands out: &lt;strong&gt;for simple tool calls, model size barely matters.&lt;/strong&gt; A “create this page” request succeeds with roughly the same reliability across model classes.&lt;/p&gt;

&lt;p&gt;Where model size becomes decisive is &lt;strong&gt;orchestration depth&lt;/strong&gt; — the number of sequential, context-dependent tool calls a model can chain before losing coherence. At two to three calls, almost anything works. Past six calls, only the stronger reasoners maintain consistency.&lt;/p&gt;

&lt;p&gt;Open-weight models give you something closed APIs never will: &lt;strong&gt;the ability to match model weight to task weight.&lt;/strong&gt; Route simple status checks to E4B and complex builds to 31B. Your agent gets smarter &lt;em&gt;and&lt;/em&gt; cheaper at the same time.&lt;/p&gt;

&lt;p&gt;That’s the real unlock of open-weight + MCP: you own both the brain and the hands.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Decision Framework
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Need voice or audio input?&lt;/strong&gt;&lt;br&gt;
Then E2B (phone/IoT) or E4B (laptop)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many sequential tool calls per task?&lt;/strong&gt;&lt;br&gt;
1-3: &lt;strong&gt;E4B&lt;/strong&gt; — fast, light, capable&lt;br&gt;
4-8: &lt;strong&gt;26B A4B&lt;/strong&gt; — tested and proven&lt;br&gt;
8+: &lt;strong&gt;31B Dense&lt;/strong&gt; — when orchestration quality justifies compute&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fine-tuning for a specific domain?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;31B Dense&lt;/strong&gt; — dense fine-tunes more predictably than MoE&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Budget-constrained?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;26B A4B.&lt;/strong&gt; Almost always the answer.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;p&gt;While testing, I discovered that &lt;a href="https://mcpplaygroundonline.com" rel="noopener noreferrer"&gt;MCP Playground&lt;/a&gt; — an online tool for testing MCP servers — lists both Gemma 4 26B and 31B as available models. Our server connects and authenticates successfully. Once we resolve a token compatibility issue on our end, this will enable fully automated testing: type a prompt, Gemma 4 calls our MCP tools directly, website appears. No copy-paste middleware needed.&lt;/p&gt;

&lt;p&gt;That’s the trajectory: from “model generates a plan I execute manually” to “model executes the plan autonomously through MCP.” Gemma 4’s native function calling support, combined with MCP’s standardized tool protocol, makes this path viable on fully open-source infrastructure.&lt;/p&gt;

&lt;p&gt;If you want to start experimenting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 4 models&lt;/strong&gt; — &lt;a href="https://aistudio.google.com" rel="noopener noreferrer"&gt;Google AI Studio&lt;/a&gt;, &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt;, &lt;a href="https://huggingface.co/collections/google/gemma-4-release-684a6475a35684188f54823e" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP specification&lt;/strong&gt; — &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;modelcontextprotocol.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An MCP server to test against&lt;/strong&gt; — &lt;a href="https://websitepublisher.ai" rel="noopener noreferrer"&gt;WebsitePublisher.ai&lt;/a&gt; has a free tier with 55+ tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pick the variant that fits your hardware. Connect it to a real MCP server. The benchmarks start mattering a lot less once you’re watching a model build something real.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built and tested entirely from a phone. On vacation. Because that’s what open protocols and open models make possible.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gemmachallenge</category>
    </item>
    <item>
      <title>Which Gemma 4 Variant Should Power Your MCP Agent?</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Sat, 16 May 2026 14:35:48 +0000</pubDate>
      <link>https://dev.to/megberts/which-gemma-4-variant-should-power-your-mcp-agent-4gkn</link>
      <guid>https://dev.to/megberts/which-gemma-4-variant-should-power-your-mcp-agent-4gkn</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;📌 This article is now an official &lt;a href="https://dev.to/megberts/which-gemma-4-variant-should-power-your-mcp-agent-2nl8"&gt;Gemma 4 Challenge submission on DEV&lt;/a&gt;. Read the latest version there!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a submission for the Gemma 4 Challenge: Write About Gemma 4&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;I’m writing this from a phone, on vacation. That’s not a flex — it’s the point.&lt;/p&gt;

&lt;p&gt;I run an MCP server in production: &lt;a href="https://websitepublisher.ai" rel="noopener noreferrer"&gt;WebsitePublisher.ai&lt;/a&gt;, 55+ tools, 9 AI platforms connected. This afternoon I opened Google AI Studio on my phone, selected Gemma 4 26B, gave it our tool schemas, and asked it to build a bakery website. It returned six structured tool calls. I executed them. The site went live.&lt;/p&gt;

&lt;p&gt;No laptop. No terminal. No IDE. Just a phone, a model, and a protocol.&lt;/p&gt;

&lt;p&gt;That experience crystallized something I’ve been thinking about: Gemma 4 doesn’t ship one model — it ships four, each sized for a different deployment reality. The question isn’t whether open-weight models can power MCP agents. It’s &lt;strong&gt;which Gemma 4 variant fits which part of your agent stack.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is MCP?
&lt;/h2&gt;

&lt;p&gt;Model Context Protocol is an open standard (JSON-RPC based) that lets AI models call external tools through a universal interface. Instead of each AI platform building proprietary integrations, you build one MCP server and every compatible AI can use it.&lt;/p&gt;

&lt;p&gt;Our MCP server exposes tools like &lt;code&gt;create_page&lt;/code&gt;, &lt;code&gt;upload_asset&lt;/code&gt;, &lt;code&gt;create_record&lt;/code&gt;, &lt;code&gt;configure_form&lt;/code&gt;, and &lt;code&gt;execute_integration&lt;/code&gt;. When a model connects, it can create web pages, manage structured data, handle form submissions, and trigger third-party services — all through standardized tool calls.&lt;/p&gt;

&lt;p&gt;Any model that can produce structured output can be an MCP client. The question is: &lt;em&gt;how well&lt;/em&gt; does it handle the work once connected?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Gemma 4 Lineup
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;E2B&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;E4B&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;26B A4B&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;31B Dense&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Active params&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~2B&lt;/td&gt;
&lt;td&gt;~4B&lt;/td&gt;
&lt;td&gt;3.8B (26B total, MoE)&lt;/td&gt;
&lt;td&gt;31B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;256K&lt;/td&gt;
&lt;td&gt;256K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Audio input&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Min RAM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~4 GB&lt;/td&gt;
&lt;td&gt;~8 GB&lt;/td&gt;
&lt;td&gt;~16 GB&lt;/td&gt;
&lt;td&gt;~24 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Runs on&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phone, RPi&lt;/td&gt;
&lt;td&gt;Laptop&lt;/td&gt;
&lt;td&gt;Dev workstation&lt;/td&gt;
&lt;td&gt;GPU server&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All Apache 2.0. No usage caps, no MAU thresholds.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Test: Gemma 4 26B Builds a Website from a Phone
&lt;/h2&gt;

&lt;p&gt;Here’s exactly what happened.&lt;/p&gt;

&lt;p&gt;I opened Google AI Studio on my iPhone, selected &lt;strong&gt;Gemma 4 26B A4B IT&lt;/strong&gt;, and pasted a prompt containing five of our MCP tool schemas (&lt;code&gt;create_page&lt;/code&gt;, &lt;code&gt;create_entity&lt;/code&gt;, &lt;code&gt;create_record&lt;/code&gt;, &lt;code&gt;configure_form&lt;/code&gt;, &lt;code&gt;list_pages&lt;/code&gt;) along with this instruction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“A user says: Build me a simple landing page for my bakery called ‘Golden Crust’. Include a short intro, three signature breads, and a contact form. Respond with the exact sequence of MCP tool calls.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gemma 4 returned six tool calls in valid JSON:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;create_entity&lt;/strong&gt; — defined a “bread” data model with name and description fields&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;create_record&lt;/strong&gt; x3 — added Sourdough, French Baguette, and Honey Whole Wheat&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;create_page&lt;/strong&gt; — generated a full HTML landing page with inline CSS, product listings, and a contact form&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;configure_form&lt;/strong&gt; — set up the contact form with name, email, and message fields&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every tool call used the correct parameter structure. The ordering was logical: data model first, then records, then the page that references them, then the form configuration. The HTML included sensible styling, warm bakery colors, and properly structured sections.&lt;/p&gt;

&lt;p&gt;I copied the tool calls into Claude (the AI assistant I use for MCP execution), ran them against our server, and the site went live at &lt;a href="https://gemma-test.websitepublisher.ai" rel="noopener noreferrer"&gt;gemma-test.websitepublisher.ai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Total time from prompt to live website: under 10 minutes. From a phone. Over 5G.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Test Actually Proves
&lt;/h2&gt;

&lt;p&gt;Let me be precise about what this demonstrates and what it doesn’t.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It proves:&lt;/strong&gt; Gemma 4 26B can parse MCP tool schemas, reason about task decomposition, produce correctly structured tool calls, and sequence them in a logical order — all without any fine-tuning on our specific tools. This is zero-shot tool use on a real production API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It doesn’t prove:&lt;/strong&gt; That Gemma 4 can handle a live MCP connection autonomously. In this test, I manually copied the tool calls and executed them. The model generated the plan; I was the middleware.&lt;/p&gt;

&lt;p&gt;That distinction matters, and it’s where the variant comparison gets interesting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mapping Variants to MCP Agent Roles
&lt;/h2&gt;

&lt;p&gt;Based on running MCP across 9 AI platforms and watching models of every size class interact with our tools, here’s how I’d think about placing each Gemma 4 variant:&lt;/p&gt;

&lt;h3&gt;
  
  
  E2B: The Front Door
&lt;/h3&gt;

&lt;p&gt;With ~2B active parameters, E2B fits as the &lt;em&gt;trigger&lt;/em&gt;: the component that understands intent and dispatches a single tool call. A voice command on a phone — “publish my latest blog post” — parsed and routed to the right MCP tool. One intent, one call, one response.&lt;/p&gt;

&lt;p&gt;The native audio input is the differentiator. For voice-triggered MCP agents on battery-constrained devices, this is the size class that makes sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Likely sweet spot:&lt;/strong&gt; Single-tool dispatcher. Voice-triggered agent entry point.&lt;br&gt;
&lt;strong&gt;Likely limitation:&lt;/strong&gt; Multi-step chains where context from earlier calls matters.&lt;/p&gt;

&lt;h3&gt;
  
  
  E4B: The Local Workhorse
&lt;/h3&gt;

&lt;p&gt;This is where local MCP agents become genuinely useful. Running on any modern laptop, handling single-step tool calls with good reliability.&lt;/p&gt;

&lt;p&gt;Based on what I’ve seen at this parameter range: straightforward create-and-deploy loops work well. Where models this size show limits is context-dependent sequences — “build a five-page site with consistent navigation” requires maintaining consistency across multiple creation steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Likely sweet spot:&lt;/strong&gt; Local development agent. Content creation. Moderate single-step tool calls.&lt;br&gt;
&lt;strong&gt;Likely limitation:&lt;/strong&gt; Multi-page orchestration requiring consistency across 4+ sequential calls.&lt;/p&gt;

&lt;h3&gt;
  
  
  26B A4B: The Efficiency Sweet Spot
&lt;/h3&gt;

&lt;p&gt;This is the variant I tested. And it delivered.&lt;/p&gt;

&lt;p&gt;Six sequential tool calls, all correctly structured, logically ordered, with a coherent HTML output that referenced the data model it had just created. That’s not trivial — it requires the model to hold its own plan in context and execute against it consistently.&lt;/p&gt;

&lt;p&gt;The MoE architecture (activating only 3.8B parameters per token while drawing on 26B total) and the 256K context window make this variant particularly suited for MCP work. Tool schemas are large — our 55+ tools consume significant context before the model even starts reasoning. The 256K window gives comfortable headroom.&lt;/p&gt;

&lt;p&gt;But the bakery test was deliberately simple. Our MCP server also exposes 13 e-commerce integrations — product catalogs, shopping carts, checkout flows, payment processing via Stripe or Mollie, invoice generation, inventory tracking, and more. Building a full webshop means orchestrating these proven software building blocks in sequence: the AI picks the right pieces and combines them into a working application. We call this &lt;strong&gt;wave coding&lt;/strong&gt; — not prompting and praying like vibe coding, but riding deliberate waves of AI-assembled, production-tested components. Each wave builds on the last. That’s where a model like the 26B earns its place: enough reasoning depth to orchestrate 6-8 integration calls reliably, enough context to hold the full picture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proven sweet spot:&lt;/strong&gt; Multi-step tool orchestration. Production agent server. The “right answer” for most self-hosted MCP deployments.&lt;br&gt;
&lt;strong&gt;Likely limitation:&lt;/strong&gt; Highly creative or ambiguous tasks where raw reasoning power matters more than efficiency.&lt;/p&gt;

&lt;h3&gt;
  
  
  31B Dense: The Precision Architect
&lt;/h3&gt;

&lt;p&gt;Every token touches all 31B parameters — no routing, no sparsity. Slower, heavier, but the strongest reasoner in the family.&lt;/p&gt;

&lt;p&gt;For MCP agent work, this class earns its compute in two scenarios: architecture-level planning where the &lt;em&gt;sequence&lt;/em&gt; of tool calls matters as much as individual calls, and fine-tuning for domain-specific tool patterns. The dense architecture makes fine-tuning more predictable than MoE.&lt;/p&gt;

&lt;p&gt;Where 31B pulls ahead of 26B is &lt;strong&gt;full wave coding sessions&lt;/strong&gt; — building an entire webshop from brief to live, orchestrating 15+ sequential integration calls while maintaining consistency across product data, payment configuration, email templates, and frontend pages. That’s the kind of sustained, multi-layer orchestration where every additional parameter matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Likely sweet spot:&lt;/strong&gt; Complex project planning. Full wave coding orchestration. Fine-tuned domain agents.&lt;br&gt;
&lt;strong&gt;Likely limitation:&lt;/strong&gt; Cost and latency. For tasks where 26B delivers equivalent results, you’re burning compute you don’t need.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned About Model Size and Tool Calling
&lt;/h2&gt;

&lt;p&gt;Running MCP across 9 platforms, one pattern stands out: &lt;strong&gt;for simple tool calls, model size barely matters.&lt;/strong&gt; A “create this page” request succeeds with roughly the same reliability across model classes.&lt;/p&gt;

&lt;p&gt;Where model size becomes decisive is &lt;strong&gt;orchestration depth&lt;/strong&gt; — the number of sequential, context-dependent tool calls a model can chain before losing coherence. At two to three calls, almost anything works. Past six calls, only the stronger reasoners maintain consistency.&lt;/p&gt;

&lt;p&gt;Open-weight models give you something closed APIs never will: &lt;strong&gt;the ability to match model weight to task weight.&lt;/strong&gt; Route simple status checks to E4B and complex builds to 31B. Your agent gets smarter &lt;em&gt;and&lt;/em&gt; cheaper at the same time.&lt;/p&gt;

&lt;p&gt;That’s the real unlock of open-weight + MCP: you own both the brain and the hands.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Decision Framework
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Need voice or audio input?&lt;/strong&gt;&lt;br&gt;
Then E2B (phone/IoT) or E4B (laptop)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many sequential tool calls per task?&lt;/strong&gt;&lt;br&gt;
1-3: &lt;strong&gt;E4B&lt;/strong&gt; — fast, light, capable&lt;br&gt;
4-8: &lt;strong&gt;26B A4B&lt;/strong&gt; — tested and proven&lt;br&gt;
8+: &lt;strong&gt;31B Dense&lt;/strong&gt; — when orchestration quality justifies compute&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fine-tuning for a specific domain?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;31B Dense&lt;/strong&gt; — dense fine-tunes more predictably than MoE&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Budget-constrained?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;26B A4B.&lt;/strong&gt; Almost always the answer.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;p&gt;While testing, I discovered that &lt;a href="https://mcpplaygroundonline.com" rel="noopener noreferrer"&gt;MCP Playground&lt;/a&gt; — an online tool for testing MCP servers — lists both Gemma 4 26B and 31B as available models. Our server connects and authenticates successfully. Once we resolve a token compatibility issue on our end, this will enable fully automated testing: type a prompt, Gemma 4 calls our MCP tools directly, website appears. No copy-paste middleware needed.&lt;/p&gt;

&lt;p&gt;That’s the trajectory: from “model generates a plan I execute manually” to “model executes the plan autonomously through MCP.” Gemma 4’s native function calling support, combined with MCP’s standardized tool protocol, makes this path viable on fully open-source infrastructure.&lt;/p&gt;

&lt;p&gt;If you want to start experimenting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 4 models&lt;/strong&gt; — &lt;a href="https://aistudio.google.com" rel="noopener noreferrer"&gt;Google AI Studio&lt;/a&gt;, &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt;, &lt;a href="https://huggingface.co/collections/google/gemma-4-release-684a6475a35684188f54823e" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP specification&lt;/strong&gt; — &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;modelcontextprotocol.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An MCP server to test against&lt;/strong&gt; — &lt;a href="https://websitepublisher.ai" rel="noopener noreferrer"&gt;WebsitePublisher.ai&lt;/a&gt; has a free tier with 55+ tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pick the variant that fits your hardware. Connect it to a real MCP server. The benchmarks start mattering a lot less once you’re watching a model build something real.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built and tested entirely from a phone. On vacation. Because that’s what open protocols and open models make possible.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gemmachallenge</category>
    </item>
    <item>
      <title>WAVE Coding: Why we built 78 integrations for AI instead of letting AI build them</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Thu, 14 May 2026 19:38:45 +0000</pubDate>
      <link>https://dev.to/megberts/wave-coding-why-we-built-78-integrations-for-ai-instead-of-letting-ai-build-them-if2</link>
      <guid>https://dev.to/megberts/wave-coding-why-we-built-78-integrations-for-ai-instead-of-letting-ai-build-them-if2</guid>
      <description>&lt;p&gt;Every week I see another "I built a SaaS in 4 hours with AI" post. And every week, the comments are the same: "Cool, but does the Stripe integration actually work?"&lt;/p&gt;

&lt;p&gt;Usually it doesn't.&lt;/p&gt;

&lt;p&gt;That's vibe coding. You prompt, you hope, and you pray that the AI correctly implements a payment flow it's never actually tested. It hallucinates webhook handlers. It guesses at email configs. It builds checkout flows that break on the first real transaction.&lt;/p&gt;

&lt;p&gt;We took the opposite approach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The puzzle piece pattern&lt;/strong&gt;&lt;br&gt;
We're building WebsitePublisher.ai — a platform where AI assistants build and publish websites and web applications through conversation. Available on 9 AI platforms (Claude, ChatGPT, Gemini, Cursor, Windsurf, GitHub Copilot, Grok, Mistral, n8n) via MCP protocol.&lt;br&gt;
In the last 16 days, we shipped 78 integrations. Each one is a self-contained puzzle piece — proven software running on our web servers. AI doesn't generate the integration code. AI calls the integration.&lt;br&gt;
Here's what that looks like in practice:&lt;/p&gt;

&lt;p&gt;User: "I need a webshop with Stripe payments and order confirmation emails"&lt;/p&gt;

&lt;p&gt;AI selects:&lt;br&gt;
  → product-catalog (MAPI entity + helpers)&lt;br&gt;
  → shopping-cart (session-based)&lt;br&gt;
  → checkout-flow (orchestration engine)&lt;br&gt;
  → stripe (payment processing)&lt;br&gt;
  → invoice-generator (PDF + accounting)&lt;br&gt;
  → email-templates (Resend rendering)&lt;/p&gt;

&lt;p&gt;Result: 6 tested puzzle pieces combined into a working application.&lt;/p&gt;

&lt;p&gt;Zero hallucinated Stripe webhooks. Zero guessed SMTP configs. The heavy lifting happens in proven software on the server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters&lt;/strong&gt;&lt;br&gt;
The fundamental problem with vibe coding is that AI is asked to do two things at once:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Understand what you want&lt;/strong&gt; (AI is great at this)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement reliable infrastructure&lt;/strong&gt; (AI is terrible at this)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WAVE coding separates the two. AI handles #1 — understanding your intent and selecting the right puzzle pieces. The proven software handles #2 — the actual Stripe calls, the email delivery, the database queries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's in the 78 puzzle pieces&lt;/strong&gt;&lt;br&gt;
Some highlights from what shipped in 16 days:&lt;br&gt;
&lt;strong&gt;E-commerce stack&lt;/strong&gt;:&lt;br&gt;
Product catalog, shopping cart, checkout flow, order management, inventory tracking, shipping (MyParcel), invoice generation, discount codes&lt;br&gt;
&lt;strong&gt;Communication&lt;/strong&gt;:&lt;br&gt;
SMTP email, email templates, contact forms, multi-layer spam protection&lt;br&gt;
&lt;strong&gt;Data layer&lt;/strong&gt;:&lt;br&gt;
Server-side rendering for SEO, batch update/delete endpoints, data grids with validation&lt;br&gt;
&lt;strong&gt;AI layer&lt;/strong&gt;:&lt;br&gt;
Coach (guided website creation), concept generation, streaming chat&lt;br&gt;
&lt;strong&gt;Platform hardening&lt;/strong&gt;:&lt;br&gt;
DNSSEC, request tracing, error envelope standardization, security hardening&lt;/p&gt;

&lt;p&gt;Each piece follows the same pattern: a handler receives the endpoint, input, and project ID. Dependencies are explicit. No magic.&lt;/p&gt;

&lt;p&gt;The results&lt;br&gt;
In the same 16 days:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;7 new customers onboarded&lt;/li&gt;
&lt;li&gt;World Cup prediction game deployed for PSV Supporters (30,000 members)&lt;/li&gt;
&lt;li&gt;Visual editor upgrade shipped&lt;/li&gt;
&lt;li&gt;Coach AI guidance system improved&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;We're calling it WAVE coding&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not because it's a clever acronym. Because each application you build is a wave — one deliberate push that combines existing puzzle pieces into something new. Each wave builds on what came before.&lt;br&gt;
Vibe coding is random energy hoping to land somewhere useful.&lt;br&gt;
WAVE coding is deliberate momentum. 🌊&lt;/p&gt;

&lt;p&gt;Curious what you think. Are you building infrastructure for AI to use, or letting AI build infrastructure from scratch?&lt;br&gt;
websitepublisher.ai&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>mcp</category>
    </item>
    <item>
      <title>We're now in Mistral's connector directory — here's what that means for AI-powered web publishing</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Tue, 05 May 2026 11:54:06 +0000</pubDate>
      <link>https://dev.to/megberts/were-now-in-mistrals-connector-directory-heres-what-that-means-for-ai-powered-web-publishing-206</link>
      <guid>https://dev.to/megberts/were-now-in-mistrals-connector-directory-heres-what-that-means-for-ai-powered-web-publishing-206</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hook&lt;/strong&gt;: WebsitePublisher.ai is a pre-configured Directory Connector in Mistral's curated MCP connector directory. That's a mouthful, so let me break it down: Le Chat users can now find us in their connector settings, click Add, complete OAuth, and immediately start building websites through conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key points to cover&lt;/strong&gt;:&lt;br&gt;
What a Directory Connector is vs Custom Connector&lt;br&gt;
OAuth 2.1 + DCR auto-discovery&lt;br&gt;
55+ MCP tools available&lt;br&gt;
How it compares to our ChatGPT integration (Custom GPT = zero setup)&lt;br&gt;
The 10-platform story&lt;br&gt;
Link to setup guide: websitepublisher.ai/docs/mcp#mistral-setup&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>buildinpublic</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Building an AI-native web platform: 69 features in 11 days (solo dev log)</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Tue, 28 Apr 2026 10:35:51 +0000</pubDate>
      <link>https://dev.to/megberts/building-an-ai-native-web-platform-69-features-in-11-days-solo-dev-log-l55</link>
      <guid>https://dev.to/megberts/building-an-ai-native-web-platform-69-features-in-11-days-solo-dev-log-l55</guid>
      <description>&lt;p&gt;I'm building WebsitePublisher.ai — a platform where AI assistants build and publish complete websites through MCP (Model Context Protocol) tools. Here's what the last 11 days looked like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Visual Editor Problem&lt;/strong&gt;&lt;br&gt;
Users could build entire websites through conversation, but changing a single typo required asking the AI to patch the page. Terrible UX for small edits.&lt;br&gt;
&lt;strong&gt;Solution: WPE v2&lt;/strong&gt; — a visual editor that loads the published page in an iframe, detects editable elements, and lets users click-to-edit text, drag-and-drop images, right-click for context menus, and save back through the same PAPI that AI assistants use.&lt;/p&gt;

&lt;p&gt;Key decisions: httpOnly cookies instead of URL tokens, change count badge in dashboard, overlay detection for CSS-covered images.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Integration Cookbook&lt;/strong&gt;&lt;br&gt;
Our integration engine (IAPI) supports http (external proxy) and internal (PHP handler) drivers. After shipping LinkedIn posting and SMTP email in the same week, I wrote an Internal Integration Cookbook:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create manifest JSON with endpoint definitions&lt;/li&gt;
&lt;li&gt;Implement handler extending InternalIntegrationHandler&lt;/li&gt;
&lt;li&gt;Define body_transform and response_transform hooks&lt;/li&gt;
&lt;li&gt;Register in engine&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Result: the API Proxy integration took 2 hours from start to production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Session Stability&lt;/strong&gt;&lt;br&gt;
OAuth 2.1 + PKCE authentication. Claude's connector occasionally lost session state → 401 errors mid-conversation. Fixed with a 6-layer approach: token refresh, graceful 401 handling, session persistence, stale token detection, project selector refresh, frontend error boundaries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom Domains with DNS Pre-validation&lt;/strong&gt;&lt;br&gt;
SSL certificate requests would fail when DNS hadn't propagated. Now we validate CNAME resolution before calling certbot. Clear error messages instead of cryptic failures.&lt;br&gt;
&lt;strong&gt;Numbers&lt;/strong&gt;&lt;br&gt;
Tasks completed (11 days): 69&lt;br&gt;
Total MCP tools: 55&lt;br&gt;
AI platforms supported: 9&lt;br&gt;
API layers: 10&lt;br&gt;
Directory listings: 15+&lt;/p&gt;

&lt;p&gt;→ websitepublisher.ai&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>webdev</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Week 16 Dev Log: From First Customer to 56 MCP Tools — Building an AI-Native Website Publisher</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Mon, 13 Apr 2026 14:05:54 +0000</pubDate>
      <link>https://dev.to/megberts/week-16-dev-log-from-first-customer-to-56-mcp-tools-building-an-ai-native-website-publisher-511k</link>
      <guid>https://dev.to/megberts/week-16-dev-log-from-first-customer-to-56-mcp-tools-building-an-ai-native-website-publisher-511k</guid>
      <description>&lt;p&gt;I'm building WebsitePublisher.ai — a platform where AI assistants build and publish websites through MCP (Model Context Protocol) tools. This week: first paying customer, team collaboration, and some interesting architecture decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Stack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quick context: Laravel/PHP backend, dual-server DigitalOcean cluster, Redis Sentinel, MySQL, S3 for assets. The AI layer is a multi-API stack:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PAPI&lt;/strong&gt; — pages and assets&lt;br&gt;
&lt;strong&gt;MAPI&lt;/strong&gt; — entities and structured data&lt;br&gt;
&lt;strong&gt;VAPI&lt;/strong&gt; — vault/secrets management&lt;br&gt;
&lt;strong&gt;IAPI&lt;/strong&gt; — third-party integrations (Stripe, Resend, Twilio, etc.)&lt;br&gt;
&lt;strong&gt;SAPI&lt;/strong&gt; — sessions, forms, visitor auth&lt;br&gt;
&lt;strong&gt;TAPI&lt;/strong&gt; — task tracking across AI sessions&lt;br&gt;
&lt;strong&gt;AAPI&lt;/strong&gt; — scheduled automations&lt;/p&gt;

&lt;p&gt;All exposed as MCP tools. Currently 56 tools, accessible from Claude, ChatGPT, Cursor, Windsurf, GitHub Copilot, Gemini, Grok, Mistral, and n8n.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What shipped this week&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team Collaboration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our first paying customer — an agency — asked for multi-user support on day one. We shipped it within 48 hours:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Owner invites team members via email&lt;/li&gt;
&lt;li&gt;Team members get full access to all projects&lt;/li&gt;
&lt;li&gt;Magic link authentication (no passwords)&lt;/li&gt;
&lt;li&gt;Max 5 members per Agency account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Architecture decision: no per-project granularity in v1. Simpler model, ship fast, iterate based on real usage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboard Vault — Secrets Without AI Exposure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A security feature I'm particularly proud of: the Vault tab lets users manage API keys (Stripe, Resend, etc.) through the browser UI. The key insight: &lt;strong&gt;if you share an API key in an AI chat, it ends up in transcripts, logs, and context windows.&lt;/strong&gt; The Vault bypasses AI entirely — write-once, never displayed, rotate or delete only.&lt;/p&gt;

&lt;p&gt;Backend uses AES-256-GCM encryption keyed per project, so even if someone gains database access, secrets from other projects are unreadable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Language Refactor — From 4 Hardcoded Lists to Zero&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our AI Coach (a conversational website builder) needed proper i18n. The old code had 4 separate hardcoded language→string mappings scattered across the codebase. We refactored to a single CapiLanguage value object with a Redis → DB → Haiku → fallback chain:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check Redis cache&lt;/li&gt;
&lt;li&gt;Check papi_language_meta table (27 seeded languages)&lt;/li&gt;
&lt;li&gt;Ask Claude Haiku for language detection (costs ~$0.001)&lt;/li&gt;
&lt;li&gt;Fall back to English&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Result: any of the 250+ ISO 639-1 codes work automatically. Adding a new language = 1 database row.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;get_asset MCP Tool — Closing the Read Gap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We had tools to list, upload, patch, and delete assets — but no tool to read them. AI agents were doing blind find/replace via patch_asset without knowing the current file state. get_asset closes that gap: text content returned directly, binary assets as base64.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Activation Challenge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;67 signups, one paying customer. The gap is real. Our research this week showed that the friction is in the "how do I start?" moment — users sign up, see a dashboard, but don't know which AI platform to connect or how to begin.&lt;/p&gt;

&lt;p&gt;Our answer: an embedded AI coach right inside the dashboard. Uses Sonnet (not Opus — cost control), generates one concept, writes directly to the user's first project. From "I just signed up" to "I have a website" in under 2 minutes.&lt;/p&gt;

&lt;p&gt;What's next&lt;/p&gt;

&lt;p&gt;Friday release agent (AAPI-powered automated changelog + test plans)&lt;br&gt;
patch_asset optimistic concurrency (base version hash to prevent conflicts)&lt;br&gt;
CAPI language refactor retest (waiting on external tester confirmation)&lt;/p&gt;

&lt;p&gt;If you're building with MCP or interested in AI-native development tools, I'd love to connect. The MCP ecosystem is moving fast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: megberts/websitepublisher-mcp&lt;br&gt;
&lt;strong&gt;MCP Server&lt;/strong&gt;: mcp.websitepublisher.ai&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>webdev</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>How we built an MCP server that lets AI assistants publish complete websites</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Wed, 25 Mar 2026 07:53:24 +0000</pubDate>
      <link>https://dev.to/megberts/how-we-built-an-mcp-server-that-lets-ai-assistants-publish-complete-websites-3mjh</link>
      <guid>https://dev.to/megberts/how-we-built-an-mcp-server-that-lets-ai-assistants-publish-complete-websites-3mjh</guid>
      <description>&lt;p&gt;Building a website with an AI assistant usually ends the same way: you get a wall of HTML in a code block, you paste it somewhere, and then you're on your own for hosting, deployment, and every update after that.&lt;br&gt;
We wanted to fix that. So we built WebsitePublisher.ai — a platform where AI assistants don't just describe websites, they actually build and publish them.&lt;br&gt;
Here's how it works under the hood.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The core idea: AI as a first-class developer&lt;/strong&gt;&lt;br&gt;
The premise is simple. Instead of AI being a code generator that hands off to a human, we wanted AI to be the developer — with access to a real API it can call directly.&lt;br&gt;
That API needed to cover the full stack of what a website actually needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pages and assets (HTML, CSS, images)&lt;/li&gt;
&lt;li&gt;Structured data (entities, records)&lt;/li&gt;
&lt;li&gt;Forms and visitor sessions&lt;/li&gt;
&lt;li&gt;Integrations (email, SMS, payments)&lt;/li&gt;
&lt;li&gt;Scheduled tasks&lt;/li&gt;
&lt;li&gt;Vault (credentials management)
So we built it. Eight API layers, all exposed through a Model Context Protocol (MCP) server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What MCP gives us&lt;/strong&gt;&lt;br&gt;
MCP is an open protocol that lets AI assistants call tools — similar to function calling, but standardized across clients. Claude, ChatGPT, Cursor, Windsurf, GitHub Copilot, and others all support it.&lt;br&gt;
Our MCP server exposes ~55 tools. An AI can call &lt;em&gt;create_page&lt;/em&gt; with HTML content and it's live. It can call &lt;em&gt;configure_form&lt;/em&gt; and a contact form appears. It can call &lt;em&gt;create_scheduled_task&lt;/em&gt; and a nightly content refresh starts running.&lt;br&gt;
The AI doesn't need to know about hosting, DNS, or deployment. It just calls the tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The API layers&lt;/strong&gt;&lt;br&gt;
We ended up with eight layers, each with a clear responsibility:&lt;br&gt;
&lt;em&gt;PAPI (Pages &amp;amp; Assets)&lt;/em&gt; — Create, update, and version HTML pages and static assets. Includes diff-patch for surgical updates, URL fetching, and a content quality warning system.&lt;br&gt;
&lt;em&gt;MAPI (Entities &amp;amp; Data)&lt;/em&gt; — A schema-less data layer. The AI defines entities (think: database tables) and creates records. Powers everything from contact lists to leaderboards to inventory.&lt;br&gt;
&lt;em&gt;SAPI (Sessions &amp;amp; Forms)&lt;/em&gt; — Anonymous visitor sessions, form submissions, visitor authentication, and analytics. No cookies to configure — it just works.&lt;br&gt;
&lt;em&gt;VAPI (Vault)&lt;/em&gt; — Encrypted credential storage. The AI stores API keys that are then used by integrations — never exposed back to the client.&lt;br&gt;
&lt;em&gt;IAPI (Integrations)&lt;/em&gt; — A proxy engine that routes calls through stored credentials to external services. Resend, Mailgun, Stripe, Mollie, Twilio — the AI picks the integration, the vault provides the credentials.&lt;br&gt;
&lt;em&gt;AAPI (Agent API)&lt;/em&gt; — Scheduled tasks. The AI creates cron jobs that run PHP handlers on a schedule. Daily content refresh, nightly cleanup, automated data sync.&lt;br&gt;
&lt;em&gt;CAPI (Coach API)&lt;/em&gt; — A conversational intake system. Ask four questions, generate a complete website. The AI handles the conversation; the platform handles the generation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A real example&lt;/strong&gt;&lt;br&gt;
Here's what a Claude session looks like when building a site from scratch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: Build me a landing page for my consulting business. Focus on lead generation.

Claude: [calls get_skill to load WebsitePublisher context]
[calls create_page with full HTML/CSS]
[calls configure_form with name, email, message fields]
[calls setup_integration with Resend credentials]
[calls execute_integration to test email delivery]

Done — your page is live at yourproject.websitepublisher.ai.
The contact form sends leads to your inbox via Resend.
Want me to add a thank-you page or set up SMS notifications too?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No copy-paste. No deployment step. The AI did it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The interesting engineering problems&lt;/strong&gt;&lt;br&gt;
A few things that weren't obvious until we built them:&lt;br&gt;
&lt;em&gt;Multi-session coordination&lt;/em&gt;. When multiple AI sessions work on the same project in parallel, they can overwrite each other's progress. We built TAPI — an append-only task tracking system — specifically to solve this. Each session logs progress via INSERTs only. MAX(completion_pct) from history records prevents any session from accidentally rolling back another's progress.&lt;br&gt;
&lt;em&gt;Tool count limits&lt;/em&gt;. Our MCP server returns 55 tools in tools/list. Some clients have limits on how many they load. Our workaround: the get_skill tool loads a SKILL.md document that gives the AI a map of the full API — so even with five tools loaded, it can use the REST API directly for everything else.&lt;br&gt;
&lt;em&gt;Content quality detection&lt;/em&gt;. AIs occasionally send a file path instead of HTML content to create_page. We added a WarningCollector that catches this pattern and returns a structured warning before anything gets saved.&lt;br&gt;
&lt;em&gt;Authentication across API layers&lt;/em&gt;. Each layer needed a different auth model. Project tokens (wpa_) for AI access. Dashboard sessions (wps_) for humans. Admin tokens (wsa_) for visitor-facing login flows. Getting these to coexist cleanly took a few iterations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's next&lt;/strong&gt;&lt;br&gt;
We're currently in the Mistral sprint — working on SSE streaming for the conversational intake (so responses feel instant instead of batched), parallel concept generation, and getting listed in Mistral's connector directory.&lt;br&gt;
If you're building with MCP, or thinking about what "AI-native" infrastructure actually means in practice — we'd love to hear what you think.&lt;/p&gt;

&lt;p&gt;The MCP server is at mcp.websitepublisher.ai&lt;br&gt;
Full docs at websitepublisher.ai/docs&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>webdev</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
