Skip to content

Support crates.io as a package registry type #1055

Description

@Wolfe-Jam

Summary

Request to add "registryType": "cargo" (or "crates") support to the MCP Registry, enabling Rust-based MCP servers published on crates.io to be listed.

Context

The registry currently supports 5 package types: npm, pypi, nuget, oci, and mcpb. There is no path for Rust crates published on crates.io.

Meanwhile, crates.io has ~1,800 MCP-related packages — a significant and growing ecosystem with no direct route to the official registry.

Proposed server.json

{
  "packages": [
    {
      "registryType": "cargo",
      "identifier": "rust-faf-mcp",
      "version": "0.2.2",
      "transport": {
        "type": "stdio"
      }
    }
  ]
}

Verification approach

Similar to npm/PyPI — the registry could validate against the crates.io API:

GET https://crates.io/api/v1/crates/{name}/{version}

This returns package metadata including repository URL, which can be cross-referenced with server.json fields.

For mcpName verification, Cargo.toml supports [package.metadata] for custom fields:

[package.metadata]
mcpName = "io.github.username/server-name"

Use case

I maintain 5 MCP servers across npm (3), PyPI (1), and crates.io (1). The Rust server (rust-faf-mcp) is the only one that can't be listed via its native package registry. Currently the workaround is MCPB binary packaging, but native crates.io support would be cleaner and consistent with how npm/PyPI are handled.

Ecosystem size

  • ~1,800 MCP-related crates on crates.io
  • Major Rust MCP SDKs: rmcp (official, 1.1+), rust-mcp-sdk (87k downloads)
  • Rust MCP servers growing fast — same trajectory npm MCP servers had 6 months ago

Activity

  1. rdimitrov commented on Apr 24, 2026

    @rdimitrov
    Member

    Good idea. Rust is a gap worth closing, crates.io is a legitimate ecosystem. The process for adding a new package registry type is documented at docs/contributing/add-package-registry.md, and happy to review a PR. Tagging help wanted.

  2. Wolfe-Jam commented on Apr 26, 2026

    @Wolfe-Jam
    ContributorAuthor

    Thanks Rado — appreciated.

    I'll take this on, following the contributing docs, targeting a PR in ~2 weeks (schema + openapi + cargo validator + publish-cargo.md).
    rust-faf-mcp is on hand as the first real-world test case when it lands.

    If the spec moves while I work on it, happy to coordinate.

  3. 0xZOne commented on Apr 30, 2026

    @0xZOne

    +1 — happy to offer perfetto-mcp-rs (repo) as a second real-world test case alongside rust-faf-mcp once cargo support lands.

    Concrete shape we'd register:

    {
      "name": "io.github.tooluse-labs/perfetto-mcp-rs",
      "description": "MCP server for Perfetto trace analysis (PerfettoSQL queries on .perfetto-trace / .pftrace files)",
      "repository": { "url": "https://github.com/tooluse-labs/perfetto-mcp-rs", "source": "github" },
      "version": "0.13.0",
      "packages": [
        {
          "registryType": "cargo",
          "identifier": "perfetto-mcp-rs",
          "version": "0.13.0",
          "transport": { "type": "stdio" }
        }
      ]
    }

    Verification via [package.metadata] mcpName = "..." in Cargo.toml as proposed reads clean — no extra step beyond cargo publish. Already on Trusted Publishing via rust-lang/crates-io-auth-action@v1 so the cargo→registry path is mature on the publishing side.

    Will plumb the mcpName metadata field as soon as the cargo validator merges. Happy to provide CI logs / cargo metadata output if useful for the validator design.

    (Edit 2026-04-30: repo moved from 0xZOne/perfetto-mcp-rs to tooluse-labs/perfetto-mcp-rs and bumped to v0.13.0 since the original comment.)

  4. Wolfe-Jam commented on May 24, 2026

    @Wolfe-Jam
    ContributorAuthor

    @0xZOne — appreciated, and perfetto-mcp-rs is a great second case. Two independent real-world Rust servers (yours + rust-faf-mcp) is exactly the validation surface this needs. Good to hear the [package.metadata] mcpName approach reads clean on your side too — that's the verification path #1207 implements. I'll take you up on the cargo metadata / CI-logs offer if the validator design needs it.

    Quick status for anyone landing here: #1207 is implemented and green — cargo validator + tests (177 lines), server.schema.json + OpenAPI + docs updated, constants wired in. CI passing (Build/Lint/Validate + Tests), mergeable, no conflicts. Review-ready since mid-May.

    @rdimitrov — whenever you have review bandwidth, it's ready for a pass. The case is a little stronger now: two real servers lined up to register the moment it lands (rust-faf-mcp + perfetto-mcp-rs), against the ~1,800 MCP-related crates already on crates.io. Happy to adjust anything to fit the validator design — no rush, just flagging it's green and waiting.

  5. added a commit that references this issue on Jun 1, 2026
    1f3be53
  6. Wolfe-Jam commented on Jun 1, 2026

    @Wolfe-Jam
    ContributorAuthor

    @0xZOne — quick update on PR #1207 (the cargo registry-type validator you offered perfetto-mcp-rs as a test case for):

    Review-addressed, live test green against rust-faf-mcp v0.3.1. Mergeable, awaiting maintainer review.

    Cargo-specific gotcha worth knowing before any version bump: crates.io strips HTML comments during README rendering (unlike PyPI/NuGet). The <!-- mcp-name: ... --> hidden form doesn't work — the token must be visible markdown text. PR #1207's package-types.mdx documents this; the rust-faf-mcp v0.3.1 README is a working reference.

    No rush — flagging ahead so you don't burn a release on the hidden form.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

help wantedExtra attention is needed

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions