◉CLAUDE LABJP
●2.1.301 — Adds the vim % motion, LaTeX math rendering in the VS Code panel, and a retry-watchdog limit for usage-limit waits (10/15)●2.1.299 — Conversations over 200K tokens left idle about 54 minutes get compacted; MCP allow rules now match only the server they name●SONNET 4.5 — Retires on the Claude API on 11/30, 45 days left. Migrate to Sonnet 5.5●WINDOWS — Reports say hooks break silently only on Japanese-locale Windows; check the character encoding first●FAST MODE — Opus 5.5 fast mode is out of research preview and no longer needs the beta header (10/15)●NEW — I Put a Ten-Line Promise File at the To…●2.1.301 — Adds the vim % motion, LaTeX math rendering in the VS Code panel, and a retry-watchdog limit for usage-limit waits (10/15)●2.1.299 — Conversations over 200K tokens left idle about 54 minutes get compacted; MCP allow rules now match only the server they name●SONNET 4.5 — Retires on the Claude API on 11/30, 45 days left. Migrate to Sonnet 5.5●WINDOWS — Reports say hooks break silently only on Japanese-locale Windows; check the character encoding first●FAST MODE — Opus 5.5 fast mode is out of research preview and no longer needs the beta header (10/15)●NEW — I Put a Ten-Line Promise File at the To…
Articles/Claude Code
⟐ Claude Code/2026-07-18Advanced

The MCP Server I Declared Vanished from the List — Designing Config for a Namespace You Share with the Vendor

When a vendor reserves an MCP server name, your .mcp.json declaration goes quiet instead of failing. Here is the preflight check and prefix convention I use to turn that silent gap into a loud stop before an unattended run.

MCP54Claude Code264unattended runsconfig managementpreflight4

✦ Premium Article

One line in a changelog stopped me: "Claude Browser" is now reserved as an MCP server name. Like "Claude Preview," a user-configured server cannot register under it.

My first thought was not about blast radius. It was about an assumption I had been carrying without examining it. I had always treated the names in .mcp.json as identifiers I owned. A local file. A string I typed. Nothing to collide with.

That was wrong. Those names live in a namespace I share with the vendor.

The reserved name might already be in your config file

As an indie developer running content automation across four sites, my .mcp.json files grew organically. I named servers after what they did: github, browser, sheets. Short and readable, chosen for no deeper reason than that.

Short, readable names are attractive to vendors too. That is exactly why they get reserved.

This is a different failure class from a dependency version conflict. A package conflict fails at install time, in red text. Here, my file does not change by a single byte. Only the interpretation of it changes, on the other side of an update. Looking at the file tells you nothing.

A name collision shows up as absence, not as an error

The first thing I wanted to know was what actually comes back when a declared name hits a reserved one.

I expected an explicit refusal at startup. "This name is unavailable" would have been enough — I could stop there. As far as I could observe, no such line surfaced. The server simply does not appear in the /mcp listing.

Absence does not carry an error message.

The texture is familiar. It is the same feeling as a setting you wrote being ignored while the screen stays perfectly calm, and you cannot tell for a while whether the fault is in your syntax or in the implementation. The difference is that a timeout eventually shows itself if you wait. A name collision never does.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦Catch a missing MCP server before the session starts with one command, instead of debugging it days later
✦Understand why an unattended run finishes with SUCCESS when a tool quietly disappears, and turn it fail-loud with roughly 60 lines of Node
✦Apply a server-name prefix convention and reserved-name list across several projects in the same shape
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $10 for lifetime access
View Membership →

Related Articles

⟐ Claude Code2026-09-12
My overnight crawl never came back, and the reason was that WebFetch had no ceiling on how long it would wait
Claude Code v2.1.268 gives WebFetch a 300-second deadline. Here is how an unattended run stalls on a server that never closes its response, why CLAUDE_CODE_WEBFETCH_DEADLINE_MS=0 does not mean 'do not wait', and how I now place two separate ceilings.
⟐ Claude Code2026-09-04
The ~/.claude.json Rollback Is Fixed in v2.1.259. Putting Back What It Erased Is Still Your Job
Concurrent sessions used to silently roll back each other's ~/.claude.json changes. v2.1.259 fixed that, but nothing restores the trust settings and MCP servers you already lost. Here is how I find and rebuild them, with a small key-path diff script.
⟐ Claude Code2026-09-01
Once I passed a dozen MCP servers, I stopped trusting the startup list
Only some of the servers that say connection failed at startup are ones you can actually fix. Here is a probe that separates no-response, launch failure, and protocol rejection, measured across a 14-server fleet where sequential 22.03s became parallel 5.09s, and where trimming the deadline quietly turned healthy servers into failures.