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:
-
Copia
.env.examplea.env:cp .env.example .env -
Edita
.envy 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.
-
Instala las dependencias de IA:
pip install openai anthropic -
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