codeindex

Inteligência estrutural de código via MCP: encontre onde um símbolo é definido, leia uma função, veja o que a chama, rastreie imports e avalie o que uma mudança quebra, em mais de 40 linguagens, sem ler arquivos inteiros.

Documentação

codeindex

npm MCP Registry Smithery license

Install in Cursor Install in VS Code

Um mecanismo estrutural de inteligência de código que roda como um servidor MCP para agentes de codificação de IA.

Ele indexa seu código com tree-sitter (mais de 40 linguagens), constrói um índice de texto completo por trigramas, um índice invertido de palavras e um grafo de dependências — e os expõe por meio de 16 ferramentas MCP.

 ┌─────────────┐      MCP (stdio)       ┌──────────────┐
 │  AI Agent   │ ◄─────────────────────► │   codeindex  │
 │ (Claude,    │   16 tools, JSON-RPC    │  (Zig binary) │
 │  Cursor…)   │                         │              │
 └─────────────┘                         └──────┬───────┘
                                                │
                                   tree-sitter parse (40+ langs)
                                         trigram + word index
                                         dependency graph
                                         snapshot persistence

Por quê

Agentes de codificação de IA gastam tokens lendo arquivos inteiros. O codeindex responde perguntas estruturais — contornos de símbolos, definições, chamadores, raio de impacto, cadeias de dependência — em algumas centenas de tokens em vez de milhares.

Uma única chamada de plan_change retorna: onde um símbolo é definido, todos os pontos de chamada, o papel arquitetural do arquivo (módulo god / núcleo estável / ilha / driver), literais codificados para verificar e o raio de impacto transitivo completo se o arquivo mudar.

Início rápido

O caminho mais curto, se você tiver Node 18+. Nada mais para instalar, sem chave, sem configuração — o pacote é um wrapper de 4 KB que busca o binário para sua plataforma e o verifica contra as somas de verificação publicadas:

claude mcp add codeindex -- npx -y @munhq/codeindex

Sem Node, ou você também quer a skill e o hook:

# Prebuilt binary + skill + MCP registration, in one command
curl -fsSL https://raw.githubusercontent.com/munhq/codeindex/main/install.sh | bash

# Or build from source:
cd zig && ./fetch-vendor.sh && zig build -Doptimize=ReleaseFast

Docker, para hosts que instalam servidores MCP como imagens. O workspace é montado como somente leitura; o codeindex nunca grava nele:

docker run -i --rm -v "$PWD:/workspace:ro" munhq/codeindex

Registre com seu agente de IA:

# Claude Code — the plugin is the one-step path. It ships the skill, the hook
# and the MCP server together, and its launcher finds or fetches the binary.
claude plugin marketplace add munhq/codeindex
claude plugin install codeindex@codeindex

# Without the plugin (or for a different MCP client), register the binary
# directly. Do not do both: two registrations mean two servers, two copies of
# every tool schema, and two writers on one snapshot. install.sh detects the
# plugin and skips this step when it is present.
claude mcp add -s user codeindex -- ~/.local/bin/codeindex --mcp

# Cursor / Claude Desktop / other MCP clients: add to your config
{
  "mcpServers": {
    "codeindex": {
      "command": "npx",
      "args": ["-y", "@munhq/codeindex"]
    }
  }
}

Cada listagem aponta para o mesmo servidor: npm @munhq/codeindex, o registro oficial do MCP como io.github.munhq/codeindex e Smithery como munhq/codeindex.

Na próxima vez que seu agente iniciar, o codeindex indexa seu projeto em segundo plano e atende consultas estruturais.

Ferramentas MCP

FerramentaO que faz
statusEstatísticas do índice: contagem de arquivos, contagem de símbolos, estado da indexação, % de economia de tokens
searchBusca de texto completo acelerada por trigramas em todos os arquivos indexados
find_symbolEncontra definições de símbolos (funções, structs, classes…) por nome
find_wordConsulta exata de palavras/identificadores no índice invertido de palavras
find_callersChamadores aproximados de um símbolo (heurística, sem resolução completa de nomes)
get_outlineContorno estrutural de um arquivo (símbolos, contagens de linhas)
get_treeÁrvore de diretórios com metadados de arquivos
get_importsQuais arquivos um determinado arquivo importa/depende
get_imported_byDependências reversas — quem importa este arquivo
get_change_impactRaio de impacto transitivo: o que quebra se um arquivo mudar
plan_changePlano completo de refatoração para um símbolo ou arquivo — definições, chamadores, papel do arquivo, literais, raio de impacto
get_hot_filesArquivos alterados recentemente ordenados por recência
read_fileLê o conteúdo de um arquivo com intervalo de linhas opcional
read_symbolLê apenas o código-fonte de um símbolo (com linhas de contexto opcionais)
index_workspaceIndexa ou reindexa um diretório de workspace
analyzeExecuta uma das 16 análises de código (veja abaixo)

Análises (ferramenta analyze)

AnáliseO que encontra
securitySegredos codificados, padrões de injeção de SQL, blocos inseguros, uso de eval
dead_codeArquivos e símbolos não referenciados
unwrap_auditTratamento de erros propenso a .unwrap() / pânico (Rust)
test_coverageArquivos sem cobertura de testes
architectureProblemas arquiteturais — módulos god, dependências circulares, ilhas
crossrefReferências de símbolos entre arquivos
type_driftIncompatibilidades de assinaturas de tipos entre módulos
db_schemaDivergência de esquema de banco de dados entre migrações e código
migration_parityMigrações ausentes para alterações de esquema
manifest_complianceProblemas de conformidade em package.json / Cargo.toml / go.mod
literal_scanURLs, IPs, portas, caminhos absolutos e TODOs codificados
couplingMétricas de acoplamento de módulos
cyclesDetecção de dependências circulares
duplicationFunções livres reinventadas — o mesmo trabalho escrito duas vezes
clonesCorpos de funções copiados e colados, ignorando nomes e espaços em branco
healthResumo das análises acima em um relatório de saúde do índice

