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:

  1. Copie .env.example para .env:

    cp .env.example .env
    
  2. Edite .env e 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.
  1. Instale as dependências de IA:

    pip install openai anthropic
    
  2. 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