Code Analysis MCP Server
Um servidor MCP modular para análise de código, com suporte a operações de arquivo, busca de código e análise de estrutura.
Documentação
Code Analysis MCP Server
Um servidor MCP (Model Context Protocol) modular para análise de código com operações de arquivos, busca de código e recursos de análise de estrutura.
Recursos
📁 Operações de Arquivos
- read_file: Lê o conteúdo de qualquer arquivo de código
- list_files: Lista arquivos em diretórios com correspondência de padrões
- file_info: Obtém informações detalhadas do arquivo (tamanho, tipo, contagem de linhas)
🔍 Busca de Código
- search_code: Busca padrões no código usando regex
- find_definition: Encontra definições de símbolos (funções, classes, variáveis)
📊 Análise de Código
- analyze_structure: Analisa a estrutura do código (imports, classes, funções)
Instalação
# Clone the repository
git clone https://github.com/yourusername/code-mcp.git
cd code-mcp
# Create virtual environment
python -m venv venv
# Activate environment
source venv/bin/activate # On Unix/macOS
venv\Scripts\activate # On Windows
# Install dependencies
pip install -r requirements.txt
Uso
1. Com o Claude Desktop
Adicione ao seu arquivo de configuração do Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"code-analyzer": {
"command": "python",
"args": ["/absolute/path/to/code-mcp/server.py"]
}
}
}
Em seguida, reinicie o Claude Desktop.
2. Com o Continue.dev (VS Code)
Adicione à sua configuração do Continue:
{
"models": [...],
"mcpServers": {
"code-analyzer": {
"command": "python",
"args": ["/absolute/path/to/code-mcp/server.py"]
}
}
}
3. Com Outros Clientes MCP
Qualquer cliente compatível com MCP pode usar este servidor apontando para o arquivo server.py.
Ferramentas Disponíveis
📖 read_file
Lê o conteúdo de um arquivo.
{
"tool": "read_file",
"arguments": {
"path": "src/main.py",
"encoding": "utf-8" // optional, default: utf-8
}
}
📂 list_files
Lista arquivos em um diretório com correspondência de padrões opcional.
{
"tool": "list_files",
"arguments": {
"directory": "./src", // optional, default: current dir
"pattern": "*.py", // optional, default: *
"recursive": true // optional, default: false
}
}
ℹ️ file_info
Obtém informações detalhadas sobre um arquivo.
{
"tool": "file_info",
"arguments": {
"path": "src/main.py"
}
}
🔍 search_code
Busca padrões em arquivos de código usando regex.
{
"tool": "search_code",
"arguments": {
"pattern": "def.*test", // regex pattern
"directory": "./src", // optional
"file_pattern": "*.py", // optional
"case_sensitive": false // optional, default: true
}
}
🎯 find_definition
Encontra onde um símbolo é definido.
{
"tool": "find_definition",
"arguments": {
"symbol": "MyClass",
"directory": "./src", // optional
"language": "python" // optional: python, javascript
}
}
🏗️ analyze_structure
Analisa a estrutura de um arquivo de código.
{
"tool": "analyze_structure",
"arguments": {
"path": "src/main.py",
"include_docstrings": true // optional, default: false
}
}
🤖 update_with_architecture
Compara versões antigas e novas da arquitetura e atualiza inteligentemente o novo arquivo.
{
"tool": "update_with_architecture",
"arguments": {
"old_file": "src/legacy/module.py", // Reference file (old architecture)
"new_file": "src/modern/module.py", // Target file (will be updated)
"backup": true // optional, default: true
}
}
Configuração de IA
Para usar as ferramentas com IA, você precisa configurar suas chaves de API:
-
Copie
.env.examplepara.env:cp .env.example .env -
Edite
.enve adicione suas chaves de API:AI_PROVIDER=openai OPENAI_API_KEY=your-openai-api-key # or AI_PROVIDER=anthropic ANTHROPIC_API_KEY=your-anthropic-api-key
Suporte a Modelos de Raciocínio
A ferramenta lida automaticamente com modelos de "raciocínio" (como o1, o1-preview) que incluem raciocínio em suas respostas:
- Seções de raciocínio são removidas automaticamente
- Apenas o código real é extraído
- Suporta vários formatos de raciocínio:
<think>,[thinking], etc.
-
Instale as dependências de IA:
pip install openai anthropic -
Teste a conectividade do LLM:
./test_llm.sh # or python tests/test_llm.py
Exemplos
No Claude Desktop
Após a configuração, você pode perguntar ao Claude:
- "Leia o arquivo src/main.py"
- "Busque todas as funções que contêm 'test' no diretório src"
- "Encontre onde a classe 'UserModel' é definida"
- "Analise a estrutura do app.py"
- "Liste todos os arquivos Python no projeto"
Uso Programático
# Example of calling tools programmatically
import asyncio
from mcp import Client
async def main():
client = Client()
# Read a file
result = await client.call_tool("read_file", {
"path": "src/main.py"
})
# Search for patterns
result = await client.call_tool("search_code", {
"pattern": "TODO|FIXME",
"directory": "./",
"recursive": True
})
# Analyze structure
result = await client.call_tool("analyze_structure", {
"path": "src/main.py",
"include_docstrings": True
})
asyncio.run(main())
Arquitetura
O servidor segue uma arquitetura modular:
├── server.py # Main MCP server
├── tools/ # Tool definitions
│ ├── file_tools.py # File operations
│ └── code_tools.py # Code analysis tools
├── handlers/ # Request handlers
│ ├── file_handler.py
│ ├── search_handler.py
│ └── analyze_handler.py
└── core/ # Core services
├── file_system.py # File system operations
└── code_parser.py # Code parsing logic
Linguagens Suportadas
- Python (.py)
- JavaScript/TypeScript (.js, .ts, .jsx, .tsx)
- Java (.java)
- C/C++ (.c, .cpp, .h)
- Go (.go)
- Rust (.rs)
- Ruby (.rb)
- E outras...
Segurança
- O acesso a arquivos é restrito para evitar travessia de diretórios
- Arquivos grandes são tratados com eficiência via streaming
- Os resultados de busca são limitados para evitar problemas de memória
Contribuindo
Sinta-se à vontade para enviar issues e solicitações de melhorias!
Licença
MIT