DEV Community

Bracketly
Bracketly

Posted on

Before You Run mcp-publisher, Check Your server.json Actually Matches the Schema

Before You Run mcp-publisher, Check Your server.json Actually Matches the Schema

The MCP Registry gives every Model Context Protocol server a home — a central place clients can search to discover and install one. To get listed, you write a server.json manifest and hand it to the official mcp-publisher CLI. The manifest looks simple: a name, a description, a version, and either a package a client can install or a remote endpoint it can connect to directly. In practice it's easy to get subtly wrong in ways that only surface when publishing fails or, worse, when a client can't actually launch the server it just installed.

A few gotchas stood out once I read the schema closely. The name field isn't just any string — it has to be reverse-DNS namespace form with exactly one slash, like io.github.user/weather, and it's capped at 200 characters. description is capped at 100 — tighter than you'd guess, easy to blow past if you're used to writing a normal sentence. Every package's version explicitly rejects the literal string "latest" — the schema forbids it outright, not just as a style suggestion — and version ranges like ^1.2.3 or 1.x are rejected too, since the registry wants one specific, resolvable version. And the two ways of describing how to reach a server — packages for something a client installs and runs locally, remotes for something already running somewhere reachable over HTTP — aren't interchangeable: a remotes entry can't use a stdio transport, because there's nothing local to spawn.

None of that is exotic once you know it, but the tooling to catch it before you publish has been entirely CLI-based — mcp-publisher --dry-run, or a handful of npm packages that assume you're comfortable running a script. There wasn't a place to just paste your manifest and see what's wrong.

So that's what this is: paste a server.json and get every field checked against the registry's actual JSON Schema — name format, description/version limits, package and remote transports, fileSha256 (required specifically for MCPB packages, optional otherwise), icons, and repository metadata — with the schema-mandated rejections (like "latest") flagged as hard errors and softer conventions flagged as warnings.

Free, runs entirely in your browser, nothing you paste leaves your machine: bracketly.pages.dev/tools/mcp-server-json-validator

Top comments (0)