Code Summarizer
Uma ferramenta de linha de comando que resume arquivos de código em um diretório usando Gemini Flash 2.0.
Documentação
Code Summarizer
Uma ferramenta de linha de comando que resume arquivos de código em um diretório usando o Gemini Flash 2.0. Agora com suporte a servidor MCP para integração com ferramentas de LLM!
Recursos
- Processa recursivamente arquivos de código em um diretório
- Respeita as regras de
.gitignore - Ignora diretórios irrelevantes como
node_modules,dist, etc. - Resume arquivos de código usando o Gemini Flash 2.0
- Gera resumos em um arquivo de texto
- Nível de detalhe e comprimento do resumo configuráveis
- Servidor MCP para integração com Claude Desktop e outras ferramentas de LLM
- Design modular para fácil integração em outros aplicativos
- Gerenciamento seguro de chaves de API
- Autenticação para endpoints do servidor MCP
- Mecanismo de repetição com backoff exponencial para chamadas de LLM
- Limitação de taxa para evitar abuso
Requisitos
- Node.js 18+
Instalação
-
Clone o repositório
git clone https://github.com/nicobailon/code-summarizer.git cd code-summarizer -
Instale as dependências:
npm install -
Crie um arquivo
.envcom sua chave de API do Google:GOOGLE_API_KEY=your_api_key_here -
Compile o projeto:
npm run build
Configuração e Integração do Servidor MCP
O resumidor de código inclui um servidor Model Context Protocol (MCP) que permite que ferramentas de LLM como Claude Desktop, Cursor AI e Cline acessem resumos de código e conteúdo de arquivos.
Iniciando o Servidor MCP
# Start the MCP server
npm start -- server
Por padrão, o servidor executa na porta 24312. Você pode alterar isso na sua configuração:
# Set custom MCP server port
npm start -- config set --port 8080
Conectando com o Claude Desktop
- Inicie o servidor MCP do code-summarizer
- Abra o Claude Desktop e clique no menu Claude, depois em "Settings..."
- Navegue até a seção "Developer"
- Crie um arquivo em
~/.claude/claude_desktop_config.json(macOS/Linux) ou%USERPROFILE%\.claude\claude_desktop_config.json(Windows) com este conteúdo:
{
"code-summarizer": {
"command": "npx",
"args": ["-y", "your-path-to-code-summarizer/bin/code-summarizer.js", "server"],
"env": {
"GOOGLE_API_KEY": "your_api_key_here"
}
}
}
- Reinicie o Claude Desktop
- Após reiniciar, você pode pedir ao Claude para acessar seu código, por exemplo, "Resuma os arquivos do meu projeto"
Exemplos de prompts para o Claude Desktop:
- "Você pode resumir todos os arquivos JavaScript do meu projeto?"
- "Por favor, me dê uma visão geral de alto nível do meu código."
- "Explique o que o arquivo 'src/config/config.ts' faz."
- "Encontre todas as funções relacionadas à autenticação no meu código."
Conectando com o Cursor AI
- Inicie o servidor MCP do code-summarizer
- Crie um arquivo
.cursor/mcp.jsonno diretório do seu projeto:
{
"mcpServers": {
"code-summarizer": {
"transport": "sse",
"url": "http://localhost:24312/sse",
"headers": {
"x-api-key": "your_api_key_here"
}
}
}
}
- Reinicie o Cursor ou recarregue seu projeto
- Pergunte ao Cursor sobre seu código, por exemplo, "Você pode resumir meu código?"
Exemplos de prompts para o Cursor:
- "Resuma a estrutura deste código para mim."
- "Quais são os principais componentes deste projeto?"
- "Dê-me uma explicação detalhada da implementação do servidor MCP."
- "Ajude-me a entender como funciona o mecanismo de repetição."
Conectando com o Cline
- Inicie o servidor MCP do code-summarizer
- No Cline, você pode adicionar o servidor MCP com um comando:
/mcp add code-summarizer http://localhost:24312/sse
- Em seguida, autentique-se com sua chave de API:
/mcp config code-summarizer headers.x-api-key your_api_key_here
- Você pode então pedir ao Cline para usar o code-summarizer, por exemplo, "Por favor, resuma meus arquivos de código"
Exemplos de prompts para o Cline:
- "O que cada arquivo do meu projeto faz?"
- "Crie um resumo de todos os arquivos TypeScript."
- "Explique o fluxo de autenticação neste código."
- "Quais são as principais funções no diretório 'summarizer'?"
O Que Você Pode Fazer com a Integração MCP
Usando a integração MCP, você pode:
- Obter resumos de arquivos: Solicitar explicações concisas sobre o que arquivos específicos fazem
- Explorar diretórios: Navegar pela estrutura do seu código
- Processamento em lote: Resumir vários arquivos de uma vez
- Consultas direcionadas: Encontrar padrões ou funcionalidades específicas no seu código
- Personalizar resumos: Controlar o nível de detalhe e o comprimento do resumo
- Atualizar configurações: Alterar opções de configuração pela interface MCP
O servidor MCP expõe seu código às ferramentas de LLM de forma estruturada, permitindo que elas leiam, naveguem e resumam seu código sem precisar colar trechos de código manualmente.
Detalhes da Integração do Servidor MCP
Recursos MCP
code://file/*- Acessar arquivos de código individuaiscode://directory/*- Listar arquivos de código em um diretóriosummary://file/*- Obter resumo de um arquivo específicosummary://batch/*- Obter resumos de vários arquivos
Ferramentas MCP
summarize_file- Resumir um único arquivo com opçõessummarize_directory- Resumir um diretório com opçõesset_config- Atualizar opções de configuração
Prompts MCP
code_summary- Modelo de prompt para resumir códigodirectory_summary- Modelo de prompt para resumir diretórios inteiros
Solução de Problemas
Problemas Comuns de Conexão MCP
-
Conexão Recusada
- Certifique-se de que o servidor MCP está em execução (
npm start -- server) - Verifique se a porta está correta na sua configuração
- Verifique se há problemas de firewall bloqueando a conexão
- Certifique-se de que o servidor MCP está em execução (
-
Erros de Autenticação
- Verifique se você adicionou a chave de API correta nos cabeçalhos (
x-api-key) - Confirme se sua chave de API é válida e está formatada corretamente
- Certifique-se de que as variáveis de ambiente estão definidas corretamente
- Verifique se você adicionou a chave de API correta nos cabeçalhos (
-
Erros de Transporte
- Garanta que o tipo de transporte correto esteja especificado (SSE)
- Verifique se a URL inclui o endpoint correto (
/sse) - Verifique a conectividade de rede entre o cliente e o servidor
-
Problemas de Permissão
- Garanta que o servidor MCP tenha acesso de leitura ao seu código
- Verifique as permissões de arquivo se o resumo falhar para arquivos específicos
-
Claude Desktop Não Encontra o Servidor MCP
- Verifique se o caminho em
claude_desktop_config.jsonestá correto - Certifique-se de que o comando e os argumentos apontam para o local certo
- Verifique os logs do Claude Desktop para erros de configuração
- Verifique se o caminho em
-
Limitação de Taxa
- Se você vir erros de "Muitas solicitações", aguarde e tente novamente mais tarde
- Considere ajustar as configurações de limitação de taxa no código do servidor
Para outros problemas, verifique os logs do servidor ou abra uma issue no repositório do GitHub.
Uso
Interface de Linha de Comando
# Default command (summarize)
npm start -- summarize [directory] [output-file] [options]
# Summarize code in the current directory (output to summaries.txt)
npm start -- summarize
# Summarize code with specific detail level and max length
npm start -- summarize --detail high --max-length 1000
# Show help
npm start -- --help
Gerenciamento de Configuração
# Set your API key
npm start -- config set --api-key "your-api-key"
# Set default detail level and max length
npm start -- config set --detail-level high --max-length 1000
# Set MCP server port (default: 24312)
npm start -- config set --port 8080
# Show current configuration
npm start -- config show
# Reset configuration to defaults
npm start -- config reset
Autenticação de API
Ao conectar ao servidor MCP, você precisa incluir sua chave de API nos cabeçalhos da solicitação:
x-api-key: your_api_key_here
Todos os endpoints (exceto /health) exigem autenticação.
Opções
--detail,-d: Define o nível de detalhe dos resumos. As opções são 'low', 'medium' ou 'high'. O padrão é 'medium'.--max-length,-l: Comprimento máximo de cada resumo em caracteres. O padrão é 500.
Recursos de Segurança
Gerenciamento de Chaves de API
- As chaves de API são armazenadas com segurança e priorizam variáveis de ambiente em vez de arquivos de configuração
- As chaves são validadas quanto ao formato correto antes do uso
- As chaves de API nunca são expostas em logs ou mensagens de erro
- O arquivo de configuração não armazena chaves de API quando elas são fornecidas via variáveis de ambiente
Autenticação
- Todos os endpoints do servidor MCP (exceto verificação de integridade) exigem autenticação via chave de API
- A autenticação usa o cabeçalho
x-api-keypara transmissão segura - Tentativas de autenticação com falha são registradas para monitoramento de segurança
Limitação de Taxa
- A limitação de taxa integrada evita abuso do serviço
- Padrão: 60 solicitações por minuto por endereço IP
- Configurável através das configurações do servidor
Tratamento de Erros
- Sistema de erros estruturado com categorização
- Informações confidenciais nunca são expostas em mensagens de erro
- Códigos de erro adequados são retornados para diferentes cenários de falha
Resiliência de Chamadas de LLM
- Repetição automática com backoff exponencial para falhas transitórias
- Configurações de repetição configuráveis, incluindo máximo de tentativas, atrasos e fator de backoff
- Jitter adicionado ao tempo de repetição para evitar problemas de rebanho em massa
- Rastreamento de ID de solicitação para rastrear problemas em todo o sistema
Tipos de Arquivo Suportados
- TypeScript (.ts, .tsx)
- JavaScript (.js, .jsx)
- Python (.py)
- Java (.java)
- C++ (.cpp)
- C (.c)
- Go (.go)
- Ruby (.rb)
- PHP (.php)
- C# (.cs)
- Swift (.swift)
- Rust (.rs)
- Kotlin (.kt)
- Scala (.scala)
- Vue (.vue)
- HTML (.html)
- CSS (.css, .scss, .less)
Como Funciona
- A ferramenta examina o diretório especificado recursivamente, respeitando as regras de
.gitignore. - Ela filtra os arquivos com base nas extensões suportadas.
- Para cada arquivo suportado, ela lê o conteúdo e determina a linguagem de programação.
- Ela envia o código ao Gemini Flash 2.0 com um prompt para resumir, incluindo nível de detalhe e restrições de comprimento.
- Os resumos são coletados e gravados no arquivo de saída especificado.
Formato de Saída
O arquivo de saída terá o seguinte formato:
relative/path/to/file
Summary text here
relative/path/to/next/file
Next summary text here
Estrutura do Projeto
index.ts: Implementação principal da CLIsrc/: Diretório do código-fontesummarizer/: Funcionalidade principal de resumomcp/: Implementação do servidor MCPconfig/: Gerenciamento de configuração
bin/: Ponto de entrada da CLIconfig.json: Arquivo de configuração padrãotsconfig.json: Configuração do TypeScriptpackage.json: Dependências e scripts do projeto.env.example: Modelo para configurar variáveis de ambiente.gitignore: Arquivos e diretórios a ignorar no Git__tests__: Testes unitários e de integração__mocks__/mock-codebase: Código de exemplo para testes
Variáveis de Ambiente
As seguintes variáveis de ambiente podem ser usadas para configurar o aplicativo:
| Variável | Descrição | Padrão |
|---|---|---|
GOOGLE_API_KEY | Sua chave de API do Google Gemini | Nenhum (obrigatório) |
PORT | Porta do servidor MCP | 24312 |
ALLOWED_ORIGINS | Lista separada por vírgulas de origens CORS permitidas | http://localhost:3000 |
LOG_LEVEL | Nível de registro (error, warn, info, debug) | info |
Consulte .env.example para um modelo.
Desenvolvimento
Executando Testes
# Run all tests
npm test
# Run tests with coverage
npm test -- --coverage
# Test MCP server setup
npm run test:setup
Melhorias Futuras
- Suporte a mais tipos de arquivo
- Suporte a provedores alternativos de LLM
- Integração com um aplicativo Electron para uma interface gráfica
- Capacidades aprimoradas do servidor MCP
- Rastreamento avançado de uso de tokens
- Observabilidade baseada em OpenTelemetry
- Capacidades aprimoradas de registro de auditoria
- Integração de varredura de segredos