DEV Community

Edison Flores
Edison Flores

Posted on

We got into the official MCP Registry — the parts the docs don't cover

MarketNow is now listed in the official MCP Registry (registry.modelcontextprotocol.io) as io.github.alicelabs-llc/marketnow v1.15.0 — both as a remote streamable-http server and as the npm stdio package marketnow-mcp. This post documents the submission path that actually works in 2026, and the three things the docs don't warn you about.

What's listed

name:      io.github.alicelabs-llc/marketnow
version:   1.15.0
remotes:   streamable-http → https://marketnow.site/api/mcp/
packages:  npm marketnow-mcp 1.15.0 (stdio)
repo:      github.com/alicelabs-llc/MARKETNOW
Enter fullscreen mode Exit fullscreen mode

You can verify it yourself:

curl "https://registry.modelcontextprotocol.io/v0/servers?search=io.github.alicelabs-llc"
Enter fullscreen mode Exit fullscreen mode

The entry appeared on the registry homepage's "Recently Updated" section the same day. If you build MCP tooling that consumes the registry (that's most agent frameworks now), MarketNow is discoverable from there — 8 tools covering credential verification (ATC v3, JWT/OAuth, W3C VC, MCP Card, A2A, EAT-AI, ZTA, SPIFFE, X.509), format translation, domain scam-checks, revocation status, and a search index of 68k+ security-scored MCP servers.

The submission path in 2026: no more PRs

The old workflow — open a PR against modelcontextprotocol/servers — is closed (issue #4616: "not planned"), and the current CONTRIBUTING.md of modelcontextprotocol/registry says explicitly: do not open a PR to add your server to data/seed.json. The seed file is dev-only data.

The supported path is the mcp-publisher CLI:

# 1. install (linux/amd64; brew also works)
curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_linux_amd64.tar.gz" | tar xz mcp-publisher

# 2. authenticate — GitHub PAT works headless (CI-friendly)
mcp-publisher login github -token $PAT

# 3. describe your server (mcp-publisher init gives you a template)
# 4. validate, then publish
mcp-publisher validate
mcp-publisher publish
Enter fullscreen mode Exit fullscreen mode

Namespace rules that matter:

  • GitHub auth → your server name must be io.github.<username>/* or io.github.<orgname>/*
  • Publishing under an org namespace requires being an Owner of the org (plain membership is no longer enough), and the PAT must be able to read your org role — read:org for classic PATs, "Members: Read-only" for fine-grained
  • If you control the domain your server runs on, DNS auth (site.yourdomain/*) and HTTP auth (/.well-known/mcp-registry-auth) also work — both use an Ed25519 keypair and a v=MCPv1 proof record at the apex

Three gotchas the docs don't cover

1. description is capped at 100 characters — the schema won't tell you. My first validate attempt passed local schema checks and failed server-side with a 422 expected length <= 100 on body.description. The JSON schema published at static.modelcontextprotocol.io doesn't encode the limit. Keep it capability-focused: "Verify AI agent credentials, translate 9 formats, check scam domains, search 68k+ MCP servers." — 95 chars, done.

2. Remote URLs are globally unique — and a deprecated entry still holds yours. MarketNow was first published to the registry in June/July under a personal GitHub account we no longer use. One of those old entries registered https://marketnow.site/api/mcp as an sse remote, and even though that entry is marked deprecated, the URL remains claimed: my publish attempt failed with remote URL ... is already used by server io.github.edgarfloresguerra2011-a11y/marketnow-mcp.

The workaround: the endpoint also serves at the trailing-slash variant https://marketnow.site/api/mcp/ (verified with a live initialize handshake), which the registry treats as a distinct URL. That's what's published now. I also opened an issue (modelcontextprotocol/registry#1678) asking the maintainers to release the canonical URL and deprecate the two stale entries from the old account — with the apex v=MCPv1 TXT record as proof of domain control.

3. mcpName in package.json must match your registry name exactly. The registry validates that the npm package version you declare actually carries mcpName: <your registry name>. marketnow-mcp@1.15.0 already carried mcpName: io.github.alicelabs-llc/marketnow, so the npm leg passed on the first try. If you rename namespaces, you need a new npm release first.

What this changes for users

Two install paths, one registry entry:

  • Remote (no install): point any MCP client that speaks streamable-http at https://marketnow.site/api/mcp/ — free, no auth for the public tools, no data leaves the request
  • Local stdio: npx marketnow-mcp — same 8 tools, runs wherever your client runs

Both now show up for clients and catalogs that resolve servers through the official registry, which is the distribution channel the ecosystem is consolidating on.

If you're publishing your own server: budget an hour, write the 100-char description first, check whether some old entry already claims your remote URL, and use a PAT if you want the org namespace. That's the whole game.

Top comments (0)