Skip to content

Receive "title":"Bad Request","status":400,"detail":"Failed to publish server" for package not found #553

Description

@sfc-gh-jsummer

Running mcp-publisher publish in GitHub action after successful github-oidc login returns
Error: publish failed: server returned status 400: {"title":"Bad Request","status":400,"detail":"Failed to publish server","errors":[{"message":"registry validation failed for package 0 (snowflake-labs-mcp): PyPI package 'snowflake-labs-mcp' not found (status: 404)"}]}

However, snowflake-labs-mcp exists in PyPI.

Expected behavior
Server should be successfully published.

Logs
Error: publish failed: server returned status 400: {"title":"Bad Request","status":400,"detail":"Failed to publish server","errors":[{"message":"registry validation failed for package 0 (snowflake-labs-mcp): PyPI package 'snowflake-labs-mcp' not found (status: 404)"}]}

Additional context
README contains
<!-- mcp-name: io.github.Snowflake-Labs/mcp -->.

server.json is attached.
server.json

Github Action workflow file attached.
publish-mcp.yml

Activity

  1. pree-dew commented on Sep 26, 2025

    @pree-dew
    Contributor

    @sfc-gh-jsummer Will check the issue and get back on this. CC @tadasant @rdimitrov

  2. pree-dew commented on Sep 26, 2025

    @pree-dew
    Contributor

    I was able to publish my package

    mcp-publisher publish server.json
    Publishing to https://registry.modelcontextprotocol.io...
    ✓ Successfully published
    ✓ Server Id xxx version 0.1.1
    

    I checked your package also exists and I am able to find it via API. It looks like this version was recently released. When publish action was happening there might be these issues because of which it might have happened

    1. CDN propagation delays - Different PyPI mirrors/CDNs might not have the package yet
    2. Regional availability issues - The package might not be available from all geographic locations yet.

    Can you try to publish it again?

  3. sfc-gh-jsummer commented on Sep 26, 2025

    @sfc-gh-jsummer
    Author

    Ah perfect. It successfully published now:

    Run mcp-publisher publish
    Publishing to https://registry.modelcontextprotocol.io.../
    ✓ Successfully published
    ✓ Server Id cd9210af-efe4-4112-97c2-32e2a6f25813 version 1.3.3
    

    Thanks for the help!

  4. loretoparisi commented on Oct 1, 2025

    @loretoparisi

    I had the same error in my mcp registry cli package, I had to update the api to make it working back!

    Image

    Interestingly I see a number of different version of deployments for the same package from the API, so I will collect them and make as default the latest version, or support all versions available.

  5. loretoparisi commented on Oct 1, 2025

    @loretoparisi

    Okay, I have added versions support in version 0.3.2! Far better now!
    Image

  6. samdoran commented on Feb 19, 2026

    @samdoran

    I am seeing this same error when trying to publish from GitHub actions. The release does exist in the PyPI API, so I don't think it's a CDN caching issue. I am able to publish manually without issue.

    Failed job run logs:

    Run ./scripts/publish_mcp_registry.py
    Error: Failed to publish to MCP Registry
    Error: publish failed: server returned status 400: {"title":"Bad Request","status":400,"detail":"Failed to publish server","errors":[{"message":"registry validation failed for package 0 (linux-mcp-server): PyPI package 'linux-mcp-server' not found (status: 404)"}]}
    
    Publishing version: refs/tags/1.3.2
    Downloading mcp-publisher from https://github.com/modelcontextprotocol/registry/releases/download/v1.4.0/mcp-publisher_linux_amd64.tar.gz
    Updating version in server.json
    Authenticating to MCP Registry via GitHub OIDC
    Publishing server to MCP Registry
    Error: Process completed with exit code 1.
    

    The release, 1.3.2 in this case, does exist in the PyPI API.

    > https https://pypi.org/pypi/linux-mcp-server/json | jello "list(_['releases'])"
    [
      "0.1.0.dev0",
      "0.1.0a1",
      "0.1.0a2",
      "0.1.0a3",
      "0.1.0a4",
      "1.0.0",
      "1.0.1",
      "1.1.0",
      "1.2.0",
      "1.2.1",
      "1.3.0",
      "1.3.1",
      "1.3.2"
    ]
    

    Do you have any tips on the best way to troubleshoot this?

  7. theUpsider commented on Apr 29, 2026

    @theUpsider

    I too seem to be facing caching issues. when first using the wrong "mcpName": "io.github.theupsider/lsp-mcp", and then replacing it with "mcpName": "io.github.theUpsider/lsp-mcp", (Note the small typo for the name), the request comes back as

    Publishing to https://registry.modelcontextprotocol.io...
    Error: publish failed: server returned status 400: {"title":"Bad Request","status":400,"detail":"Failed to publish server","errors":[{"message":"registry validation failed for package 0 (@theupsider/lsp-mcp): NPM package ownership validation failed. Expected mcpName 'io.github.theUpsider/lsp-mcp', got 'io.github.theupsider/lsp-mcp'"}]}

    Clearly there is a cache at work here that just got the first npm package and sits on it ever since.

  8. sronix commented on Jul 1, 2026

    @sronix
    Contributor

    The 404 here comes from the validator fetching the version-specific PyPI URL (/pypi/{name}/{version}/json) and reporting any non-200 as "package not found". So a package that exists but whose requested version is missing (or just isn't up yet) gets reported as if the whole package is gone. The npm validator does the same thing.

    Quick repro, a real package at a version that doesn't exist:

    PyPI package 'requests' not found (status: 404)
    

    where it could say:

    PyPI package 'requests' exists, but version '99.99.99' was not found (status: 404). A newly published release can take a moment to appear on PyPI. Wait and retry, or publish version '99.99.99' before registering it
    

    The fix, on a version 404, sends a HEAD to the package-level endpoint to tell "package missing" from "version missing", and reports 429/5xx as transient instead of "not found". Same probe-and-classify pattern as the existing cargo validator. Scoped to error surfacing only, no auto-retry.

    Happy to open a PR if this one's unclaimed.

  9. added a commit that references this issue on Jul 12, 2026
    d813d2b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions