context7
CLI Rust nativa para a API REST do Context7 — busca de bibliotecas e documentação técnica diretamente no terminal.
O que é
context7 é um binário Rust nativo que substitui o servidor MCP Context7 (Node.js). Ele consulta a API REST pública https://context7.com/api/v1 para buscar bibliotecas e documentação técnica diretamente no terminal — sem Node.js, sem Python, sem runtime adicional.
Destaques:
- Binário único sem dependências de runtime
- Suporte a múltiplas chaves de API com rotação automática e retry com backoff exponencial
- Saída colorida para humanos ou JSON para integrações e pipes
- Armazenamento seguro de chaves via XDG (
~/.config/context7/config.toml) comchmod 600 - Logs persistentes: terminal (stderr com ANSI) + arquivo XDG com rotação por deleção
- Zero
unwrap()em produção, zeroprintln!de debug
Instalação
Via cargo install
Nota: O crate publicado no crates.io chama-se
context7-cli. Após a instalação, o binário executável écontext7(sem o sufixo-cli). Usecontext7 --helppara começar.
A partir do código-fonte
# Binário em: target/release/context7
Instalação global manual
# ou
Configuração de chaves de API
O binário descobre chaves de API por uma hierarquia de 4 camadas, em ordem de precedência:
| Prioridade | Fonte | Formato |
|---|---|---|
| 1 (maior) | Variável de ambiente CONTEXT7_API_KEYS |
Múltiplas chaves separadas por vírgula |
| 2 | Config XDG ~/.config/context7/config.toml |
TOML estruturado |
| 3 | Arquivo .env no CWD |
CONTEXT7_API=ctx7sk-... |
| 4 (menor) | Chave embutida em compile-time | CONTEXT7_API_KEYS no ambiente de build |
Método recomendado — via subcomando keys add:
O arquivo config.toml é criado automaticamente com chmod 600 em:
- Linux:
~/.config/context7/config.toml - macOS:
~/Library/Application Support/context7/config.toml - Windows:
%APPDATA%\context7\config\config.toml
Via variável de ambiente (CI/CD):
Obtenha sua chave em context7.com.
Uso
Estrutura geral
context7 [--json] <SUBCOMANDO> [ARGUMENTOS]
Subcomando library — busca de bibliotecas
# Busca simples
# Com contexto semântico para ranking mais preciso
# Saída em JSON
Retorna: id, title, description, trust_score de cada resultado.
Subcomando docs — documentação de uma biblioteca
# Documentação básica
# Com query temática
# Texto plano (para pipes)
# JSON completo
Use
context7 library <NOME>primeiro para descobrir oLIBRARY_IDcorreto. A barra inicial/é opcional.
Subcomando keys — gerenciamento de chaves de API
Retry e rotação de chaves
Cada requisição tenta até 3 vezes com backoff exponencial (500ms → 1s → 2s). Em cada tentativa, uma chave diferente é sorteada sem reposição — garantindo distribuição uniforme entre todas as chaves disponíveis.
Logs
Os logs são escritos automaticamente em dois destinos:
- Terminal: stderr com ANSI colors (nível
infopor padrão) - Arquivo: rotação por deleção a cada execução
Caminho do arquivo de log por sistema:
- Linux (XDG):
~/.local/state/context7/context7.log - macOS:
~/Library/Application Support/context7/context7.log - Fallback:
logs/context7.logno diretório atual
Nenhuma chave de API aparece nos logs — mascarada antes de qualquer escrita.
Stack
| Crate | Finalidade |
|---|---|
tokio |
Runtime async multi-thread |
reqwest (rustls-tls) |
Cliente HTTP sem OpenSSL |
clap (derive) |
Parsing de CLI |
serde + serde_json |
Serialização/deserialização |
anyhow + thiserror |
Tratamento de erros |
tracing + tracing-appender |
Logs estruturados dual (terminal + arquivo) |
colored |
Saída colorida no terminal |
directories |
Caminhos XDG cross-platform |
toml |
Arquivo de configuração |
rand |
Sorteio de chaves sem reposição |
chrono |
Timestamps nos logs |
Desenvolvimento
# Executar testes (72 testes)
# Build release
# Checar warnings
# Formatar código
# Executar localmente
Licença
Licenciado sob os termos de MIT OR Apache-2.0, à sua escolha.
Copyright 2026 Danilo Aguiar <daniloaguiarbr@pm.me>