Linguagens suportadas

Mais de 40 linguagens via tree-sitter: Rust, Python, TypeScript/TSX, Go, Zig, C, C++, Java, Ruby, Bash, C#, Kotlin, Lua, Scala, Elixir, R, Swift, Dart, Haskell, TOML, JSON, YAML, HTML, CSS, SCSS, SQL, HCL, Dockerfile, Markdown, Nix, Make e outras.

Configuração

codeindex --mcp                          # Run as MCP server (stdio)
codeindex --workspace ./my-project       # Index a specific directory
codeindex --project-id my-project        # Project identifier
codeindex -v                             # Print version
codeindex -h                             # Print help

# Environment variables
CODEINDEX_WORKSPACE=/path/to/project     # Same as --workspace
CODEINDEX_PROJECT_ID=my-project          # Same as --project-id

O codeindex detecta automaticamente a raiz do projeto subindo a partir do diretório de trabalho procurando por .git, package.json, Cargo.toml, go.mod, build.zig, pyproject.toml, etc.

Ele se recusa a indexar todo o seu diretório pessoal ou a raiz do sistema de arquivos — passe --workspace para ser explícito.

Arquitetura

  • Parser: tree-sitter com mais de 40 gramáticas, compilado em um único binário
  • Índice: índice de trigramas para busca de texto difusa + índice invertido de palavras para consulta exata de identificadores
  • Grafo de dependências: resolução de importações em nível de arquivo com arestas diretas e reversas
  • Armazenamento de versões: rastreia alterações de arquivos com números de sequência para atualizações incrementais
  • Observador ao vivo: reindexa em criação/modificação/exclusão de arquivos (thread em segundo plano no modo MCP). inotify no Linux; uma varredura de polling no macOS e Windows, que compara mtime e tamanho a cada poucos segundos. status informa qual backend está ativo como watcher_backend.
  • Snapshot: persiste o índice completo em .codeindex.json, para que uma reinicialização carregue o snapshot em vez de reindexar
  • Servidor MCP: JSON-RPC sobre stdio, implementa o protocolo MCP 2024-11-05

Suporte de plataforma

Cada linha é construída pela CI e seus testes são executados nessa plataforma, exceto onde indicado. status informa o backend do observador ao vivo para que nunca seja uma suposição.

bináriotestes na CIobservadorinstall.shplugin
Linux x86_64SimSiminotifySimSim
Linux aarch64Simcompilação cruzadainotifySimSim
macOS aarch64SimSimpollingSimSim
macOS x86_64Simcompilação cruzadapollingSimSim
Windows x86_64SimSimpollingprecisa de um shellveja abaixo
Windows aarch64Simcompilação cruzadapollingprecisa de um shellveja abaixo

No Windows, install.sh e o lançador do plugin são scripts de shell, então eles precisam de Git Bash, MSYS2 ou Cygwin — eles detectam isso e resolvem o ativo .exe correto. O plugin registra seu servidor por meio desse lançador, então um Claude Code nativo do Windows sem shell deve registrar o binário diretamente:

claude mcp add -s user codeindex -- C:\path\to\codeindex.exe --mcp

Nada aqui é assinado ou notarizado. No macOS, um binário obtido com curl é executado sem um prompt do Gatekeeper; um baixado por navegador é colocado em quarentena, e xattr -d com.apple.quarantine codeindex o limpa.

Compilando a partir do código-fonte

Requer Zig 0.16.0.

cd zig
./fetch-vendor.sh    # Clone tree-sitter + 40 grammar repos
zig build -Doptimize=ReleaseFast
# Binary: zig/zig-out/bin/codeindex

Execute os testes:

cd zig && zig build test-bin && ./zig-out/bin/test

zig build test roteia os resultados pelo protocolo IPC do build runner na saída padrão, que os fontes C do tree-sitter vinculados corrompem por meio de seus caminhos de depuração printf. Compilar o binário de teste e executá-lo diretamente são os mesmos testes sem esse protocolo no caminho.

Como se compara

codeindexast-grepctagsLSIFSourcegraph
Nativo MCPSimNãoNãoNãoNão
Eficiente em tokensSim (contornos, não arquivos completos)NãoParcialSimSim
Binário únicoSimSimSimNãoNão (servidor)
Observador ao vivoSim (inotify / polling)NãoNãoNãoNão
Grafo de dependênciasSimNãoNãoSimSim
Raio de impactoSim (transitivo)NãoNãoNãoParcial
Planejador de refatoraçãoSim (plan_change)NãoNãoNãoNão
Linguagens40+20+50+VariaVaria

Combina com chat-recall

O codeindex responde perguntas sobre o código à sua frente. chat-recall responde perguntas sobre o trabalho que você já fez — ele indexa suas sessões do Claude Code, Gemini CLI, Codex, OpenCode e Antigravity em um histórico pesquisável e o expõe também via MCP.

Juntos, eles cobrem as duas metades do que um agente esquece: o codeindex impede que ele releia arquivos que poderia ter contornado, e o chat-recall impede que ele refaça trabalho que já concluiu. O chat-recall detecta um binário codeindex no seu PATH e registra quatro ferramentas extras de inteligência de código quando encontra um — nenhum requer o outro.

Licença

MIT. Veja LICENSE.