modelcontextprotocol / modelcontextprotocol/registry

Publish 403s for org namespace despite Owner role + public membership (io.github.<org>/*)

Open
#1,649 0 comments 1 reaction 0 assignees View on GitHub

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/JohnCari204).

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)

  1. mcp-publisher init → generated server.json with "name": "io.github.librocat/librocat"; mcp-publisher validate server.json passes.
  2. mcp-publisher login github (interactive device flow) → succeeds, confirms identity as JohnCari.
  3. 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.
  4. Ruled out the org's classic OAuth App access-restriction policy (Third-party accessOAuth app policy) — that governs classic OAuth Apps, and the registry's login uses a GitHub App (MCP Registry Login (Prod), client id Iv23liUydBbI7Z2Q9bOZ), not a classic OAuth App.
  5. Noted that MCP Registry Login (Prod) is not installed on the librocat org (only personally authorized via the device flow) — github.com/organizations/librocat/settings/installations shows only an unrelated app (Vercel) installed. authentication.mdx doesn't document org installation as a requirement for the interactive login path (only for CI-style Personal Access Tokens needing read:org / fine-grained Members: 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-publisher version: 1.8.1 (commit f52dc852, 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.