modelcontextprotocol / modelcontextprotocol/registry
Publish 403s for org namespace despite Owner role + public membership (io.github.<org>/*)
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 7.3k
- Forks
- 994
- Avg merge
- 4d 12h
- Merged PRs (30d)
- 19
Description
Summary
mcp-publisher publish returns 403 for an organization namespace (io.github.librocat/librocat) even though both documented prerequisites in docs/modelcontextprotocol-io/authentication.mdx are met: I am the sole Owner of the librocat GitHub org (not just a member), and org membership visibility is Public (confirmed independently via the unauthenticated GitHub API: GET /orgs/librocat/public_members/JohnCari → 204).
Error
Error: publish failed: server returned status 403: {"title":"Forbidden","status":403,"detail":"You do not have permission to publish this server. You have permission to publish: io.github.JohnCari/*. Attempting to publish: io.github.librocat/librocat. If you're trying to publish to a GitHub organization, you may need to make your organization membership public in your GitHub settings: ..."}
What I checked/tried (5 attempts across 2 browser sessions)
mcp-publisher init→ generatedserver.jsonwith"name": "io.github.librocat/librocat";mcp-publisher validate server.jsonpasses.mcp-publisher login github(interactive device flow) → succeeds, confirms identity asJohnCari.mcp-publisher publish→ 403 as above. Repeated with a fresh login each time (5 times total), including after:- Flipping org membership from Private to Public in GitHub org settings (
github.com/orgs/librocat/people), verified via the public API as above. - A several-minute wait for possible propagation delay.
- A full browser restart, to rule out stale cookies/session cache client-side.
- Flipping org membership from Private to Public in GitHub org settings (
- Ruled out the org's classic OAuth App access-restriction policy (
Third-party access→OAuth app policy) — that governs classic OAuth Apps, and the registry's login uses a GitHub App (MCP Registry Login (Prod), client idIv23liUydBbI7Z2Q9bOZ), not a classic OAuth App. - Noted that
MCP Registry Login (Prod)is not installed on thelibrocatorg (only personally authorized via the device flow) —github.com/organizations/librocat/settings/installationsshows only an unrelated app (Vercel) installed.authentication.mdxdoesn't document org installation as a requirement for the interactive login path (only for CI-style Personal Access Tokens needingread:org/ fine-grainedMembers: Read-only), so I didn't want to grant broader org access speculatively without knowing it's actually needed — flagging this as a possible missing requirement/doc gap if it turns out to be the real cause.
Expected
Given I'm the org's sole Owner with public membership, mcp-publisher publish should succeed for io.github.librocat/*, per the documented rules in authentication.mdx.
Environment
mcp-publisherversion: 1.8.1 (commitf52dc852, built 2026-08-06)- Auth method: GitHub (interactive device flow)
- Target namespace:
io.github.librocat/librocat - Personal namespace that does work:
io.github.JohnCari/*
Happy to provide more detail (org id, timestamps of attempts, etc.) if useful.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with docs/modelcontextprotocol-io/authentication.mdx and reproduce the failure using mcp-publisher login github followed by mcp-publisher publish for an io.github. namespace. Compare the documented public-membership and Owner requirements with the registry's authorization behavior; done means an eligible organization owner can publish successfully without the 403.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github, go
- Domain
- authorization, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100