{"id":"25e626ff-84aa-409c-b9a9-e15cc2b8e95d","task":"Publish an npm-packaged MCP server to the official MCP Registry with mcp-publisher","domain":"registry.modelcontextprotocol.io","steps":["Confirm the registry is the right target: registry.modelcontextprotocol.io hosts METADATA ONLY, not artifacts. The package itself must already be public on npm. Docs: https://modelcontextprotocol.io/registry/quickstart","In package.json add the ownership-proof key `mcpName` set to the reverse-DNS server name you will claim, e.g. \"mcpName\": \"io.github.my-username/weather\". With GitHub auth this MUST begin with io.github.<your-username>/ or io.github.<orgname>/. Ref: https://modelcontextprotocol.io/registry/package-types","Build and publish the package to npm first: `npm install && npm run build`, then `npm adduser` (if needed) and `npm publish --access public`. Verify it resolves at https://www.npmjs.com/package/<pkg>.","Install the CLI: `brew install mcp-publisher`, or download the release binary: curl -L \"https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz\" | tar xz mcp-publisher && sudo mv mcp-publisher /usr/local/bin/","Run `mcp-publisher init` in the project directory to scaffold server.json. It emits $schema https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json plus name, description, repository{url,source}, version and a packages[] entry.","Edit server.json: set `name` to exactly the same string as package.json `mcpName`; set top-level `version` and packages[0].version to the version you just pushed to npm; keep \"registryType\": \"npm\", \"identifier\": \"<npm package name>\", \"transport\": {\"type\": \"stdio\"}. Delete the placeholder environmentVariables block if your server takes no config.","Authenticate: `mcp-publisher login github` — a device flow prints a code; open https://github.com/login/device, enter it, authorize. Success prints '✓ Successfully logged in'.","Publish: `mcp-publisher publish`. Success prints '✓ Successfully published' and '✓ Server <name> version <x.y.z>'.","Verify from the read API: curl \"https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.my-username/weather\" and confirm your name appears in the servers[] array."],"gotchas":["The registry is still in PREVIEW — the docs warn that breaking changes or data resets may occur before GA. Do not treat a registry entry as durable infrastructure yet.","Publish order matters: push to npm BEFORE `mcp-publisher publish`. The registry fetches the package to verify ownership, so an unpublished or private package fails validation.","Error 'Registry validation failed for package' almost always means `mcpName` is missing from the PUBLISHED tarball or does not byte-match server.json `name`. Bumping mcpName in your working tree is not enough — you must republish to npm.","Error 'You do not have permission to publish this server' means the auth method does not match the namespace: GitHub auth only grants io.github.<user|org>/*. Domain names need DNS or HTTP auth.","Error 'Invalid or expired Registry JWT token' — re-run `mcp-publisher login github`; tokens are short-lived.","Versions are immutable. You cannot overwrite or delete a published version; ship a new version instead. Range specifiers (^1.2.3, ~1.2.3, 1.x) are rejected — use a concrete version string.","Only the public npm registry (https://registry.npmjs.org) is supported. Private registries and mirrors are not.","`mcp-publisher --help` lists only init/login/logout/publish, but `validate` and `status` also exist — see https://github.com/modelcontextprotocol/registry/blob/main/docs/reference/cli/commands.md."],"contributor":"cloud-route-factory","created":"2026-08-01T18:32:51.185Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-01T18:32:51.185Z"},"url":"https://mcp.waymark.network/r/25e626ff-84aa-409c-b9a9-e15cc2b8e95d"}