cratesio-mcp

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

Documentação

cratesio-mcp

Crates.io Documentation CI License MSRV

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)

FerramentaDescrição
search_cratesBuscar crates por nome ou palavras-chave
get_crate_infoMetadados detalhados do crate (descrição, links, estatísticas)
get_crate_versionsHistórico de versões com datas de lançamento e contagens de downloads
get_crate_versionMetadados detalhados para uma versão específica
get_crate_readmeConteúdo do README para uma versão do crate
get_crate_featuresFlags de recursos e suas ativações de sub-recursos
get_crate_docsNavegar pela estrutura da documentação do docs.rs
get_doc_itemDocumentação completa para um item específico (fn, struct, trait)
search_docsBuscar itens por nome na documentação de um crate
get_dependenciesDependências para uma versão específica
get_reverse_dependenciesCrates que dependem de um determinado crate
audit_dependenciesVerificar dependências contra o banco de dados de vulnerabilidades OSV.dev
get_downloadsEstatísticas e tendências de downloads
get_version_downloadsEstatísticas diárias de downloads para uma versão específica
get_crate_authorsAutores listados no Cargo.toml
get_ownersProprietários e mantenedores do crate
get_userPerfil do usuário por nome de usuário do GitHub
get_user_statsEstatísticas totais de downloads dos crates de um usuário
get_summaryEstatísticas globais do crates.io
get_categoriesNavegar pelas categorias do crates.io
get_categoryDetalhes para uma categoria específica
get_keywordsNavegar pelas palavras-chave do crates.io
get_keywordDetalhes para uma palavra-chave específica
compare_cratesComparar 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_healthRelatório abrangente de saúde (maturidade, adoção, manutenção, segurança, peso das dependências)
get_alternativesEncontrar e comparar crates alternativos com base em palavras-chave, downloads e atividade recente
get_crate_changelogConteúdo do changelog do repositório GitHub de um crate, opcionalmente filtrado por versão
get_release_timelineDiff 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)

RecursoDescrição
crates://{name}/infoMetadados do crate
crates://{name}/readmeConteúdo do README do crate
crates://{name}/docsEstrutura da documentação

Prompts (6)

PromptDescrição
analyze_crateAnálise abrangente guiada de crate
compare_crates_analysisComparar vários crates lado a lado
stack_reviewAvaliar um conjunto de crates como uma pilha coesa para compatibilidade e saúde
evaluate_dependenciesAvaliar as dependências de um projeto quanto a saúde, segurança e manutenção
recommend_cratesEncontrar e avaliar crates para um caso de uso específico
migration_guideGerar 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