Qartez MCP
Servidor MCP de inteligência de código - PageRank, raio de explosão, co-alteração, hotspots, detecção de clones em 34 linguagens em um único binário Rust.
Documentação
Qartez MCP
Visão de raio-X para o seu código-fonte — criado para agentes de IA, não para humanos.
O primeiro servidor de inteligência de código projetado desde o primeiro dia para ser
consumido por modelos de linguagem, não lido por pessoas. Reduz o uso de tokens de IA em ~94%.
Início rápido · 43 Ferramentas · Proteção · Benchmarks · Comparação · 37 Linguagens · CLI · Contribuição · Segurança · Changelog
Por que isso existe
grep, find, cat, e ls foram inventados na década de 1970 para humanos que leem um arquivo por vez em um terminal. Meio século depois, seu assistente de IA ainda os utiliza — escaneando arquivos byte por byte, relendo os mesmos diretórios a cada pergunta, adivinhando o que importa e queimando seus tokens em um trabalho para o qual as ferramentas nunca foram projetadas.
Qartez é uma espécie diferente de ferramenta. Não é um wrapper em torno do grep. É um grafo de conhecimento pré-computado do seu repositório — símbolos, imports, arestas de chamada, raios de explosão, PageRank, co-alteração git, complexidade ciclomática — servido a qualquer LLM através do Model Context Protocol. O agente para de ler seu código-fonte e começa a consultá-lo.
Pense nisso como o primeiro órgão sensorial projetado especificamente para agentes de codificação. O Grep vê uma linha por vez. O Qartez vê a forma inteira do código-fonte em um único olhar.
Toda vez que seu assistente de IA toca no código, três coisas caras acontecem:
1. Ele lê os mesmos arquivos repetidamente. Sem memória do repositório. Cada pergunta começa do zero. Você paga por cada token — de novo e de novo.
2. Ele não consegue ver o que vai quebrar. Seu assistente edita utils.ts sem saber que outros 14 arquivos o importam. Você descobre no CI. Ou em produção.
3. Ele desperdiça tokens para encontrar coisas. "Onde handleRequest está definido?" vira um Grep em 200 arquivos, Read em 5 candidatos e 1.600 tokens queimados antes de encontrar a resposta. O Qartez responde isso em 50 tokens.
A solução não é um modelo mais inteligente. É um índice mais inteligente.
Início rápido
Suporte de plataforma: macOS 13+, Ubuntu 22.04+ (e outros Linux modernos, gnu ou musl), Windows (PowerShell nativo 5.1+/7+) e WSL 2. Arquiteturas: x86_64 e arm64. MSRV Rust é 1.88 — necessário apenas para plataformas não suportadas ou para a saída de emergência --from-source.
Instalação (recomendada)
Escolha o comando de uma linha para o seu sistema operacional. Ambos os comandos fazem a mesma coisa: baixam um binário pré-compilado, verificam seu SHA-256 contra o SHA256SUMS do release, instalam os três binários (qartez, qartez-guard, qartez-setup) e iniciam o qartez-setup em modo não interativo para configurar todos os IDEs compatíveis com MCP que detectar (incluindo os hooks de proteção contra modificação para Claude Code).
macOS / Linux / WSL 2 — instalador bash, os binários ficam em ~/.local/bin/:
curl -sSfL https://qartez.dev/install | sh
Windows (PowerShell nativo 5.1+/7+) — instalador PowerShell, os binários ficam em %LOCALAPPDATA%\Programs\qartez\:
powershell -ExecutionPolicy Bypass -c "iwr https://raw.githubusercontent.com/kuberstar/qartez-mcp/main/install.ps1 -useb | iex"
Plataformas não suportadas (ex.: linux-musl arm64 sem artefato publicado) recorrem automaticamente a um cargo build local; passe --from-source (bash) ou -FromSource (PowerShell) para forçar esse caminho. O MSRV Rust 1.88 é necessário apenas para esse fallback.
Abra qualquer projeto no seu IDE — o Qartez o indexa automaticamente no início da sessão. Nenhuma etapa manual é necessária. O observador de arquivos mantém o índice atualizado conforme você edita.
Alternativa: instalar a partir do código-fonte (todas as plataformas)
git clone https://github.com/kuberstar/qartez-mcp.git
cd qartez-mcp
make deploy
Quer inspecionar o script de instalação antes de canalizá-lo para sh? Leia-o no GitHub: install.sh (bash) ou install.ps1 (PowerShell).
Instalação interativa, instalação direcionada e outras opções
Funciona com 19 editores e agentes
Um único binário Rust (qartez-setup) detecta e configura todos os editores suportados. Sem scripts shell por editor, sem JSON copiado e colado.
make deploy # Configure every detected IDE (non-interactive)
make setup # Same, but interactive checkbox prompt
qartez-setup --ide cursor,zed # Configure specific IDEs only
make uninstall # Remove qartez from every IDE and delete binaries
Suportados de fábrica: Claude Code, Claude Desktop, Gemini, Cursor, Windsurf, Kiro, Zed, Continue.dev, Copilot CLI, Amazon Q, Amp, Cline, Roo Code, Goose, Warp, Augment, OpenCode, Codex CLI, Antigravity.
Instalação direcionada
qartez-setup --ide cursor,zed,claude
Configure apenas um subconjunto específico de IDEs. Caminhos detectados:
| IDE | Caminho de configuração |
|---|---|
| Claude Code | ~/.claude/settings.json |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Gemini | ~/.gemini/settings.json |
| Cursor | ~/.cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Kiro | ~/.kiro/settings/mcp.json |
| Zed | ~/.config/zed/settings.json |
| Continue.dev | ~/.continue/config.yaml |
| Copilot CLI | ~/.copilot/mcp-config.json |
| Amazon Q | ~/.aws/amazonq/mcp.json |
| Amp | ~/.config/amp/settings.json |
| Cline | Armazenamento global do VS Code saoudrizwan.claude-dev/settings/cline_mcp_settings.json |
| Roo Code | Armazenamento global do VS Code rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json |
| Goose | ~/.config/goose/config.yaml |
| Warp | ~/.warp/mcp_settings.json |
| Augment | ~/.augment/settings.json |
| OpenCode | ~/.config/opencode/opencode.json (ou opencode.jsonc) |
| Codex CLI | ~/.codex/config.toml |
| Antigravity | ~/.gemini/antigravity/mcp_config.json |
Todo caminho de instalação é idempotente e faz backup da configuração existente.
Habilitar o Qartez em um projeto
O Qartez indexa automaticamente no início da sessão. Para reindexação manual:
qartez --root /path/to/your/project --reindex
Claude Desktop (manual)
{
"mcpServers": {
"qartez": {
"command": "/absolute/path/to/qartez",
"args": []
}
}
}
Desinstalação
make uninstall
Remove o Qartez de todos os IDEs configurados e exclui os binários.
O que o Qartez faz
O Qartez constrói um grafo de conhecimento do seu código-fonte — uma vez — e o serve a qualquer assistente de IA através do MCP. Em vez de escanear arquivos do zero a cada pergunta, seu assistente consulta um índice pré-computado que sabe:
- Quais arquivos importam mais (PageRank no grafo de imports)
- O que quebra se você alterar um arquivo (análise de raio de explosão)
- Quais arquivos sempre mudam juntos (mineração de co-alteração git)
- Quais funções são as mais perigosas de tocar (complexidade ciclomática x acoplamento x churn)
- Onde cada símbolo está definido, quem o usa e quem o chama
- Quais blocos de código estão duplicados (hash estrutural de forma AST)
- Quais fronteiras de arquitetura os imports estão violando
- Quais tipos implementam um trait/interface, e vice-versa
O resultado: sua IA trabalha mais rápido, usa menos tokens, refatora com segurança e para de fazer alterações às cegas em arquivos estruturais.
Antes e depois
| Tarefa | Sem Qartez | Com Qartez |
|---|---|---|
"Onde QartezServer está definido?" | Grep em 200 arquivos, Read nos candidatos. 1.490 tokens. | qartez_find. 52 tokens. |
"O que quebra se eu alterar storage/read.rs?" | BFS grep a partir dos imports, profundidade 2. 9.243 tokens. | qartez_impact: importadores diretos + transitivos + co-alteração. 352 tokens. |
"Esboço de src/server/mod.rs (96 símbolos)" | Ler o arquivo completo de 300KB. 77.843 tokens. | qartez_outline com assinaturas. 3.009 tokens. |
| "Encontrar todas as exportações mortas" | Impossível sem ferramentas. | qartez_unused: pré-materializado, instantâneo. 468 tokens. |
| "Quais funções são as mais arriscadas de refatorar?" | Nada para consultar. | qartez_hotspots: complexidade x PageRank x churn. |
As 43 ferramentas
Pense nelas como a biblioteca padrão para compreensão de código por IA. Cada uma substitui um fluxo de trabalho humano de várias etapas por uma única chamada eficiente em tokens que o agente pode raciocinar.
As ferramentas são organizadas em camadas com divulgação progressiva. As ferramentas principais estão sempre disponíveis. Camadas adicionais podem ser desbloqueadas sob demanda via qartez_tools enable: ["analysis"] (ou "all").
Principais (sempre disponíveis)
| Ferramenta | O que faz |
|---|---|
qartez_map | Comece aqui. Esqueleto do projeto classificado por importância. PageRank, exportações, raios de explosão. Reforce por arquivos ou termos para focar no que você está trabalhando. |
qartez_find | Vá para a definição de um símbolo pelo nome exato. Arquivo, intervalo de linhas, assinatura, visibilidade. Sem escaneamento. |
qartez_grep | Busca FTS5 em símbolos indexados. Correspondência de prefixo, fallback de regex, busca opcional no corpo. |
qartez_read | Leia o código-fonte de um ou mais símbolos com números de linha. Sem escaneamento de arquivos. Vai direto ao símbolo. |
qartez_outline | Sumário de qualquer arquivo: todos os símbolos agrupados por tipo, com assinaturas. |
qartez_impact | Chame antes de editar qualquer arquivo importante. Mostra importadores diretos, dependentes transitivos e parceiros de co-alteração. Tudo o que pode quebrar. |
qartez_deps | Grafo de dependências de um arquivo: o que ele importa, o que o importa. |
qartez_stats | Painel do código-fonte: arquivos, símbolos, arestas por linguagem, arquivos mais conectados. |
Análise (desbloqueie via qartez_tools)
| Ferramenta | O que faz |
|---|---|
qartez_refs | Rastreia cada uso de um símbolo em todo o código, com cadeias transitivas opcionais. |
qartez_calls | Hierarquia de chamadas: quem chama esta função e o que ela chama. |
qartez_cochange | Arquivos que historicamente mudam juntos no git. Acoplamento lógico invisível para o grafo de importações. |
qartez_context | Construtor de contexto inteligente: dados os arquivos que você planeja modificar, retorna o conjunto ideal de arquivos relacionados para ler primeiro. |
qartez_unused | Localizador de código morto: símbolos exportados com zero importadores, pré-materializados no momento da indexação. |
qartez_diff_impact | Impacto em lote para um intervalo de diff do git. Passe um revspec como main..HEAD para obter arquivos alterados com PageRank, raio de explosão da união, pontos de convergência e omissões de co-mudança. Uma chamada substitui N chamadas a qartez_impact + qartez_cochange. |
qartez_hotspots | O radar de refatoração. Classifica arquivos e funções por pontuação de hotspot = complexidade ciclomática x PageRank x (1 + churn). Aponta direto para o código de maior risco no repositório. |
qartez_clones | Detecção estrutural de clones de código via hash de forma AST (identificadores, literais e comentários são normalizados). Encontra lógica duplicada que o revisor humano nunca notaria. |
qartez_boundaries | Aplicação de limites de arquitetura. Declare "estes módulos não podem importar aqueles" em .qartez/boundaries.toml e receba de volta cada aresta violadora. suggest=true gera uma configuração inicial a partir do agrupamento de Leiden. |
qartez_hierarchy | Consultas de hierarquia de tipos: encontre todos os tipos que implementam um trait/interface, ou todos os traits/interfaces que um tipo implementa. Funciona em Rust, TypeScript, Java, Python e Go. |
qartez_trend | Tendência de complexidade ao longo do histórico do git: rastreia como a complexidade ciclomática de uma função evoluiu commit a commit. Sinaliza funções que estão CRESCENDO, ESTÁVEIS ou ENCOLHENDO. |
qartez_security | Scanner de segurança com 13 regras integradas. Correspondência de padrões baseada em regex pontuada por PageRank para priorizar arquivos de alto impacto. Regras personalizadas via .qartez/security.toml. Filtros por severidade (baixa/média/alta/crítica) e categoria. |
qartez_smells | Detector de code smell: encontra god functions (alta complexidade + corpo longo), listas longas de parâmetros e feature envy (métodos que usam outro tipo mais do que o próprio). Limiares ajustáveis. |
qartez_health | Lista de correções priorizada. Cruza qartez_hotspots com qartez_smells e classifica arquivos como Crítico (hotspot + smell), Alto (apenas hotspot) ou Médio (apenas smell). Cada entrada traz uma técnica concreta de refatoração sugerida. |
qartez_refactor_plan | Plano de refatoração ordenado e anotado com segurança para um arquivo. Cada passo nomeia uma técnica (Extract Method, Introduce Parameter Object), uma categoria estimada de impacto de CC (Alto/Médio/Baixo) com intervalo e sinais de segurança de impacto, cobertura de testes e contagem de chamadores. |
qartez_test_gaps | Análise de lacunas de cobertura de testes via grafo de importações. Três modos: gaps classifica arquivos-fonte não testados por risco, map mostra mapeamentos teste-para-fonte, suggest recomenda testes a executar para um intervalo de diff do git. |
qartez_knowledge | Análise de bus-factor. Autoria baseada em git-blame em nível de arquivo e módulo. Expõe arquivos de autor único e módulos onde o conhecimento está concentrado em um único contribuidor. |
qartez_blame | Git blame com escopo de símbolo. Resolve um nome de função/tipo para seu intervalo de linhas e aplica blame apenas nessas linhas: commits/autores por hunk, ou um resumo por autor com o commit mais recente de cada autor. |
qartez_semantic | Busca semântica usando um modelo de embeddings local. Consultas em linguagem natural classificadas por similaridade híbrida FTS5 + vetorial (RRF). Requer o recurso cargo semantic e um download único do modelo (~270 MB). |
qartez_path | Caminho mais curto de chamada/referência entre dois símbolos. BFS direto sobre o grafo de referências de símbolos retorna a cadeia ordenada de símbolos/arquivos mais uma contagem de caminhos mais curtos alternativos. Filtre arestas por kind (call ou type). |
Refatoração (desbloqueie via qartez_tools)
| Ferramenta | O que faz |
|---|---|
qartez_rename | Renomeia um símbolo em todo o código. Definição, importações, todos os usos. Pré-visualização por padrão, apply=true para executar. |
qartez_move | Move um símbolo para outro arquivo e reescreve todos os caminhos de importação. Uma única chamada MCP. |
qartez_rename_file | Renomeia um arquivo e atualiza cada importação que aponta para ele. |
qartez_replace_symbol | Substitui todo o intervalo de linhas de um símbolo por novo código-fonte. O chamador fornece a substituição completa, incluindo a assinatura; pré-visualização por padrão, apply=true executa atomicamente. |
qartez_insert_before_symbol | Insere novo código imediatamente antes de um símbolo âncora. A busca da âncora passa pela tabela de símbolos indexada — não é necessário o contexto exato ao redor. |
qartez_insert_after_symbol | Insere novo código imediatamente após um símbolo âncora. Mesma abordagem de endereçamento por âncora que qartez_insert_before_symbol. |
qartez_safe_delete | Exclui um símbolo após relatar cada arquivo que ainda o importa. Recusa aplicar quando existem importadores, a menos que force=true. |
Meta (desbloqueie via qartez_tools)
| Ferramenta | O que faz |
|---|---|
qartez_project | Detecta automaticamente seu toolchain (Cargo, npm/bun/yarn, Go, Python, Make, Gradle) e executa teste/build/lint/typecheck por meio de uma única ferramenta. |
qartez_wiki | Gera uma wiki de arquitetura em markdown usando detecção de comunidades de Leiden no grafo de importações. Particiona arquivos em clusters, nomeia cada um e emite ARCHITECTURE.md com arestas entre clusters. |
qartez_workspace | Adiciona ou remove domínios de workspace em tempo de execução. Registra diretórios externos sob um alias personalizado em .qartez/workspace.toml, indexa-os e os remove na exclusão. |
qartez_add_root | Registra uma raiz de projeto adicional em tempo de execução. Indexa o diretório, atualiza pagerank/co-mudança e anexa um observador de arquivos; o alias é opcional (derivado do nome base do caminho) e a persistência é alternável para raízes efêmeras. |
qartez_list_roots | Lista cada raiz de projeto atualmente rastreada pelo servidor com seu alias, origem (cli/config/tempo de execução), estado de anexação do observador, contagem de arquivos e último timestamp de indexação. |
qartez_maintenance | Inspeciona e compacta .qartez/index.db. A ação padrão stats relata tamanhos de DB / WAL, principais tabelas, impressão digital atual do workspace e último timestamp de reindexação completa. Outras ações: checkpoint, optimize_fts (mescla segmentos FTS5), vacuum_incremental, vacuum, convert_incremental (conversão única para auto_vacuum=INCREMENTAL), purge_stale (remove linhas de raízes que não estão mais no workspace). Use isto em um DB inchado em vez de excluir .qartez/index.db manualmente. |
Gerenciamento de níveis
| Ferramenta | O que faz |
|---|---|
qartez_tools | Sempre visível. Lista todos os níveis e suas ferramentas. Use enable: ["analysis"], enable: ["all"] ou disable: ["refactor"] para controlar quais ferramentas são expostas ao agente. Ferramentas principais não podem ser desabilitadas. |
Prompts de fluxo de trabalho
Seis receitas prontas para uso que encadeiam as ferramentas acima na ordem correta. Invoque-as como comandos de barra no Claude Code ou em qualquer cliente MCP que suporte prompts.
| Prompt | O que faz |
|---|---|
/qartez_review <file> | Revisão de código: raio de explosão, esboço, referências, co-mudança — depois uma lista de verificação focada. |
/qartez_architecture [top_n] | Visão geral de arquitetura em um minuto fundamentada em dados de PageRank. |
/qartez_debug <symbol> | Definição + chamadores + chamados + referências em uma única vez. |
/qartez_onboard [area] | Lista de leitura de cinco arquivos para novos contribuidores, classificada por importância. |
/qartez_pre_merge <files> | Verificação de segurança pré-merge com recomendação de enviar/segurar. |
/qartez_arch_review [focus] | Auditoria de risco de arquitetura: hubs frágeis, limites emaranhados, superfície de segurança, dívida de complexidade. |
Guarda de modificação
O Qartez vem com uma rede de segurança que impede sua IA de editar cegamente arquivos críticos.
O binário qartez-guard se conecta ao sistema PreToolUse do Claude Code e bloqueia Edit/Write/MultiEdit em qualquer arquivo que exceda um limite de PageRank ou raio de explosão — até que a IA chame qartez_impact primeiro para reconhecer o risco.
Como funciona:
- A IA tenta editar
src/server/mod.rs - A guarda verifica: PageRank 0,23 (> limite de 0,05), raio de explosão 10 (>= limite de 10)
- A edição é bloqueada com uma explicação listando quais limites foram acionados
- A IA chama
qartez_impact file_path=src/server/mod.rs— revisa o raio de explosão - A guarda concede uma janela de edição de 10 minutos para aquele arquivo
- A IA tenta a edição novamente — permitida
Zero configuração. Ajustável via QARTEZ_GUARD_PAGERANK_MIN, QARTEZ_GUARD_BLAST_MIN, QARTEZ_GUARD_ACK_TTL_SECS ou desabilitada com QARTEZ_GUARD_DISABLE=1.
Benchmarks
Não são alegações. Medidos. Reproduzíveis. Execute make bench e verifique você mesmo.
Destaque
Economia agregada de tokens vs Glob + Grep + Read + git log: +91,8%
(soma de MCP 38.789 / soma de não-MCP 472.109 tokens em todos os 28 cenários no auto-bench do Qartez. Subcontagem conservadora: 10 de 28 cenários têm uma simulação não-MCP incompleta — essas linhas ainda contribuem com seus tokens MCP para ambas as somas. Nos 18 cenários com comparação justa token a token, a economia sobe para +94,5%.)
Qualidade avaliada por LLM (claude-opus-4-6): MCP 8,3 / 10 vs não-MCP 4,3 / 10 em cinco eixos (correção, completude, usabilidade, fundamentação, concisão), n=28.
Contexto de custo de sessão. Uma sessão típica do Claude Code começa com ~20.000 tokens de overhead de prompt. Uma única execução de make bench economiza ~433.000 tokens — ~21 sessões vazias de orçamento recuperadas, apenas roteando perguntas pela ferramenta certa.
Detalhamento por ferramenta (auto-bench Rust)
18 ferramentas com simulações não-MCP completas (comparação justa token a token):
| Ferramenta | Tokens MCP | Sem MCP | Economia | Aceleração |
|---|---|---|---|---|
qartez_cochange | 92 | 14.622 | +99,4% | 2x |
qartez_context | 107 | 4.489 | +97,6% | 533x |
qartez_find | 52 | 1.490 | +96,5% | 210x |
qartez_impact | 352 | 9.243 | +96,2% | 140x |
qartez_outline | 3.009 | 77.843 | +96,1% | 5x |
qartez_project | 68 | 1.394 | +95,1% | 0x |
qartez_unused | 468 | 6.750 | +93,1% | 22x |
qartez_deps | 166 | 2.286 | +92,7% | 118x |
qartez_map | 87 | 674 | +87,1% | 1x |
qartez_rename_file | 27 | 185 | +85,4% | 211x |
qartez_grep | 127 | 763 | +83,4% | 72x |
qartez_stats | 155 | 848 | +81,7% | 1x |
qartez_move | 161 | 701 | +77,0% | 159x |
qartez_calls | 564 | 2.409 | +76,6% | 3x |
qartez_refs | 201 | 692 | +71,0% | 26x |
qartez_read | 150 | 495 | +69,7% | 100x |
qartez_hierarchy | 735 | 2.056 | +64,3% | 127x |
qartez_rename | 439 | 648 | +32,3% | 11x |
10 ferramentas analíticas adicionais não têm equivalente significativo de grep/read — elas resolvem problemas que a pilha não-MCP não consegue resolver de forma alguma:
qartez_hotspots, qartez_clones, qartez_smells, qartez_test_gaps, qartez_wiki, qartez_boundaries, qartez_trend, qartez_knowledge, qartez_diff_impact, qartez_security.
Bench multi-idioma
make bench-all executa o mesmo harness de 28 cenários contra cinco fixtures OSS fixadas — colinhacks/zod (TypeScript), spf13/cobra (Go), encode/httpx (Python), FasterXML/jackson-core (Java), além do auto-bench do Qartez (Rust) — e então emite um resumo entre idiomas para reports/benchmark-<lang>.md mais uma matriz combinada. Cada ferramenta, cada idioma, cada cenário — medido com o tokenizador cl100k_base contra uma simulação fiel de Glob + Grep + Read + git log.
make bench # Rust self-bench only - fresh measurements
make bench-all # All 5 languages (Rust, TypeScript, Python, Go, Java) + cross-language summary
make bench-fixtures # Clone and index the pinned fixture repos
Relatórios chegam em reports/benchmark.md / reports/benchmark.json para a execução de idioma único, ou reports/benchmark-<lang>.md mais um resumo combinado entre idiomas para bench-all.
Como funciona por baixo dos panos
Quatro camadas, calculadas uma vez, consultadas do SQLite em cada chamada de ferramenta.
1. Parsing com tree-sitter
Cada arquivo de código-fonte é analisado por uma gramática tree-sitter específica da linguagem. Sem servidor LSP, sem instalação de SDKs por linguagem, sem penalidade de cold-start. O parser extrai símbolos (funções, métodos, tipos, constantes), suas assinaturas, intervalos de linhas, visibilidade de exportação, relações de importação e — para 21 linguagens imperativas — complexidade ciclomática por função.
2. Hash de forma estrutural
Corpos de funções são canonicalizados em um esqueleto de AST (identificadores, literais e comentários normalizados) e transformados em hash. Dois símbolos com o mesmo hash são clones estruturais. É isso que as consultas qartez_clones usam.
3. Análise de grafo
Arestas de importação formam um grafo direcionado. Três algoritmos são executados sobre ele:
- PageRank — o mesmo algoritmo de caminhada aleatória que o Google usava para páginas web. Aplicado ao seu grafo de importações, ele revela os arquivos que formam a espinha dorsal arquitetural do seu projeto.
- Blast radius — BFS reverso que conta quantos arquivos são afetados transitivamente por uma alteração.
qartez_impactusa isso para alertar antes de edições. - Leiden clustering — detecção de comunidades que particiona seu codebase em módulos lógicos para a wiki de arquitetura gerada automaticamente e a configuração inicial do
qartez_boundaries.
4. Mineração do histórico do git
Percorre os últimos N commits (padrão: 300) e conta pares de arquivos que aparecem no mesmo commit. Isso revela acoplamento lógico que o grafo de importações não consegue enxergar — arquivos que não estão ligados por imports, mas são sempre editados juntos.
qartez_impact, qartez_context e qartez_hotspots fundem esses sinais — PageRank + blast + co-change + complexidade — em uma única resposta ranqueada. Nenhum outro servidor MCP combina os quatro.
Armazenamento
Tudo fica em .qartez/index.db — um único arquivo SQLite com índices de texto completo FTS5. Na inicialização, o Qartez reanalisa apenas os arquivos cujo horário de modificação mudou. O file watcher é ativado automaticamente enquanto o servidor está em execução — edições e novos arquivos são reindexados em segundo plano sem downtime. Passe --no-watch para desativá-lo.
Transporte
O Qartez se comunica via stdio (JSON-RPC por stdin/stdout), o transporte MCP padrão. Sem servidor HTTP, sem alocação de porta, sem exposição de rede. A IDE inicia o binário qartez como processo filho e troca mensagens por pipes.
Linguagens suportadas
Um único binário. Sem configuração por linguagem. Todas as 37 linguagens são analisadas por tree-sitter (com fallbacks de regex para formatos sem gramática compatível). 21 linguagens imperativas também recebem complexidade ciclomática por função, alimentando qartez_hotspots.
Tabela completa de linguagens (37 linguagens)
| Language | Extensions / Filenames |
|---|---|
| TypeScript / JavaScript | .ts .tsx .js .jsx .mts .cts .mjs .cjs |
| Rust | .rs |
| Go | .go |
| Python | .py .pyi |
| Java | .java |
| Kotlin | .kt .kts |
| Swift | .swift |
| C# | .cs |
| C | .c .h |
| C++ | .cpp .cc .cxx .hpp .hh .hxx |
| Ruby | .rb |
| PHP | .php |
| Bash | .sh .bash |
| CSS | .css .scss |
| Scala | .scala .sc - classes, traits, objetos, case classes |
| Dart | .dart - classes, mixins, enums, privacidade baseada em underscore |
| Lua | .lua - funções, métodos (M.f/M:f), imports require |
| Elixir | .ex .exs - defmodule, def/defp, defstruct, alias/use/import |
| Zig | .zig - pub fn, structs, enums, unions, @import |
| Nix | .nix - bindings de atributos, funções, caminhos import |
| Haskell | .hs .lhs - funções de nível superior, data, newtype, type, typeclasses, import |
| OCaml | .ml .mli - bindings let, type, module, class, exception, open/include |
| R | .r .R - atribuições de função/variável, classes S4/R6, library/require/source |
| Protobuf | .proto - message, service, rpc, enum, import |
| SQL | .sql - CREATE TABLE/VIEW/FUNCTION/PROCEDURE, ALTER, blocos BEGIN...END |
| HCL / Terraform | .tf - referências entre arquivos var/local/module/data/resource |
| YAML | .yaml .yml - K8s, GitHub Actions, GitLab CI, docker-compose, Ansible |
| Dockerfile | Dockerfile, Dockerfile.*, .dockerfile - refs COPY --from multi-stage |
| Makefile | Makefile, GNUmakefile, .mk - targets, variáveis, imports include |
| TOML | .toml - tabelas, chaves, arrays de tabelas |
| Nginx | .conf, .nginx - blocos server, location, upstream |
| Helm / Go templates | .tpl - blocos define/include/template |
| Jenkinsfile / Groovy | Jenkinsfile, .groovy - pipeline, stage, node, def |
| Starlark / Bazel | BUILD, BUILD.bazel, WORKSPACE, WORKSPACE.bazel, .bzl, .star, .bazel - load, regras com name=, def |
| Jsonnet | .jsonnet .libsonnet - funções/vars local, campos, import/importstr |
| Caddyfile | Caddyfile, .caddyfile - blocos de site, handle, reverse_proxy, snippets |
| Systemd units | .service .timer .socket .mount .target .path .slice .scope - seções, ExecStart, diretivas |
Destaques: TypeScript, Rust, Go, Python, Java, Kotlin, Swift, C#, C/C++, Ruby, PHP, Dart, Scala, Elixir, Zig, Lua, Haskell, OCaml, R e mais 17. Todas as 21 linguagens imperativas incluem pontuação de complexidade ciclomática.
Comparação com alternativas
O espaço de inteligência de codebase via MCP está concorrido em 2026. Esta seção cobre concorrentes OSS diretos, plataformas empresariais e ecossistemas adjacentes. Todas as contagens de estrelas foram verificadas no repositório GitHub de cada projeto em abril de 2026.
Concorrentes OSS MCP diretos
Nove projetos compartilham o nicho de "servidor MCP para inteligência de codebase", ordenados por estrelas no GitHub.
| Projeto | Estrelas | Impl. | Abordagem de indexação | Linguagens | Ferramentas MCP |
|---|---|---|---|---|---|
| Qartez (este repositório) | novo | Rust | tree-sitter + SQLite + PageRank + blast radius + co-change + complexity + clones + boundaries | 37 | 30 |
| Serena | 23k | Python | LSP (servidores de linguagem por linguagem) | 46+ | ~35 |
| code-review-graph | 10.4k | Python | tree-sitter + SQLite + Leiden clustering | 23+ | 28 |
| Claude-Context | 5.9k | TypeScript | Embeddings + Milvus/Zilliz vector DB | 14 | 4 |
| CodeGraphContext | 3k | Python | tree-sitter + KuzuDB / FalkorDB / Neo4j | 14 | 21 |
| Codebase-Memory MCP | 1.6k | C | tree-sitter + SQLite + resolução híbrida de tipos | 66 | 14 |
| Repowise | 1.2k | Python | Grafo de dependências + histórico do git + docs gerados por LLM | 14 | 7 |
| Code Index MCP | 903 | Python | tree-sitter (10 linguagens) + fallback ripgrep para 50+ | 10 + 50 | 11 |
| Codanna | 651 | Rust | tree-sitter + tantivy FTS + fastembed | 15 | ~9 |
Comparação recurso por recurso
| Capacidade | Qartez | Serena | code-review-graph | Claude-Context | CodeGraphContext | Codebase-Memory | Repowise | Code Index MCP | Codanna |
|---|---|---|---|---|---|---|---|---|---|
| Parsing com tree-sitter | Sim | Não (LSP) | Sim | Somente chunking | Sim | Sim | Não | Sim (10 linguagens) | Sim |
| Ranqueamento de importância PageRank | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Blast radius (dependentes transitivos) | Sim | Não | Sim | Não | Não | Sim | Não | Não | Sim |
| Mineração de co-alteração no git | Sim | Não | Não | Não | Não | Sim | Sim | Não | Não |
| Complexidade ciclomática por função | Sim (21 linguagens) | Não | Não | Não | Não | Não | Não | Não | Não |
| Pontuação de hotspots (complexidade x PR x churn) | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Detecção estrutural de clones de código | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Aplicação de limites de arquitetura | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Impacto de quatro sinais (PR + blast + co-change + complexidade) | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Detecção de code smells (god functions, feature envy) | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Análise de lacunas de cobertura de testes | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Análise de bus-factor / conhecimento | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Consultas de hierarquia de tipos | Sim | Via LSP | Não | Não | Não | Não | Não | Não | Não |
| Grafo de chamadas (caller / callee) | Sim | Parcial | Sim | Não | Sim | Sim | Não | Não | Sim |
| Refatoração (rename / move / rename-file) | Sim (prévia + aplicar) | Somente rename (LSP); move via plugin JetBrains (pago) | Somente prévia de rename | Não | Não | Não | Não | Não | Não |
| Executor de comandos de toolchain (test / build / lint) | Sim | Somente shell | Não | Não | Não | Não | Não | Não | Não |
| Construtor inteligente de contexto multi-sinal | Sim | Não | Parcial | Não | Não | Não | Não | Não | Não |
| Análise de impacto de diffs em lote | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Modelos de prompt MCP | Sim (6) | Não | Sim (5) | Não | Não | Não | Não | Não | Não |
| Instalação multi-IDE com um comando | Sim (19 IDEs, assistente Rust) | Não (manual) | Sim (9 IDEs) | Não (manual) | Sim (10 IDEs) | Sim (10 agentes) | Não | Não | Não |
| Varredura de segurança (regex + pontuação PageRank) | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Tendência de complexidade ao longo do histórico do git | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Divulgação progressiva de ferramentas (níveis) | Sim (4 níveis) | Não | Não | Não | Não | Não | Não | Não | Não |
| Busca semântica / vetorial | Sim (opt-in, embedding local) | Não | Opcional (híbrido FTS5) | Sim (Milvus) | Não | Não | Não | Não | Sim (fastembed) |
| Detecção de comunidades + wiki automática | Sim (Leiden + wiki) | Não | Sim (Leiden + wiki) | Não | Não | Parcial (Louvain, sem wiki) | Não | Não | Não |
| Visualização de grafo | Não | Não | Sim (D3.js) | Não | Sim (Neo4j + HTML) | Sim (3D interativo) | Não | Não | Não |
| Modo watch (reindexação incremental) | Sim (ativo automaticamente) | Parcial | Sim | Parcial | Sim | Sim | Não | Sim | Sim |
| Benchmarks publicados por ferramenta com avaliador LLM | Sim (28 cenários, 8,3/10 vs 4,3/10) | Somente terceiros | Sim (6 repositórios, 8,2x média) | Limitado (alegação de ~40%) | Não | Sim (artigo arXiv, 10x tokens) | Não | Não | Parcial (criterion) |
| Proteção de modificação (bloqueia edições arriscadas) | Sim | Não | Não | Não | Não | Não | Não | Não | Não |
| Modelo de embedding / banco vetorial necessário | Não | Não | Opcional | Sim | Não | Não | Não | Não | Sim |
| Dependência de nuvem | Não | Não | Não | Sim (padrão) | Não | Não | Não | Não | Opcional |
Alternativas empresariais e nativas de IDE
Plataformas comerciais que resolvem o mesmo problema para usuários dispostos a trocar local-first e open-source por polimento ou escala entre repositórios:
- Sourcegraph Cody / Amp - indexadores SCIP de nível compilador, servidor MCP oficial desde 2026. Cloud-first, preços empresariais.
- Augment Code - Série B de US$ 227M. Índice semântico em tempo real + grafo de relacionamento de código em mais de 400 mil arquivos, servidor MCP oficial desde outubro de 2025. Dependência de nuvem.
- Deep Graph MCP (CodeGPT) - 392 estrelas. Backend de grafo de conhecimento hospedado em nuvem; troque
github.compordeepgraph.coem qualquer URL de repositório para obter um grafo de código pré-construído. Nenhuma indexação local necessária. - JetBrains AI Assistant (IntelliJ 2025.2+) - servidor MCP embutido que expõe símbolos e diagnósticos de nível IDE. Apenas JetBrains.
- Cursor - modelo de embedding personalizado, índice compartilhado em equipe no Turbopuffer. IDE fechado, sem exposição MCP.
- Windsurf Cascade - recuperação M-Query baseada em RAG. IDE fechado, sem servidor MCP.
Qartez oferece a mesma inteligência estrutural que essas plataformas vendem - rodando inteiramente no seu laptop, gratuitamente.
Também notáveis (projetos menores)
| Projeto | Estrelas | Impl. | Nicho |
|---|---|---|---|
| Drift | 772 | TS / Rust | Aprende padrões e convenções do código e os ensina à IA entre sessões |
| Octocode | 319 | Rust | Grafo de conhecimento GraphRAG + busca semântica híbrida (4 ferramentas MCP) |
| mcp-server-tree-sitter | 287 | Python | Exposição bruta de consultas tree-sitter para agentes comporem suas próprias análises (~20 ferramentas) |
| CodeGraph | 179 | Rust | SurrealDB + LSP + arquitetura agêntica ReAct / LATS, raio de explosão parcial |
| RepoMapper | 150 | Python | PageRank-on-tree-sitter do Aider como uma única ferramenta MCP |
| Narsil-MCP | 134 | Rust | 90 ferramentas MCP, 32 linguagens, grafos de chamada + análise de taint + varredura de segurança SBOM |
| Code Pathfinder | 118 | Go | SAST focado em segurança com análise de taint/fluxo de dados entre arquivos via MCP |
| Code Graph RAG MCP | 86 | TypeScript | Híbrido de grafo + RAG, 26 métodos MCP, detecção de clones |
| Tree-sitter Analyzer | 20 | Python | PageRank + modification_guard que bloqueia edições inseguras (17 linguagens) |
| AiDex | 25 | TypeScript | 30 ferramentas MCP, gerenciamento de tarefas, captura de tela, Log Hub (11 linguagens) |
Ecossistemas adjacentes (categoria diferente, mesmo problema)
- Aider repo-map - O CLI de Paul Gauthier foi pioneiro em tree-sitter + PageRank em outubro de 2023. Vive dentro do CLI aider, não como servidor MCP. O RepoMapper encapsula a saída única de
repo_mapcomo MCP. - Continue.dev - MCP cliente, não servidor. Sua documentação recomenda explicitamente combinar o Continue com um servidor MCP de grafo de código dedicado - o papel que o Qartez preenche.
- Context7, Mem0, Pieces LTM - ferramentas de memória e documentação, não indexadores de código. Complementares, não concorrentes.
- Block Goose, Cline, Codebuff - clientes de agentes de codificação que consomem servidores MCP. Eles são os usuários de ferramentas como o Qartez.
O que torna o Qartez diferente
1. Análise de impacto com quatro sinais. qartez_impact, qartez_diff_impact, qartez_context e qartez_hotspots fundem importância PageRank, raio de explosão estático, co-mudança git e complexidade ciclomática em uma única resposta classificada. Nenhum outro projeto combina os quatro.
2. Hotspots, clones, limites, segurança, cheiros, lacunas de teste, conhecimento e tendências em um único servidor. qartez_hotspots classifica as funções mais perigosas do repositório por complexidade x acoplamento x churn. qartez_clones encontra lógica duplicada via hash de forma AST. qartez_boundaries aplica regras de arquitetura declaradas em .qartez/boundaries.toml. qartez_security verifica padrões de vulnerabilidade pontuados por PageRank. qartez_smells detecta funções deus, listas longas de parâmetros e inveja de recurso. qartez_test_gaps encontra arquivos de origem não testados classificados por risco. qartez_knowledge revela riscos de fator de ônibus a partir do git blame. qartez_trend acompanha como a complexidade de uma função evoluiu commit a commit. São oito produtos comerciais separados em outros lugares, uma chamada MCP cada aqui.
3. Refatoração via MCP com pré-visualização e aplicação. qartez_rename, qartez_move e qartez_rename_file dão ao assistente refatorações atômicas e revisáveis em uma única chamada MCP. Serena oferece renomeação via LSP (exige instalação de servidor por linguagem); os demais servidores não trazem nenhuma ferramenta de refatoração.
4. Rede de segurança integrada. O guarda de modificação impede que sua IA edite arquivos de alto impacto sem revisar primeiro o raio de explosão. Nenhum outro servidor na tabela principal de concorrentes oferece isso.
5. Medido, não afirmado. 28 cenários, qualidade 8,3/10 vs 4,3/10 avaliada por LLM, contagens de tokens por ferramenta e latência. Tudo reproduzível com make bench (linguagem única) ou make bench-all (5 linguagens com resumo entre linguagens).
6. Rust nativo, local-first, zero dependência de nuvem. Três binários (qartez, qartez-guard, qartez-setup). Sem runtime Python, sem banco de dados vetorial, sem conta em nuvem. Tudo roda na sua máquina. Nenhum código sai do seu ambiente. Um recurso opcional de cargo semantic adiciona busca de embeddings local, mas a compilação padrão não precisa baixar modelo.
Opções de linha de comando
Qartez também funciona como CLI autônomo. Execute qartez <tool_name> (por exemplo, qartez map, qartez find Config, qartez impact src/server/mod.rs) para usar qualquer ferramenta principal ou de análise diretamente do terminal, sem um cliente MCP.
| Opção | Descrição | Padrão |
|---|---|---|
--root <path> | Raiz do projeto para indexar (repetível para monorepos) | Detectado automaticamente |
--reindex | Forçar reindexação completa | Desligado |
--git-depth <n> | Commits para analisar para co-mudança | 300 |
--db-path <path> | Substituir localização do índice | .qartez/index.db |
--no-watch | Desativar o observador automático de arquivos (ligado por padrão) | Observador ligado |
--wiki <path> | Gerar wiki de arquitetura após a indexação | Desligado |
--leiden-resolution <f> | Granularidade do cluster (maior = mais clusters) | 1.0 |
--format <format> | Formato de saída para subcomandos CLI: human, json, compact | human |
--log-level <level> | error, warn, info, debug, trace (qualquer diretiva tracing aceita) | info |
Estrutura do projeto
src/
main.rs Entry point: index, compute, start server
lib.rs Library root (re-exports)
cli.rs CLI argument parsing (19 subcommands)
cli_runner.rs CLI subcommand dispatcher
config.rs Project configuration and root detection
error.rs Error types
str_utils.rs String utilities (stable floor_char_boundary polyfill)
toolchain.rs Toolchain detection (Cargo, npm, Go, etc.)
watch.rs File watcher for incremental re-indexing
guard.rs Modification guard evaluation engine
embeddings.rs Local embedding model for qartez_semantic (opt-in)
server/
mod.rs MCP server entrypoint - dispatches to per-tool handlers
tools/ 30 per-tool handler modules (one file per MCP tool)
prompts.rs 6 workflow prompt templates
tiers.rs Progressive tool disclosure (core/analysis/refactor/meta)
cache.rs Tree-sitter parse cache
helpers.rs Shared handler utilities
overview.rs Overview/map generation
params.rs Tool parameter structs
treesitter.rs Tree-sitter integration helpers
mcp_instructions.md Embedded MCP server instructions
index/
mod.rs Core indexing engine (full + incremental, import resolution)
walker.rs File discovery (respects .gitignore + .qartezignore)
parser.rs Tree-sitter parser pool
symbols.rs Symbols / imports / references + AST shape hashing
languages/ 37 language adapters (21 with cyclomatic complexity)
graph/
mod.rs Graph module root
pagerank.rs PageRank on import graph
blast.rs Blast radius BFS
leiden.rs Community detection (Leiden clustering)
boundaries.rs Architecture-boundary rules engine
security.rs Security rule engine (powers qartez_security)
wiki.rs Architecture wiki renderer
git/
mod.rs Git module root
cochange.rs Co-change pair mining
diff.rs Diff range analysis (for qartez_diff_impact)
trend.rs Complexity trend over git history
knowledge.rs Code authorship and bus-factor analysis
storage/
mod.rs Storage module root
schema.rs SQLite + FTS5 schema
read.rs / write.rs Query and mutation helpers
models.rs Row structs
bin/
setup.rs Interactive IDE setup wizard (19 IDEs)
guard.rs PreToolUse modification guard
benchmark.rs Benchmark harness entry point
benchmark/ Benchmark internals (cargo feature)
profiles/ Per-language benchmark profiles (Rust, TS, Python, Go, Java)
scenarios.rs 28 benchmark scenarios
judge.rs LLM-judge harness
report.rs Markdown / JSON report writers
tokenize.rs cl100k_base token accounting
scripts/ Hook + snippet assets embedded by qartez-setup
benchmarks/fixtures.toml Pinned OSS repos for multi-language benchmarks
reports/ Generated benchmark.md / benchmark.json artifacts
Contribuindo
Encontrou um bug? Abra uma issue. Quer adicionar uma linguagem, corrigir um parser ou melhorar uma ferramenta? Pull requests são bem-vindos - leia CONTRIBUTING.md e CODE_OF_CONDUCT.md primeiro. PRs não triviais exigem a assinatura do CLA.md.
git clone https://github.com/kuberstar/qartez-mcp.git
cd qartez-mcp
cargo build
cargo test
As notas de versão de cada versão estão em CHANGELOG.md.
Segurança
Encontrou uma vulnerabilidade? Não abra uma issue pública. Siga a política de divulgação em SECURITY.md.
Licença
Licenciado duplamente sob a Qartez Small Team License (gratuita para indivíduos e pequenas equipes) e a Qartez Commercial License (para todos os demais). Leia o texto completo em LICENSE e veja COMMERCIAL.md para o resumo dos termos comerciais. Identificador SPDX: LicenseRef-Qartez-Dual.
Grep era para humanos. Qartez é para agentes.
Se o Qartez economizar até 10% da sua conta mensal de IA, dê uma estrela no repositório - é o único sinal que diz a outros desenvolvedores que essa abordagem vale a pena tentar.