Cratesio
FreeNot checkedMCP server for querying crates.io - the Rust package registry
About
MCP server for querying crates.io - the Rust package registry
README
Crates.io Documentation CI License MSRV
MCP server for querying crates.io, the Rust package registry. Built with tower-mcp.
Gives your AI agent crate search, documentation, dependency analysis, download stats, and security auditing to make informed decisions about Rust dependencies.
Under the hood it is also a standalone, dependency-light crates.io API client library that the MCP tools are built on and that you can use directly: ~46 endpoints with full read and write coverage, no crates_io_api dependency. 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)
| Tool | Description |
|---|---|
search_crates |
Search for crates by name or keywords |
get_crate_info |
Detailed crate metadata (description, links, stats) |
get_crate_versions |
Version history with release dates and download counts |
get_crate_version |
Detailed metadata for a specific version |
get_crate_readme |
README content for a crate version |
get_crate_features |
Feature flags and their sub-feature activations |
get_crate_docs |
Browse documentation structure from docs.rs |
get_doc_item |
Full docs for a specific item (fn, struct, trait) |
search_docs |
Search for items by name within a crate's docs |
get_dependencies |
Dependencies for a specific version |
get_reverse_dependencies |
Crates that depend on a given crate |
audit_dependencies |
Check deps against OSV.dev vulnerability database |
get_downloads |
Download statistics and trends |
get_version_downloads |
Daily download stats for a specific version |
get_crate_authors |
Authors listed in Cargo.toml |
get_owners |
Crate owners and maintainers |
get_user |
User profile by GitHub username |
get_user_stats |
Total download stats for a user's crates |
get_summary |
crates.io global statistics |
get_categories |
Browse crates.io categories |
get_category |
Details for a specific category |
get_keywords |
Browse crates.io keywords |
get_keyword |
Details for a specific keyword |
compare_crates |
Compare two or more crates side by side (downloads, versions, dependencies, freshness) |
get_dependency_tree |
Full transitive dependency tree with configurable depth and deduplication markers |
get_crate_health |
Comprehensive health report (maturity, adoption, maintenance, security, dependency weight) |
get_alternatives |
Find and compare alternative crates based on keywords, downloads, and recent activity |
get_crate_changelog |
Changelog content from a crate's GitHub repository, optionally filtered to a version |
get_release_timeline |
Version-over-version registry-metadata diff: feature changes, MSRV bumps, yanked status, release cadence |
Every successful tool call returns both the existing human-readable Markdown in
content and typed JSON in structuredContent. Each tool advertises the
matching JSON Schema 2020-12 contract through outputSchema during discovery.
Resources (3)
| Resource | Description |
|---|---|
crates://{name}/info |
Crate metadata |
crates://{name}/readme |
Crate README content |
crates://{name}/docs |
Documentation structure |
Prompts (6)
| Prompt | Description |
|---|---|
analyze_crate |
Guided comprehensive crate analysis |
compare_crates_analysis |
Compare multiple crates side by side |
stack_review |
Evaluate a set of crates as a cohesive stack for compatibility and health |
evaluate_dependencies |
Evaluate a project's dependencies for health, security, and maintenance |
recommend_crates |
Find and evaluate crates for a given use case |
migration_guide |
Generate a migration guide for switching between two crates |
Transports
- stdio (default): for Claude Desktop, Claude Code, and other MCP clients
- Streamable HTTP: sessionless MCP 2026-07-28 transport, while retaining compatibility with session-based MCP 2025-11-25 clients
# 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.
The 2026-07-28 path supports server/discover, stateless requests, standardized
MCP routing headers, and cache hints. Tool discovery marks every crates.io tool
as read-only, non-destructive, and idempotent; resource reads advertise cache
lifetimes appropriate to their data source.
Built-in crates.io client
cratesio-mcp is built on its own typed async crates.io API client, with no crates_io_api dependency. 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
Installing Cratesio
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/joshrotenberg/cratesio-mcpFAQ
Is Cratesio MCP free?
Yes, Cratesio MCP is free — one-click install via Unyly at no cost.
Does Cratesio need an API key?
No, Cratesio runs without API keys or environment variables.
Is Cratesio hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Cratesio in Claude Desktop, Claude Code or Cursor?
Open Cratesio on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Cratesio with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
