MCP Registry server.json Validator
Validate a server.json manifest against the official Model Context Protocol Registry schema before publishing — required fields, name format, package/remote transports, icons, and repository metadata. Runs entirely in your browser.
🔒 Runs entirely in your browser — no data is ever sent anywhereWhat server.json is for
The MCP Registry is a central directory MCP clients use to discover and install servers. To list a server there, its author writes a server.json manifest describing the server's name, version, and how to run it — either as an installable package (npm, PyPI, an OCI image, a NuGet package, or an MCPB bundle) or as a hosted remote endpoint reachable over HTTP. The official publishing tool, mcp-publisher, reads this file directly; getting its shape wrong is the most common reason a publish attempt fails or a listed server can't actually be launched by a client.
What this tool checks
Paste a server.json document and it checks the top-level required fields (name in reverse-DNS namespace form like io.github.user/weather, a 1-100 character description, and a version that isn't a range or the literal "latest"), then walks every packages[] entry (registryType, identifier, and a transport — stdio, streamable-http, or sse — plus a rejected-if-"latest" version and a 64-character hex fileSha256 when present, flagged as required for MCPB packages specifically), every remotes[] entry (must use streamable-http or sse, never stdio, since a remote is by definition reachable over the network), any repository metadata (url and source), and any icons (HTTPS-only src, a closed set of MIME types, and WxH-or-"any" size strings). It also flags the case where neither packages nor remotes is present — a listing a client has no actual way to run or connect to.
Frequently asked questions
What's the difference between packages and remotes?
packages[] describes something a client downloads and runs locally — an npm/PyPI/OCI/NuGet package or an MCPB bundle, launched over stdio or a local HTTP transport. remotes[] describes a server that's already running somewhere and reachable directly over the network via streamable-http or sse — there's nothing to install. A stdio transport is only valid inside packages[]; it's rejected under remotes[].
Why is my version rejected even though it looks like a normal version?
The registry requires a single, specific version — version ranges like ^1.2.3, ~1.2.3, >=1.2.3, or 1.x are rejected, and packages[].version additionally rejects the literal string "latest" outright (the schema explicitly forbids it). This tool flags range-like patterns as a warning at the top level and as a hard error inside packages[].
When is fileSha256 actually required?
The official schema marks it required for MCPB packages specifically, and optional for every other registry type — though when it is present for any package type, clients are expected to verify the downloaded file's hash against it before running the package.
Is this the same as running mcp-publisher --dry-run?
No — this checks your manifest's shape against the same published JSON Schema mcp-publisher validates against, entirely in your browser, before you run the official CLI. It's a quick first pass, not a replacement for actually publishing.
Is my pasted data sent anywhere?
No. Parsing and validation both run locally in your browser with plain JavaScript — nothing you paste is transmitted or stored.
Related AI tools
Token Counter
Count tokens for GPT-5, GPT-4o, and older OpenAI models as you type, using the exact same tokenizer OpenAI's API uses.
Citations Viewer
Paste a Claude Citations API response to see the answer text with each cited passage highlighted and matched to its source document, location, and quoted text.
Signature Validator
Paste a Gemini 3 request or response to check its function-calling turns for missing thoughtSignature fields, functionResponse ordering mistakes, and missing id echoes — the exact structural issues that cause a 400 error or silently broken multi-turn tool use.
MCP Validator
Paste a Model Context Protocol tool definition — a single tool object, an array, or a full tools/list response — to check it against the spec: missing name or inputSchema, a name most clients will reject, a required property that doesn't exist, malformed annotations, and more.
Bracketly is free and open-source. If this tool saved you time, consider supporting it.
☕ Buy me a coffee