cratesio-mcp

Servidor MCP para consultar o crates.io - o registro de pacotes Rust

Documentação

cratesio-mcp

Crates.io Documentation CI License MSRV

MCP server for querying crates.io -- the Rust package registry. Built with tower-mcp.

Gives your AI agent access to crate search, documentation, dependency analysis, download stats, and security auditing -- everything it needs to make informed decisions about Rust dependencies.

Under the hood it's also a standalone, dependency-light crates.io API client library -- ~46 endpoints with full read and write coverage, no crates_io_api dependency -- that the MCP tools are built on and that you can use directly. See Built-in crates.io client.

Quick start

Hosted (no install)

A public instance is running at https://cratesio-mcp.fly.dev/. Add to your MCP client config:

{
  "mcpServers": {
    "cratesio-mcp": {
      "type": "http",
      "url": "https://cratesio-mcp.fly.dev/"
    }
  }
}

Install from crates.io

cargo install cratesio-mcp

Build from source

git clone https://github.com/joshrotenberg/cratesio-mcp
cd cratesio-mcp
cargo install --path .

Docker

docker run -p 3000:3000 ghcr.io/joshrotenberg/cratesio-mcp:latest

MCP client configuration

Claude Code (stdio)

{
  "mcpServers": {
    "cratesio-mcp": {
      "command": "cratesio-mcp"
    }
  }
}

Claude Code (HTTP, local or remote)

{
  "mcpServers": {
    "cratesio-mcp": {
      "type": "http",
      "url": "http://localhost:3000/"
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "cratesio-mcp": {
      "command": "cratesio-mcp"
    }
  }
}

What's included

Tools (29)

ToolDescription
search_cratesSearch for crates by name or keywords
get_crate_infoDetailed crate metadata (description, links, stats)
get_crate_versionsVersion history with release dates and download counts
get_crate_versionDetailed metadata for a specific version
get_crate_readmeREADME content for a crate version
get_crate_featuresFeature flags and their sub-feature activations
get_crate_docsBrowse documentation structure from docs.rs
get_doc_itemFull docs for a specific item (fn, struct, trait)
search_docsSearch for items by name within a crate's docs
get_dependenciesDependencies for a specific version
get_reverse_dependenciesCrates that depend on a given crate
audit_dependenciesCheck deps against OSV.dev vulnerability database
get_downloadsDownload statistics and trends
get_version_downloadsDaily download stats for a specific version
get_crate_authorsAuthors listed in Cargo.toml
get_ownersCrate owners and maintainers
get_userUser profile by GitHub username
get_user_statsTotal download stats for a user's crates
get_summarycrates.io global statistics
get_categoriesBrowse crates.io categories
get_categoryDetails for a specific category
get_keywordsBrowse crates.io keywords
get_keywordDetails for a specific keyword
compare_cratesCompare two or more crates side by side (downloads, versions, dependencies, freshness)
get_dependency_treeFull transitive dependency tree with configurable depth and deduplication markers
get_crate_healthComprehensive health report (maturity, adoption, maintenance, security, dependency weight)
get_alternativesFind and compare alternative crates based on keywords, downloads, and recent activity
get_crate_changelogChangelog content from a crate's GitHub repository, optionally filtered to a version
get_release_timelineVersion-over-version registry-metadata diff: feature changes, MSRV bumps, yanked status, release cadence

Resources (4)

ResourceDescription
crates://{name}/infoCrate metadata
crates://{name}/readmeCrate README content
crates://{name}/docsDocumentation structure
Recent searchesRecent search queries and results

Prompts (6)

PromptDescription
analyze_crateGuided comprehensive crate analysis
compare_crates_analysisCompare multiple crates side by side
stack_reviewEvaluate a set of crates as a cohesive stack for compatibility and health
evaluate_dependenciesEvaluate a project's dependencies for health, security, and maintenance
recommend_cratesFind and evaluate crates for a given use case
migration_guideGenerate a migration guide for switching between two crates

Transports

  • stdio (default) -- for Claude Desktop, Claude Code, and other MCP clients
  • HTTP/SSE -- Streamable HTTP with server-sent events (MCP 2025-11-25 spec)
# stdio (default)
cratesio-mcp

# HTTP
cratesio-mcp --transport http --port 3000

The HTTP transport includes a tower middleware stack: timeout, rate limiting, bulkhead concurrency control, optional response caching, and structured tracing.

Built-in crates.io client

cratesio-mcp is built on its own typed async crates.io API client -- no crates_io_api dependency. It's a first-class part of the crate, not an afterthought, and you can use it directly as a library:

  • ~46 endpoints across crates, versions, owners, categories, keywords, users, teams, API tokens, publishing, and trusted publishing.
  • Full read and write coverage -- search and metadata, plus authenticated operations (publish, yank/unyank, add/remove owners, manage API tokens, configure trusted publishing) via .with_auth(token).
  • Resilient by default -- built-in rate limiting (respects the crates.io crawling policy) and retry with exponential backoff on transient failures (429 / 5xx).
  • Documented and tested -- every public method has doc comments, with a wiremock test suite covering the endpoints (including the authenticated write paths).
use std::time::Duration;
use cratesio_mcp::client::{CratesIoClient, CratesQuery, Sort};

let client = CratesIoClient::new("my-app", Duration::from_secs(1))?;

// Search for crates
let query = CratesQuery::builder()
    .search("tower")
    .sort(Sort::Downloads)
    .build();
let results = client.crates(query).await?;

// Get crate details
let info = client.get_crate("tower-mcp").await?;

The OSV.dev vulnerability client (audit_dependencies) and the docs.rs rustdoc-JSON client (get_crate_docs / get_doc_item / search_docs) ship alongside it.

License

MIT OR Apache-2.0