cratesio-mcp
Servidor MCP para consultar o crates.io - o registro de pacotes Rust
Documentação
cratesio-mcp
Servidor MCP para consultar crates.io, o registro de pacotes Rust. Construído com tower-mcp.
Dá ao seu agente de IA busca de crates, documentação, análise de dependências, estatísticas de downloads e auditoria de segurança para tomar decisões informadas sobre dependências Rust.
Por baixo dos panos, também é uma biblioteca cliente da API crates.io independente e com poucas dependências, sobre a qual as ferramentas MCP são construídas e que você pode usar diretamente: ~46 endpoints com cobertura completa de leitura e escrita, sem dependência de crates_io_api. Veja Cliente crates.io integrado.
Início rápido
Hospedado (sem instalação)
Uma instância pública está em execução em https://cratesio-mcp.fly.dev/. Adicione à configuração do seu cliente MCP:
{
"mcpServers": {
"cratesio-mcp": {
"type": "http",
"url": "https://cratesio-mcp.fly.dev/"
}
}
}
Instalar a partir do crates.io
cargo install cratesio-mcp
Compilar a partir do código-fonte
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
Configuração do cliente MCP
Claude Code (stdio)
{
"mcpServers": {
"cratesio-mcp": {
"command": "cratesio-mcp"
}
}
}
Claude Code (HTTP, local ou remoto)
{
"mcpServers": {
"cratesio-mcp": {
"type": "http",
"url": "http://localhost:3000/"
}
}
}
Claude Desktop
Adicione a claude_desktop_config.json:
{
"mcpServers": {
"cratesio-mcp": {
"command": "cratesio-mcp"
}
}
}
O que está incluído
Ferramentas (29)
| Ferramenta | Descrição |
|---|---|
search_crates | Buscar crates por nome ou palavras-chave |
get_crate_info | Metadados detalhados do crate (descrição, links, estatísticas) |
get_crate_versions | Histórico de versões com datas de lançamento e contagens de downloads |
get_crate_version | Metadados detalhados para uma versão específica |
get_crate_readme | Conteúdo do README para uma versão do crate |
get_crate_features | Flags de recursos e suas ativações de sub-recursos |
get_crate_docs | Navegar pela estrutura da documentação do docs.rs |
get_doc_item | Documentação completa para um item específico (fn, struct, trait) |
search_docs | Buscar itens por nome na documentação de um crate |
get_dependencies | Dependências para uma versão específica |
get_reverse_dependencies | Crates que dependem de um determinado crate |
audit_dependencies | Verificar dependências contra o banco de dados de vulnerabilidades OSV.dev |
get_downloads | Estatísticas e tendências de downloads |
get_version_downloads | Estatísticas diárias de downloads para uma versão específica |
get_crate_authors | Autores listados no Cargo.toml |
get_owners | Proprietários e mantenedores do crate |
get_user | Perfil do usuário por nome de usuário do GitHub |
get_user_stats | Estatísticas totais de downloads dos crates de um usuário |
get_summary | Estatísticas globais do crates.io |
get_categories | Navegar pelas categorias do crates.io |
get_category | Detalhes para uma categoria específica |
get_keywords | Navegar pelas palavras-chave do crates.io |
get_keyword | Detalhes para uma palavra-chave específica |
compare_crates | Comparar dois ou mais crates lado a lado (downloads, versões, dependências, atualidade) |
get_dependency_tree | Árvore completa de dependências transitivas com profundidade configurável e marcadores de deduplicação |
get_crate_health | Relatório abrangente de saúde (maturidade, adoção, manutenção, segurança, peso das dependências) |
get_alternatives | Encontrar e comparar crates alternativos com base em palavras-chave, downloads e atividade recente |
get_crate_changelog | Conteúdo do changelog do repositório GitHub de um crate, opcionalmente filtrado por versão |
get_release_timeline | Diff de metadados do registro versão por versão: mudanças de recursos, aumentos de MSRV, status de yanked, cadência de lançamentos |
Toda chamada de ferramenta bem-sucedida retorna tanto o Markdown legível por humanos existente em content quanto JSON tipado em structuredContent. Cada ferramenta anuncia o contrato JSON Schema 2020-12 correspondente por meio de outputSchema durante a descoberta.
Recursos (3)
| Recurso | Descrição |
|---|---|
crates://{name}/info | Metadados do crate |
crates://{name}/readme | Conteúdo do README do crate |
crates://{name}/docs | Estrutura da documentação |
Prompts (6)
| Prompt | Descrição |
|---|---|
analyze_crate | Análise abrangente guiada de crate |
compare_crates_analysis | Comparar vários crates lado a lado |
stack_review | Avaliar um conjunto de crates como uma pilha coesa para compatibilidade e saúde |
evaluate_dependencies | Avaliar as dependências de um projeto quanto a saúde, segurança e manutenção |
recommend_crates | Encontrar e avaliar crates para um caso de uso específico |
migration_guide | Gerar um guia de migração para alternar entre dois crates |
Transportes
- stdio (padrão): para Claude Desktop, Claude Code e outros clientes MCP
- Streamable HTTP: transporte MCP 2026-07-28 sem sessão, mantendo compatibilidade com clientes MCP 2025-11-25 baseados em sessão
# stdio (default)
cratesio-mcp
# HTTP
cratesio-mcp --transport http --port 3000
O transporte HTTP inclui uma pilha de middleware tower: timeout, limitação de taxa, controle de concorrência bulkhead, cache de resposta opcional e rastreamento estruturado.
O caminho 2026-07-28 suporta server/discover, requisições sem estado, cabeçalhos de roteamento MCP padronizados e dicas de cache. A descoberta de ferramentas marca toda ferramenta crates.io como somente leitura, não destrutiva e idempotente; leituras de recursos anunciam tempos de vida de cache apropriados à sua fonte de dados.
Cliente crates.io integrado
cratesio-mcp é construído sobre seu próprio cliente de API crates.io assíncrono e tipado, sem dependência de crates_io_api. Você pode usá-lo diretamente como biblioteca:
- ~46 endpoints abrangendo crates, versões, proprietários, categorias, palavras-chave, usuários, equipes, tokens de API, publicação e publicação confiável.
- Cobertura completa de leitura e escrita: busca e metadados, além de operações autenticadas (publicar, yank/unyank, adicionar/remover proprietários, gerenciar tokens de API, configurar publicação confiável) via
.with_auth(token). - Resiliente por padrão: limitação de taxa integrada (respeita a política de rastreamento do crates.io) e nova tentativa com backoff exponencial em falhas transitórias (429 / 5xx).
- Documentado e testado: todo método público tem comentários de documentação, com uma suíte de testes wiremock cobrindo os endpoints (incluindo os caminhos de escrita autenticados).
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?;
O cliente de vulnerabilidades OSV.dev (audit_dependencies) e o cliente rustdoc-JSON do docs.rs (get_crate_docs / get_doc_item / search_docs) acompanham junto.
Licença
MIT OR Apache-2.0