CodeSeeker
Servidor MCP de inteligência de código baseado em grafo, com busca semântica, grafo de conhecimento e análise de dependências para Claude Code, Cursor e Copilot.
Documentação
CodeSeeker
Busca híbrida de quatro camadas e grafo de conhecimento para assistentes de codificação de IA.
BM25 + embeddings vetoriais + resumos de diretório RAPTOR + expansão de grafo — fundidos em uma única ferramenta MCP que dá a Claude, Copilot e Cursor um entendimento real do seu codebase.
Funciona com Claude Code, GitHub Copilot (VS Code 1.99+), Cursor, Windsurf e Claude Desktop.
Zero configuração — indexa no primeiro uso, mantém-se sincronizado automaticamente.
O Problema
Assistentes de IA são editores poderosos, mas navegam pelo código como turistas:
- Grep encontra texto — não significado.
"find authentication logic"retorna todos os arquivos que contêm a palavra "auth" - Leituras de arquivo são isoladas — Claude vê um arquivo, mas não suas dependências, chamadores ou os padrões que sua equipe estabeleceu
- Sem memória do seu projeto — cada sessão começa do zero
CodeSeeker resolve isso. Ele indexa seu codebase uma vez e dá aos assistentes de IA um grafo de conhecimento consultável que eles podem usar a cada interação.
Como Funciona
Um pipeline de 4 estágios é executado em cada consulta:
Query: "find JWT refresh token logic"
│
▼ Stage 1 — Hybrid retrieval
┌─────────────────────────────────────────────────────┐
│ BM25 (exact symbols, camelCase tokenized) │
│ + │
│ Vector search (384-dim Xenova embeddings) │
│ ↓ │
│ Reciprocal Rank Fusion: score = Σ 1/(60 + rank_i) │
│ Top-30 results, including RAPTOR directory nodes │
└─────────────────────────────────────────────────────┘
│
▼ Stage 2 — RAPTOR cascade (conditional)
┌─────────────────────────────────────────────────────┐
│ IF best directory-summary score ≥ 0.5: │
│ → narrow results to that directory automatically │
│ ELSE: all 30 results pass through unchanged │
│ Effect: "what does auth/ do?" scopes to auth/ │
│ "jwt.ts decode function" bypasses this │
└─────────────────────────────────────────────────────┘
│
▼ Stage 3 — Scoring and deduplication
┌─────────────────────────────────────────────────────┐
│ Dedup: keep highest-score chunk per file │
│ Source files: +0.10 (definition sites matter) │
│ Test files: −0.15 (prevent test dominance) │
│ Symbol boost: +0.20 (query token in filename) │
│ Multi-chunk: up to +0.30 (file has many hits) │
└─────────────────────────────────────────────────────┘
│
▼ Stage 4 — Graph expansion
┌─────────────────────────────────────────────────────┐
│ Top-10 results → follow IMPORTS/CALLS/EXTENDS edges │
│ Structural neighbors scored at source × 0.7 │
│ Avg graph connectivity: 20.8 edges/node │
└─────────────────────────────────────────────────────┘
│
▼
auth/jwt.ts (0.94), auth/refresh.ts (0.89), ...
O grafo de conhecimento é construído a partir de imports analisados por AST no momento da indexação. É ele que alimenta analyze dependencies, detecção de código morto e expansão de grafo em cada busca.
O Que o Torna Diferente
| Abordagem | Pontos fortes | Limitações |
|---|---|---|
| Grep / ripgrep | Rápido, universal | Sem entendimento semântico |
| Somente busca vetorial | Encontra código semelhante | Perde relações estruturais |
| Serena | Navegação precisa de símbolos via LSP, 30+ idiomas | Sem busca semântica, sem raciocínio entre arquivos |
| Codanna | Busca rápida de símbolos, bons grafos de chamada | Busca semântica exige JSDoc — código não documentado não recebe embeddings; sem BM25, sem RAPTOR, Windows experimental |
| CodeSeeker | BM25 + fusão de embeddings + RAPTOR + grafo + padrões de codificação + AST multilíngue | Exige indexação inicial (30s–5min) |
O que ferramentas LSP não conseguem fazer:
- "Encontre código que lida com erros assim" → busca de padrões semânticos
- "Qual abordagem de validação este projeto usa?" → padrões de codificação detectados automaticamente
- "Mostre-me tudo relacionado a autenticação" → travessia de grafo por dependências indiretas
O que a busca somente vetorial perde:
- Cadeias diretas de import/export
- Hierarquias de herança de classes
- Quais arquivos realmente dependem de quais
Instalação
Recomendado: npx (sem necessidade de instalação)
A forma padrão de configurar qualquer servidor MCP — sem instalação global necessária:
{
"mcpServers": {
"codeseeker": {
"command": "npx",
"args": ["-y", "codeseeker", "serve", "--mcp"]
}
}
}
Adicione isto ao seu arquivo de configuração MCP (veja abaixo para locais por cliente) e reinicie seu editor.
Instalação global via npm
npm install -g codeseeker
codeseeker install --vscode # or --cursor, --windsurf
🔌 Plugin Claude Code
Para usuários da CLI do Claude Code — adiciona hooks de sincronização automática e comandos de barra:
/plugin install codeseeker@github:jghiringhelli/codeseeker#plugin
Comandos de barra: /codeseeker:init, /codeseeker:reindex
☁️ Devcontainers / GitHub Codespaces
{
"name": "My Project",
"image": "mcr.microsoft.com/devcontainers/javascript-node:18",
"postCreateCommand": "npm install -g codeseeker && codeseeker install --vscode"
}
✅ Verificação
Pergunte ao seu assistente de IA: "Quais ferramentas do CodeSeeker você tem?"
Você deve ver: search, analyze, index — as três ferramentas do CodeSeeker.
Opções Avançadas de Instalação
📋 Configuração MCP por cliente
O JSON de configuração MCP é o mesmo para todos os clientes — apenas o local do arquivo difere:
| Cliente | Arquivo de configuração |
|---|---|
| VS Code (Claude Code / Copilot) | .vscode/mcp.json no seu projeto, ou ~/.vscode/mcp.json globalmente |
| Cursor | .cursor/mcp.json no seu projeto |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows) |
| Windsurf | .windsurf/mcp.json no seu projeto |
{
"mcpServers": {
"codeseeker": {
"command": "npx",
"args": ["-y", "codeseeker", "serve", "--mcp"]
}
}
}
🖥️ Uso Autônomo via CLI (sem assistente de IA)
npm install -g codeseeker
cd your-project
codeseeker init
codeseeker -c "how does authentication work in this project?"
O Que Você Obtém
Uma vez configurado, Claude tem acesso a estas ferramentas MCP (usadas automaticamente):
| Ferramenta | Ações / Uso | O Que Faz |
|---|---|---|
search | {query} | Busca híbrida: vetor + texto BM25 + correspondência de caminho, fundidos com RRF; resumos de diretório RAPTOR aparecem para consultas abstratas |
search | {query, search_type: "graph"} | Busca híbrida + Graph RAG — segue arestas de import/chamada/extends para revelar arquivos estruturalmente conectados |
search | {query, search_type: "vector"} | Busca pura por similaridade de cosseno de embeddings (sem BM25 ou pontuação de caminho) |
search | {query, search_type: "fts"} | Busca de texto pura BM25 com tokenização CamelCase e expansão de sinônimos |
search | {query, read: true} | Busca + leitura do conteúdo do arquivo em uma única etapa |
search | {filepath} | Lê um arquivo com seu código relacionado incluído automaticamente |
analyze | {action: "dependencies", filepath} | Percorre o grafo de conhecimento (imports, chamadas, extends) |
analyze | {action: "standards"} | Padrões detectados do seu projeto (validação, tratamento de erros) |
analyze | {action: "duplicates"} | Encontra blocos de código duplicados/semelhantes em todo o seu codebase |
analyze | {action: "dead_code"} | Detecta exports, funções e classes não utilizados |
index | {action: "init", path} | Aciona a indexação manualmente (raramente necessário) |
index | {action: "sync", changes} | Atualiza o índice para arquivos específicos |
index | {action: "exclude", paths} | Exclui/inclui dinamicamente arquivos do índice |
index | {action: "status"} | Lista projetos indexados com contagens de arquivos/chunks |
Você não invoca estas ferramentas manualmente — Claude as usa automaticamente ao buscar código ou analisar relações.
Como Funciona a Indexação
Você não precisa indexar manualmente. Quando Claude usa qualquer ferramenta do CodeSeeker, a ferramenta verifica automaticamente se o projeto está indexado. Se não estiver, ela indexa no primeiro uso.
User: "Find the authentication logic"
│
▼
┌─────────────────────────────────────┐
│ Claude calls search({query: ...}) │
│ │ │
│ ▼ │
│ Project indexed? ──No──► Index now │
│ │ (auto) │
│ Yes │ │
│ │◀───────────────────┘ │
│ ▼ │
│ Return search results │
└─────────────────────────────────────┘
A primeira busca em um novo projeto leva de 30 segundos a vários minutos (dependendo do tamanho). Buscas subsequentes são instantâneas.
Pesquisa sobre Qualidade de Busca
📊 Estudo de ablação de componentes (v2.0.0) — impacto medido de cada camada de recuperação
Configuração
18 consultas rotuladas manualmente em dois codebases reais:
| Corpus | Linguagem | Arquivos | Consultas | Tipos de consulta |
|---|---|---|---|---|
| Conclave | TypeScript (monorepo pnpm) | 201 | 10 | Busca de símbolos, cadeias entre arquivos, fora de escopo |
| ImperialCommander2 | C# / Unity | 199 | 8 | Busca de classes, conexão de controllers, I/O de arquivos |
Cada consulta tem um ou mais alvos mustFind (nomes base exatos de arquivos) e alvos opcionais mustNotFind (verificação de vazamento de escopo). As consultas foram executadas em um índice real construído a partir do código-fonte — embeddings Xenova reais, grafo real, nós RAPTOR L2 reais — para refletir condições de produção.
Métricas: MRR (Mean Reciprocal Rank), P@1 (Precisão em 1), R@5 (Recall em 5), F1@3.
Resultados da ablação
| Configuração | MRR | P@1 | P@3 | R@5 | F1@3 | Observações |
|---|---|---|---|---|---|---|
| Linha de base híbrida (BM25 + embed + RAPTOR, sem grafo) | 75.2% | 61.1% | 29.6% | 91.7% | 44.4% | Padrão de produção |
| + grafo 1-hop | 74.9% | 61.1% | 29.6% | 91.7% | 44.4% | ±0% no ranking, adiciona vizinhos estruturais |
| + grafo 2-hop | 74.9% | 61.1% | 29.6% | 91.7% | 44.4% | Vazamentos de escopo em consultas não relacionadas |
| Sem RAPTOR (grafo 1-hop) | 74.9% | 61.1% | 29.6% | 91.7% | 44.4% | RAPTOR contribui com +0.3% |
O que cada camada realmente faz
Fusão BM25 + embeddings (RRF)
O cavalo de batalha. Responde por ~94% da qualidade de ranqueamento sozinho. BM25 captura nomes exatos de símbolos e tokens camelCase; embeddings vetoriais capturam similaridade semântica quando os nomes diferem. Fundidos com Reciprocal Rank Fusion para combinar ambos os sinais sem ajuste manual de pesos.
RAPTOR (resumos hierárquicos de diretórios)
Gera nós de embedding por diretório por meio de mean-pooling de todos os embeddings de arquivos em uma pasta. Atua como pós-filtro: quando um resumo de diretório pontua ≥ 0.5 contra a consulta, os resultados são restritos aos arquivos daquele diretório. Contribuição medida: +0.3% MRR em consultas de símbolos. Dispara de forma conservadora — apenas quando o diretório é uma correspondência óbvia. Seu valor real está em consultas abstratas ("o que o módulo de pagamentos faz?") que não aparecem neste benchmark; para essas consultas, ele evita dispersão ampla por todo o codebase.
Grafo de conhecimento (arestas de import/dependência)
Conectividade média: 20.8 arestas arquivo→arquivo por nó em ambos os codebases TS e C#. Impacto medido no ranqueamento: ±0% MRR para expansão de 1-hop. O grafo não move o MRR porque a camada semântica já encontra os arquivos certos — os vizinhos do grafo geralmente já estão no top-15. Seu valor é estrutural: a ação analyze dependencies e o tipo de busca explícito graph dão a Claude cadeias de import percorríveis, hierarquias de herança e caminhos de dependência que apenas embeddings não conseguem fornecer.
Pontuação de reforço/penalidade por tipo
Arquivos de código-fonte recebem reforço de +0.10 na pontuação; arquivos de teste recebem penalidade de −0.15; arquivos de lock e documentação recebem penalidade de −0.05. Sem isso, integration.test.ts ficaria acima de dag-engine.ts em consultas de símbolos exatos, porque arquivos de teste importam e exercitam todos os símbolos do código-fonte. A penalidade corrige isso sem eliminar arquivos de teste dos resultados.
Correção de exclusão de diretório em monorepos
A mudança de maior impacto na v1.12.0: remoção de packages/ da lista padrão de exclusões. Para monorepos pnpm/yarn/lerna onde todo o código-fonte vive sob packages/, essa exclusão descartava silenciosamente todos os arquivos de código-fonte. Efeito: 10% → 72% MRR no benchmark do monorepo Conclave.
Limitações conhecidas
| Consulta | Alvo | Problema | Causa raiz |
|---|---|---|---|
cv-prompts | orchestrator.ts | posição 97+ mesmo com grafo de 2-hop | prompt-builder.test.ts supera prompt-builder.ts semanticamente; o arquivo de código-fonte nunca entra no top-10, então não podemos percorrer o grafo a partir dele até orchestrator.ts. Dominância de arquivos de teste em consultas entre arquivos. |
cv-exec-mode | types.ts | posição 11–12 | types.ts é um arquivo de exportação pura de tipos; baixa densidade de palavras-chave. Encontrado dentro de R@5 (posição ≤ 15). |
Script de benchmark
Reproduza com:
npm run build
node scripts/real-bench.js
Requer que C:\workspace\claude\conclave e C:\workspace\ImperialCommander2 estejam presentes localmente (ou atualize os caminhos em scripts/real-bench.js).
Padrões de Codificação Detectados Automaticamente
CodeSeeker analisa seu codebase e extrai padrões:
{
"validation": {
"email": {
"preferred": "z.string().email()",
"usage_count": 12,
"files": ["src/auth.ts", "src/user.ts"]
}
},
"react-patterns": {
"state": {
"preferred": "useState<T>()",
"usage_count": 45
}
}
}
Categorias de padrões detectados:
- validation: Zod, Yup, Joi, validator.js, regex personalizado
- error-handling: respostas de erro de API, padrões try-catch, classes Error personalizadas
- logging: Console, Winston, Bunyan, logging estruturado
- testing: configuração Jest/Vitest, padrões de asserção
- react-patterns: Hooks (useState, useEffect, useMemo, useCallback, useRef)
- state-management: Redux Toolkit, Zustand, React Context, TanStack Query
- api-patterns: Fetch, Axios, rotas Express, rotas de API Next.js
Quando Claude escreve código novo, ele segue suas convenções existentes em vez de inventar novas.
Gerenciando Exclusões de Índice
Se Claude notar arquivos que não deveriam ser indexados (como a pasta Library do Unity, saídas de build ou arquivos gerados), ele pode excluí-los dinamicamente:
// Exclude Unity Library folder and generated files
index({
action: "exclude",
project: "my-unity-game",
paths: ["Library/**", "Temp/**", "*.generated.cs"],
reason: "Unity build artifacts"
})
As exclusões são persistidas em .codeseeker/exclusions.json e respeitadas automaticamente durante a reindexação.
Ferramentas de Limpeza de Código
CodeSeeker ajuda você a manter um codebase limpo encontrando código duplicado e detectando código morto.
Encontrando Código Duplicado
Peça a Claude para encontrar blocos de código semelhantes que poderiam ser consolidados:
"Find duplicate code in my project"
"Are there any similar functions that could be merged?"
"Show me copy-pasted code that should be refactored"
CodeSeeker usa similaridade vetorial para encontrar código semanticamente semelhante — não apenas correspondências exatas. Ele detecta:
- Funções copiadas e coladas com pequenas variações
- Lógica de validação semelhante entre arquivos
- Padrões repetidos que poderiam ser extraídos em utilitários
Encontrando Código Morto
Peça a Claude para identificar código não utilizado que pode ser removido com segurança:
"Find dead code in this project"
"What functions are never called?"
"Show me unused exports"
CodeSeeker analisa o grafo de conhecimento para encontrar:
- Funções/classes exportadas que nunca são importadas
- Funções internas sem chamadores
- Arquivos órfãos sem dependências de entrada
Fluxo de trabalho de exemplo:
User: "Use CodeSeeker to clean up this project"
Claude: I'll analyze your codebase for cleanup opportunities.
Found 3 duplicate code blocks:
- validateEmail() in auth.ts and user.ts (92% similar)
- formatDate() appears in 4 files with minor variations
- Error handling pattern repeated in api/*.ts
Found 2 dead code files:
- src/utils/legacy-helper.ts (0 imports)
- src/services/unused-service.ts (exported but never imported)
Would you like me to:
1. Consolidate the duplicate validators into a shared utility?
2. Remove the dead code files?
Suporte a Linguagens
| Linguagem | Parser | Extração de Relacionamentos |
|---|---|---|
| TypeScript/JavaScript | Babel AST | Excelente |
| Python | Tree-sitter | Excelente |
| Java | Tree-sitter | Excelente |
| C# | Regex | Boa |
| Go | Regex | Boa |
| Rust, C/C++, Ruby, PHP | Regex | Básica |
Os parsers Tree-sitter são instalados automaticamente quando necessário.
Mantendo o Índice Sincronizado
Com o Plugin do Claude Code
O plugin instala hooks que atualizam o índice automaticamente:
| Evento | O Que Acontece |
|---|---|
| Claude edita um arquivo | Índice atualizado automaticamente |
Claude executa git pull/checkout/merge | Reindexação completa acionada |
Você executa /codeseeker:reindex | Reindexação completa manual |
Você não precisa fazer nada — o plugin cuida da sincronização automaticamente.
Somente com o Servidor MCP (Cursor, Claude Desktop)
- Alterações iniciadas pelo Claude: Claude pode chamar a ferramenta
index({action: "sync"}) - Alterações manuais: Não são detectadas automaticamente — peça ao Claude para reindexar periodicamente
Resumo da Sincronização
| Configuração | Edições do Claude | Operações Git | Edições Manuais |
|---|---|---|---|
| Plugin (Claude Code) | Auto | Auto | Manual |
| MCP (Cursor, Desktop) | Peça ao Claude | Peça ao Claude | Peça ao Claude |
| CLI | Auto | Auto | Manual |
Quando o CodeSeeker Mais Ajuda
Bom para:
- Bases de código grandes (10K+ arquivos) onde Claude tem dificuldade em encontrar código relevante
- Projetos com padrões estabelecidos que você quer que Claude siga
- Cadeias de dependências complexas entre vários arquivos
- Equipes que desejam código gerado por IA consistente
Menos útil:
- Projetos greenfield com pouco código existente
- Scripts de arquivo único
- Projetos onde você está alterando ativamente a arquitetura
Arquitetura
┌──────────────────────────────────────────────────────────┐
│ Claude Code │
│ │ │
│ MCP Protocol │
│ │ │
│ ┌──────────────────────▼──────────────────────────┐ │
│ │ CodeSeeker MCP Server │ │
│ │ ┌─────────────┬─────────────┬────────────────┐ │ │
│ │ │ Vector │ Knowledge │ Coding │ │ │
│ │ │ Search │ Graph │ Standards │ │ │
│ │ │ (SQLite) │ (SQLite) │ (JSON) │ │ │
│ │ └─────────────┴─────────────┴────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
Todos os dados são armazenados localmente em .codeseeker/. Nenhum serviço externo é necessário.
Para equipes grandes (100K+ arquivos, índices compartilhados), o modo servidor suporta PostgreSQL + Neo4j. Consulte Storage Documentation.
Para os detalhes técnicos completos — fórmulas exatas de pontuação, esquema das ferramentas MCP, tipos de arestas do grafo, lógica de limite do RAPTOR, estágios do pipeline, níveis de confiança da análise — consulte o Technical Architecture Manual.
Solução de Problemas
Servidor MCP não conectando
- Verifique se npm e npx funcionam:
npx -y codeseeker --version - Verifique a sintaxe do arquivo de configuração MCP (JSON válido, sem vírgulas finais)
- Reinicie completamente o seu editor/aplicativo Claude
- Verifique se o Node.js está instalado:
node --version(necessário v18+)
Indexação parece lenta
A indexação inicial de projetos grandes (50K+ arquivos) pode levar mais de 5 minutos. Os usos subsequentes são instantâneos.
Ferramentas não aparecem no Claude
- Pergunte ao Claude: "Quais ferramentas do CodeSeeker você tem?"
- Se nenhuma ferramenta aparecer, verifique se o arquivo de configuração MCP existe e tem a sintaxe correta
- Reinicie completamente o seu IDE (não apenas recarregue a janela)
- Verifique o status da conexão MCP do Claude/Copilot no IDE
Ainda com problemas?
Abra um issue: GitHub Issues
Documentação
- Integration Guide - Como todos os componentes se conectam
- Architecture - Mergulho técnico aprofundado
- CLI Commands - Referência completa de comandos
Plataformas Suportadas
| Cliente | Suporte MCP | Config |
|---|---|---|
| Claude Code (VS Code) | ✅ | .vscode/mcp.json ou plugin |
| GitHub Copilot (VS Code 1.99+) | ✅ | .vscode/mcp.json |
| Cursor | ✅ | .cursor/mcp.json |
| Windsurf | ✅ | .windsurf/mcp.json |
| Claude Desktop | ✅ | claude_desktop_config.json |
| Visual Studio | ✅ | codeseeker install --vs |
Claude Code e GitHub Copilot compartilham o mesmo
.vscode/mcp.json— configure uma vez, funciona para ambos.
Suporte
Se o CodeSeeker for útil para você, considere patrocinar o projeto.
Licença
Licença MIT. Consulte LICENSE.
CodeSeeker dá ao Claude a compreensão de código que grep e embeddings sozinhos não conseguem fornecer.
Parte da Especificação Generativa
Uma ferramenta gratuita por trás da Especificação Generativa (GS) — a disciplina para construir software com IA que não se desvia: você cria uma especificação precisa o suficiente para que uma IA sem estado derive o código correto a partir dela, e um harness a verifica contra um sistema ao vivo.
- 📄 White paper (acesso aberto): https://doi.org/10.5281/zenodo.21726017
- 🧭 Comece aqui — método, ferramentas, depoimentos: https://pragmaworks.dev
- 🔨 The Forge — workshop prático de GS de 2 dias para sua equipe: https://forgeworkshop.dev