Code Index MCP
Um servidor para indexação, busca e análise de código, permitindo que LLMs interajam com repositórios de código.
Documentação
Code Index MCP
Indexação e análise inteligente de código para Modelos de Linguagem de Grande Escala
Transforme a forma como a IA entende seu código com recursos avançados de busca, análise e navegação.
Visão Geral
Code Index MCP é um servidor Model Context Protocol que preenche a lacuna entre modelos de IA e bases de código complexas. Ele fornece indexação inteligente, recursos avançados de busca e análise detalhada de código para ajudar assistentes de IA a entender e navegar em seus projetos de forma eficaz.
Ideal para: Revisão de código, refatoração, geração de documentação, assistência de depuração e análise arquitetural.
Início Rápido
🚀 Configuração Recomendada (Para a Maioria dos Usuários)
A maneira mais fácil de começar com qualquer aplicativo compatível com MCP:
Pré-requisitos: Python 3.10+ e uv
-
Adicione à sua configuração MCP (ex.:
claude_desktop_config.jsonou~/.claude.json):{ "mcpServers": { "code-index": { "command": "uvx", "args": ["code-index-mcp"] } } }Opcional: acrescente
--project-path /absolute/path/to/repoao arrayargspara que o servidor inicialize com esse repositório automaticamente (equivalente a chamarset_project_pathapós a inicialização). -
Reinicie seu aplicativo –
uvxgerencia automaticamente a instalação e execução -
Comece a usar (dê estes comandos ao seu assistente de IA):
Set the project path to /Users/dev/my-react-app Find all TypeScript files in this project Search for "authentication" functions Analyze the main App.tsx fileSe você iniciar com
--project-path, pode pular o primeiro comando acima - o servidor já sabe a localização do projeto.
Configuração do Codex CLI
Se você estiver usando o Codex CLI da Anthropic, adicione o servidor ao ~/.codex/config.toml.
No Windows, o arquivo fica em C:\Users\<you>\.codex\config.toml:
[mcp_servers.code-index]
type = "stdio"
command = "uvx"
args = ["code-index-mcp"]
Você pode acrescentar
--project-path C:/absolute/path/to/repoà listaargspara definir o projeto automaticamente na inicialização (mesmo efeito de executar a ferramentaset_project_path).
No Windows, o uvx precisa que os diretórios de perfil padrão estejam presentes.
Mantenha a substituição de ambiente no mesmo bloco para que o MCP inicie de forma confiável:
env = {
HOME = "C:\\Users\\<you>",
APPDATA = "C:\\Users\\<you>\\AppData\\Roaming",
LOCALAPPDATA = "C:\\Users\\<you>\\AppData\\Local",
SystemRoot = "C:\\Windows"
}
Linux e macOS já expõem os caminhos XDG necessários e o HOME, então você geralmente pode omitir a tabela env
nesse caso.
Adicione substituições apenas se você executar o CLI dentro de um contêiner restrito.
FastMCP e Manifestos de Descoberta
- Execute
fastmcp run fastmcp.jsonpara iniciar o servidor via FastMCP com o entrypoint de origem correto e os metadados de dependência. Passe--project-path(ou chame a ferramentaset_project_pathapós a inicialização) para que o índice inicie com o repositório correto. - Sirva ou copie
.well-known/mcp.jsonpara compartilhar um manifesto MCP compatível com padrões. Clientes que suportam a convenção.well-known(ex.: Claude Desktop, Codex CLI) podem importar este arquivo diretamente em vez de criar configurações manualmente. - Publique
.well-known/mcp.llmfeed.jsonquando quiser expor os metadados mais ricos do LLM Feed. Ele referencia a mesma definição de servidorcode-indexalém de links de documentação/código-fonte, o que ajuda registros a apresentar descrições, tags e recursos automaticamente.
Ao compartilhar os manifestos, lembre os consumidores de fornecer --project-path (ou chamar
set_project_path) para que o servidor indexe o repositório pretendido.
Casos de Uso Típicos
Revisão de Código: "Encontre todos os lugares que usam a API antiga"
Ajuda com Refatoração: "Onde esta função é chamada?"
Aprendizado de Projetos: "Mostre-me os principais componentes deste projeto React"
Depuração: "Busque todo o código relacionado a tratamento de erros"
Recursos Principais
🔍 Busca e Análise Inteligentes
- Arquitetura de Dupla Estratégia: Parsing especializado com tree-sitter para 10 linguagens principais, estratégia de fallback para mais de 50 tipos de arquivo
- Integração Direta com Tree-sitter: Sem fallbacks de regex para linguagens especializadas - falha rápida com erros claros
- Busca Avançada: Detecta e usa automaticamente a melhor ferramenta disponível (ugrep, ripgrep, ag ou grep)
- Suporte Universal de Arquivos: Cobertura abrangente, desde parsing avançado de AST até indexação básica de arquivos
- Análise de Arquivos: Insights profundos sobre estrutura, imports, classes, métodos e métricas de complexidade após executar
build_deep_index
🗂️ Suporte a Múltiplas Linguagens
- 10 Linguagens com Parsing AST via Tree-sitter: Python, JavaScript, TypeScript, Java, Kotlin, C#, Go, Objective-C, Zig, Rust
- Mais de 50 Tipos de Arquivo com Estratégia de Fallback: C/C++, Ruby, PHP e todas as outras linguagens de programação
- Arquivos de Documento e Configuração: Markdown, JSON, YAML, XML com tratamento adequado
- Frontend Web: Vue, React, Svelte, HTML, CSS, SCSS
- Java Web e Build: Arquivos JSP/Tag (
.jsp,.jspx,.jspf,.tag,.tagx), Grails/GSP (.gsp), builds Gradle e Groovy (.gradle,.groovy),.propertiese Protocol Buffers (.proto) - Banco de Dados: Variantes de SQL, NoSQL, stored procedures, migrações
- Configuração: JSON, YAML, XML, Markdown
- Ver lista completa
⚡ Monitoramento em Tempo Real e Atualização Automática
- Observador de Arquivos: Atualização automática do índice quando arquivos mudam
- Multiplataforma: Monitoramento nativo do sistema de arquivos do SO
- Processamento Inteligente: Agrupa mudanças rápidas para evitar reconstruções excessivas
- Atualização de Índice Raso: Observa mudanças de arquivos e mantém a lista de arquivos atualizada; execute uma reconstrução profunda quando precisar de metadados de símbolos
⚡ Desempenho e Eficiência
- Parsing AST com Tree-sitter: Parsing de sintaxe nativa para extração precisa de símbolos
- Cache Persistente: Armazena índices para acesso subsequente extremamente rápido
- Filtragem Inteligente: Exclusão inteligente de diretórios de build e arquivos temporários
- Eficiência de Memória: Otimizado para bases de código grandes
- Dependências Diretas: Sem mecanismos de fallback - falha rápida com mensagens de erro claras
Tipos de Arquivo Suportados
📁 Linguagens de Programação (Clique para expandir)
Linguagens com Estratégias Especializadas de Tree-sitter:
- Python (
.py,.pyw) - Análise completa de AST com extração de classes/métodos e rastreamento de chamadas - JavaScript (
.js,.jsx,.mjs,.cjs) - Parsing de classes e funções ES6+ com tree-sitter - TypeScript (
.ts,.tsx) - Extração completa de símbolos com reconhecimento de tipos e interfaces - Java (
.java) - Hierarquia completa de classes, assinaturas de métodos e relacionamentos de chamada - Kotlin (
.kt,.kts) - Extração de símbolos com reconhecimento de pacotes, métodos e relacionamentos de chamada - C# (
.cs) - Extração de tipos/membros com reconhecimento de namespaces e relacionamentos de chamada - Go (
.go) - Métodos de structs, tipos de receiver e análise de funções - Rust (
.rs) - Funções, nomes com reconhecimento de módulos, métodos impl, structs/enums/traits e relacionamentos básicos de chamada - Objective-C (
.m,.mm) - Distinção de métodos de classe/instância com notação +/- - Zig (
.zig,.zon) - Parsing de funções e structs com AST tree-sitter
Todas as Outras Linguagens de Programação: Todas as outras linguagens de programação usam a FallbackParsingStrategy, que fornece indexação básica de arquivos e extração de metadados. Isso inclui:
- Sistema e Baixo Nível: C/C++ (
.c,.cpp,.h,.hpp) - Orientadas a Objeto: Scala (
.scala), Swift (.swift) - Scripting e Dinâmicas: Ruby (
.rb), PHP (.php), Shell (.sh,.bash) - E mais de 40 outros tipos de arquivo - Todos tratados pela estratégia de fallback para indexação básica
🌐 Web e Frontend (Clique para expandir)
Frameworks e Bibliotecas:
- Vue (
.vue) - Svelte (
.svelte) - Astro (
.astro)
Estilização:
- CSS (
.css,.scss,.less,.sass,.stylus,.styl) - HTML (
.html)
Templates:
- Handlebars (
.hbs,.handlebars) - EJS (
.ejs) - Pug (
.pug) - FreeMarker (
.ftl) - Mustache (
.mustache) - Liquid (
.liquid) - ERB (
.erb)
🗄️ Banco de Dados e SQL (Clique para expandir)
Variantes de SQL:
- SQL Padrão (
.sql,.ddl,.dml) - Específicas de Banco de Dados (
.mysql,.postgresql,.psql,.sqlite,.mssql,.oracle,.ora,.db2)
Objetos de Banco de Dados:
- Procedures e Funções (
.proc,.procedure,.func,.function) - Views e Triggers (
.view,.trigger,.index)
Migração e Ferramentas:
- Arquivos de migração (
.migration,.seed,.fixture,.schema) - Específicos de ferramentas (
.liquibase,.flyway)
NoSQL e Modernos:
- Graph e Query (
.cql,.cypher,.sparql,.gql)
📄 Documentação e Configuração (Clique para expandir)
- Markdown (
.md,.mdx) - Configuração (
.json,.xml,.yml,.yaml,.properties)
🛠️ Configuração de Desenvolvimento
Para contribuir ou desenvolvimento local:
-
Clone e instale:
git clone https://github.com/johnhuang316/code-index-mcp.git cd code-index-mcp uv sync -
Configure para desenvolvimento local:
{ "mcpServers": { "code-index": { "command": "uv", "args": ["run", "code-index-mcp"] } } } -
Depure com o MCP Inspector:
npx @modelcontextprotocol/inspector uv run code-index-mcp
Alternativa: Instalação Manual com pip
Se você preferir o gerenciamento tradicional com pip:
pip install code-index-mcp
Depois configure:
{
"mcpServers": {
"code-index": {
"command": "code-index-mcp",
"args": []
}
}
}
Ferramentas Disponíveis
🏗️ Gerenciamento de Projetos
| Ferramenta | Descrição |
|---|---|
set_project_path | Inicializa a indexação para um diretório de projeto |
refresh_index | Reconstrói o índice raso de arquivos após mudanças |
build_deep_index | Gera o índice completo de símbolos usado pela análise profunda |
get_settings_info | Exibe a configuração e o status atuais do projeto |
Execute build_deep_index quando precisar de dados no nível de símbolos; o índice raso padrão permite descoberta rápida de arquivos.
🔍 Busca e Descoberta
| Ferramenta | Descrição |
|---|---|
search_code_advanced | Busca inteligente com correspondência literal por padrão, regex=True opcional, correspondência difusa, filtragem de arquivos e resultados paginados (10 por página por padrão); o modo regex requer uma ferramenta de busca nativa porque o fallback básico é somente literal |
find_files | Localiza arquivos usando padrões glob (ex.: **/*.py) |
get_file_summary | Analisa estrutura de arquivos, funções, imports e complexidade (requer índice profundo) |
🔄 Monitoramento e Atualização Automática
| Ferramenta | Descrição |
|---|---|
get_file_watcher_status | Verifica o status e a configuração do observador de arquivos |
configure_file_watcher | Ativa/desativa a atualização automática e configura as opções |
🛠️ Sistema e Manutenção
| Ferramenta | Descrição |
|---|---|
create_temp_directory | Configura o diretório de armazenamento para dados de índice |
check_temp_directory | Verifica o local de armazenamento do índice e as permissões |
clear_settings | Redefine todos os dados em cache e configurações |
refresh_search_tools | Redetecta as ferramentas de busca disponíveis (ugrep, ripgrep, etc.) |
Exemplos de Uso
🎯 Fluxo de Trabalho de Início Rápido
1. Inicialize Seu Projeto
Set the project path to /Users/dev/my-react-app
Indexa automaticamente sua base de código e cria cache pesquisável 2. Explorar Estrutura do Projeto
Find all TypeScript component files in src/components
Usa: find_files com padrão src/components/**/*.tsx
3. Analisar Arquivos-Chave
Give me a summary of src/api/userService.ts
Usa: get_file_summary para mostrar funções, imports e complexidade
Dica: execute build_deep_index primeiro se você receber uma resposta needs_deep_index.
🔍 Exemplos de Busca Avançada
Busca de Padrão de Código
Search for all function calls matching "get.*Data" using `regex=True`
Encontra: getData(), getUserData(), getFormData(), etc. A busca por regex é opcional; instale uma ferramenta de busca nativa e use regex=True porque o fallback básico permanece apenas literal.
Busca Difusa de Funções
Find authentication-related functions with fuzzy search for 'authUser'
Corresponde a: authenticateUser, authUserToken, userAuthCheck, etc.
Busca Específica por Linguagem
Search for "API_ENDPOINT" only in Python files
Usa: search_code_advanced com correspondência literal e file_pattern: "*.py" (padrão de 10 correspondências; use max_results para expandir ou start_index para paginar)
Configuração de Atualização Automática
Configure automatic index updates when files change
Usa: configure_file_watcher para ativar/desativar o monitoramento e definir o tempo de debounce
Manutenção do Projeto
I added new components, please refresh the project index
Usa: refresh_index para atualizar o cache pesquisável
Solução de Problemas
🔄 Atualização Automática Não Funcionando
Se as atualizações automáticas do índice não estiverem funcionando quando os arquivos mudam, tente:
pip install watchdog(pode resolver problemas de isolamento de ambiente)- Use atualização manual: Chame a ferramenta
refresh_indexapós fazer alterações nos arquivos - Verifique o status do observador de arquivos: Use
get_file_watcher_statuspara confirmar que o monitoramento está ativo
Opções de Observador de Arquivos no macOS
O observador padrão FSEvents funciona bem para a maioria dos projetos. Se você tiver problemas, pode alternar para um observador alternativo via configure_file_watcher:
"auto"(padrão): Padrão da plataforma (FSEvents no macOS)"kqueue": Observador Kqueue (macOS/BSD)"fsevents": Forçar FSEvents (somente macOS)"polling": Fallback de polling multiplataforma
Nota: Kqueue abre um descritor de arquivo por arquivo observado. Para projetos grandes usando kqueue, você pode precisar aumentar o limite: ulimit -n 10240
Desenvolvimento e Contribuição
🔧 Compilando a partir do Código-Fonte
git clone https://github.com/johnhuang316/code-index-mcp.git
cd code-index-mcp
uv sync
uv run code-index-mcp
🐛 Depuração
npx @modelcontextprotocol/inspector uvx code-index-mcp
🤝 Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.