Rust MCP Preflight

io.github.Wolfe-JamPublished by GitHub account Wolfe-Jamv0.1.3Updated Nov 7, 2026

Check an MCP Registry listing before you publish: README mcp-name line, server.json, name.

The publisher's own server: Preflight

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Checks an MCP Registry listing before publishing: the README mcp-name line, server.json publish rules and the server name.

What you can do
  • Run a full preflight on the text of a server.json file
  • Check server.json against the publish rules offline, including exact package versions, transport and identifier format
  • Check the mcp-name line in a specific crate version's README as served by crates.io
  • Check the server name's publish rules, whether it is already listed, and which namespace login it needs
  • Report one line per check with pass, warning or failure results
When to use it
Use it when preparing to publish a Rust MCP server to the official MCP Registry, especially after cargo publish, to catch problems before the crate version is fixed and cannot be changed. Also useful in CI to gate a publish step.
Requirements
A local binary run over stdio, installed with cargo binstall, cargo install, or a prebuilt release binary; it must be on your PATH. Network access to crates.io, the official registry and the GitHub users API. No keys or accounts are needed.
Before you install
It only reads remote data and publishes nothing. If crates.io or the README cannot be reached, the README check counts as a failure, so a CI run will not pass without network access. The README and crates.io rules apply only to cargo packages; other package types get only the shared rules.

Installation

In SourceWeft

  1. Open Rust MCP Preflight in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Rust MCP Preflight

Check an MCP Registry listing before you publish it.

mcp-publisher validate checks the shape of server.json. It doesn't check that the registry will accept your package: that only happens at mcp-publisher publish, after the crate version is already on crates.io and can't be changed. Rust MCP Preflight runs those checks first.

  • The README line. Fetches the README crates.io serves for the exact crate version and looks for mcp-name: <your server name>, matched the way the registry matches it (ported from the registry's own validator, internal/validators/registries/cargo.go; the registry's validators haven't changed since this port, checked 2026-11-06). Catches the line hidden in an HTML comment (crates.io strips comments), the line glued to the next word, and a near miss such as the wrong case.
  • server.json. The rules mcp-publisher publish applies: $schema, the server name, and for every package exact versions (no latest, no ranges), the transport and no spaces in the identifier. For cargo packages also the crate version, no fileSha256 and registryBaseUrl. Plus warnings for runtimeHint, mismatched versions, and placeholders left over from mcp-publisher init.
  • The server name. The rules publish applies, whether it's already listed, and which login its namespace needs (including GitHub organizations, which login github can't publish to yet, and the two ways that work: GitHub Actions OIDC or a token).

It only reads: crates.io, the official registry and the GitHub users API. It publishes nothing and needs no keys.

Install

Prebuilt, in seconds (needs cargo-binstall):

sh
cargo binstall rust-mcp-preflight

From source (compiles, a few minutes the first time):

sh
cargo install rust-mcp-preflight

Or download the binary for your platform from the release assets: Linux (x86_64, aarch64), macOS (Intel, Apple silicon) and Windows (x86_64), each with a .sha256 file. Prebuilt binaries start with 0.1.2; for an earlier version, cargo binstall falls back to QuickInstall or compiling from source.

Use it from a terminal or CI

sh
rust-mcp-preflight server.json

It prints one line per check. It exits 0 when ready, 1 if anything fails, and 2 if the file can't be read:

Preflight: server.json  PASS  name "io.github.VoidNullable/lific" is a valid server name  PASS  packages[0]: cargo crate "lific"  WARN  VoidNullable is a GitHub organization. `mcp-publisher login github` can't publish to org namespaces yet (registry #1468). As an Owner of the organization, publish from GitHub Actions (`mcp-publisher login github-oidc`), or with a token: ...  INFO  already listed: latest 2.11.1 (active). Your next publish needs a new version number  PASS  README of lific 2.11.1 on crates.io contains `mcp-name: io.github.VoidNullable/lific`
Ready: no failures, 1 warning(s).

Use it from an MCP client

Run with no arguments, it serves MCP over stdio. Each client below starts it with the command rust-mcp-preflight, so the binary must be on your PATH (cargo binstall and cargo install put it in ~/.cargo/bin).

Claude Code

sh
claude mcp add preflight -- rust-mcp-preflight

goose (extensions): for one session,

sh
goose session --with-extension "rust-mcp-preflight"

or for every session, in ~/.config/goose/config.yaml:

yaml
extensions:  preflight:    name: preflight    cmd: rust-mcp-preflight    args: []    enabled: true    type: stdio    timeout: 300

VS Code (MCP configuration): adds it to your user profile,

sh
code --add-mcp '{"name":"preflight","type":"stdio","command":"rust-mcp-preflight"}'

or for one workspace, in .vscode/mcp.json:

json
{ "servers": { "preflight": { "type": "stdio", "command": "rust-mcp-preflight" } } }

Cursor (MCP): in ~/.cursor/mcp.json, or .cursor/mcp.json in a project:

json
{ "mcpServers": { "preflight": { "type": "stdio", "command": "rust-mcp-preflight" } } }

Any other client that runs a local MCP server: the same command, rust-mcp-preflight, over stdio.

ToolWhat it checks
preflightEverything below, from the text of server.json
check_server_jsonThe publish rules (offline)
check_readmeThe mcp-name: line in one crate version's README on crates.io
check_nameThe name's publish rules, listing and namespace login

A result with a FAIL has isError set, like the CLI's exit 1: the check ran, and the listing isn't ready.

Where it fits

The order is: cargo publish (with the line in the README), then rust-mcp-preflight server.json, then mcp-publisher login github and mcp-publisher publish.

The full walk-through: Listing a Rust MCP server in the official MCP Registry.

The README check and the crates.io rules are for cargo packages. Other package types (npm, PyPI, mcpb and so on) get the shared rules, and their registry's own checks are listed as not run.

If crates.io or the README can't be reached, the README counts as not checked and the result is a failure, so a CI run never passes on a README it didn't see.

Links

License

MIT


More about me and my work: wolfejam.dev/info

[Business card · Get yours →]

Source: README.md at commit 051eca4

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

3
  1. v0.1.3LatestNov 7, 2026
  2. v0.1.2Nov 4, 2026
  3. v0.1.1Nov 3, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Preflight integrations