Code Analysis MCP Server

Un servidor MCP modular para análisis de código, que admite operaciones de archivos, búsqueda de código y análisis de estructura.

Documentación

Servidor MCP de Análisis de Código

Un servidor MCP (Model Context Protocol) modular para análisis de código con operaciones de archivos, búsqueda de código y capacidades de análisis de estructura.

Características

📁 Operaciones de Archivos

  • read_file: Lee el contenido de cualquier archivo de código
  • list_files: Lista archivos en directorios con coincidencia de patrones
  • file_info: Obtiene información detallada del archivo (tamaño, tipo, número de líneas)

🔍 Búsqueda de Código

  • search_code: Busca patrones en código usando expresiones regulares
  • find_definition: Encuentra definiciones de símbolos (funciones, clases, variables)

📊 Análisis de Código

  • analyze_structure: Analiza la estructura del código (importaciones, clases, funciones)

Instalación

# 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. Con Claude Desktop

Agrega a tu archivo de configuración de 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"]
    }
  }
}

Luego reinicia Claude Desktop.

2. Con Continue.dev (VS Code)

Agrega a tu configuración de Continue:

{
  "models": [...],
  "mcpServers": {
    "code-analyzer": {
      "command": "python",
      "args": ["/absolute/path/to/code-mcp/server.py"]
    }
  }
}

3. Con Otros Clientes MCP

Cualquier cliente compatible con MCP puede usar este servidor apuntando al archivo server.py.

Herramientas Disponibles

📖 read_file

Lee el contenido de un archivo.

{
  "tool": "read_file",
  "arguments": {
    "path": "src/main.py",
    "encoding": "utf-8"  // optional, default: utf-8
  }
}

📂 list_files

Lista archivos en un directorio con coincidencia de patrones opcional.

{
  "tool": "list_files",
  "arguments": {
    "directory": "./src",      // optional, default: current dir
    "pattern": "*.py",         // optional, default: *
    "recursive": true          // optional, default: false
  }
}

ℹ️ file_info

Obtiene información detallada sobre un archivo.

{
  "tool": "file_info",
  "arguments": {
    "path": "src/main.py"
  }
}

🔍 search_code

Busca patrones en archivos de código usando expresiones regulares.

{
  "tool": "search_code",
  "arguments": {
    "pattern": "def.*test",        // regex pattern
    "directory": "./src",          // optional
    "file_pattern": "*.py",        // optional
    "case_sensitive": false        // optional, default: true
  }
}

🎯 find_definition

Encuentra dónde está definido un símbolo.

{
  "tool": "find_definition",
  "arguments": {
    "symbol": "MyClass",
    "directory": "./src",          // optional
    "language": "python"           // optional: python, javascript
  }
}

🏗️ analyze_structure

Analiza la estructura de un archivo de código.

{
  "tool": "analyze_structure",
  "arguments": {
    "path": "src/main.py",
    "include_docstrings": true     // optional, default: false
  }
}

🤖 update_with_architecture

Compara versiones de arquitectura antiguas y nuevas, y actualiza inteligentemente el archivo nuevo.

{
  "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
  }
}

Configuración de IA

Para usar las herramientas impulsadas por IA, necesitas configurar tus claves de API:

  1. Copia .env.example a .env:

    cp .env.example .env
    
  2. Edita .env y agrega tus claves de API:

    AI_PROVIDER=openai
    OPENAI_API_KEY=your-openai-api-key
    # or
    AI_PROVIDER=anthropic  
    ANTHROPIC_API_KEY=your-anthropic-api-key
    

Soporte para Modelos de Razonamiento

La herramienta maneja automáticamente modelos de "razonamiento" (como o1, o1-preview) que incluyen razonamiento en sus respuestas:

  • Las secciones de razonamiento se eliminan automáticamente
  • Solo se extrae el código real
  • Soporta varios formatos de razonamiento: <think>, [thinking], etc.
  1. Instala las dependencias de IA:

    pip install openai anthropic
    
  2. Prueba la conectividad con LLM:

    ./test_llm.sh
    # or
    python tests/test_llm.py
    

Ejemplos

En Claude Desktop

Después de configurar, puedes preguntarle a Claude:

  • "Lee el archivo src/main.py"
  • "Busca todas las funciones que contengan 'test' en el directorio src"
  • "Encuentra dónde está definida la clase 'UserModel'"
  • "Analiza la estructura de app.py"
  • "Lista todos los archivos Python en el proyecto"

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())

Arquitectura

El servidor sigue una arquitectura 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

Lenguajes Soportados

  • Python (.py)
  • JavaScript/TypeScript (.js, .ts, .jsx, .tsx)
  • Java (.java)
  • C/C++ (.c, .cpp, .h)
  • Go (.go)
  • Rust (.rs)
  • Ruby (.rb)
  • Y más...

Seguridad

  • El acceso a archivos está restringido para prevenir el recorrido de directorios
  • Los archivos grandes se manejan eficientemente con transmisión
  • Los resultados de búsqueda están limitados para prevenir problemas de memoria

Contribuciones

¡No dudes en enviar problemas y solicitudes de mejoras!

Licencia

MIT