FDEP MCP Server
Un servidor de análisis estático de código para bases de código Haskell a escala empresarial, que proporciona más de 40 herramientas de análisis exhaustivas.
Documentación
Servidor FDEP MCP
Un servidor de Protocolo de Contexto de Modelo (MCP) de Análisis Estático de Código que ofrece más de 40 herramientas integrales de análisis para bases de código Haskell a escala empresarial. Se integra perfectamente con herramientas y clientes de IA compatibles con MCP para proporcionar inteligencia de código y perspectivas arquitectónicas en tiempo real.
🔌 Cumple con el Protocolo MCP | 🏗️ Más de 40 Herramientas de Análisis | ⚡ Consultas en Tiempo Real
✨ Características del Servidor MCP
📊 Más de 40 Herramientas Integrales de Análisis
- Análisis de Módulos: 7 herramientas para estructura de módulos y dependencias
- Análisis de Funciones: 8 herramientas para grafos de llamadas y métricas de complejidad
- Sistema de Tipos: 6 herramientas para relaciones de tipos y patrones de uso
- Análisis de Clases: 3 herramientas para análisis de typeclass e instancias
- Análisis de Importaciones: 4 herramientas para visualización de dependencias
- Consultas Avanzadas: 4 herramientas para consultas complejas de código basadas en JSON
- Análisis de Patrones: 5 herramientas para detección de patrones de código
- Ubicación de Código Fuente: 3 herramientas para análisis basado en ubicación
- Análisis Mejorado: 3 herramientas para análisis estructural avanzado
🚀 Inicio Rápido
Requisitos Previos
- Python 3.13+
- Gestor de paquetes UV
- Base de datos PostgreSQL (debe estar en ejecución)
- Salida de FDEP del plugin Spider (para análisis integral)
Configuración de la Base de Datos
Antes de la instalación, asegúrese de que PostgreSQL esté en ejecución y cree la base de datos requerida:
# Start PostgreSQL (if not already running)
# On macOS with Homebrew:
brew services start postgresql
# On Ubuntu/Debian:
sudo systemctl start postgresql
# Create the database
createdb code_as_data # this should match with you $DB_NAME value in .env file (DEFAULT: code_as_data)
Instalación
# Clone the repository
git clone https://github.com/juspay/fdep-mcp-server.git
cd fdep_mcp
# Install globally with UV (recommended)
uv tool install .
# OR install globally with pipx
# pipx install .
# OR system-wide installation
# pip install .vi
Configuración de la Base de Datos e Importación de Datos
Importante: Complete este paso antes de usar el servidor MCP con cualquier cliente.
fdep-mcp-server --setup --verbose
Este comando:
- Inicializará el esquema de la base de datos PostgreSQL
- Importará y procesará sus datos de FDEP (si FDEP_PATH está configurado)
- Configurará todos los índices y relaciones necesarios
Nota: La primera ejecución toma tiempo ya que procesa conjuntos de datos FDEP grandes.
Configurar el Entorno
cp .env.example .env
# Edit .env with your database settings and FDEP_PATH
🔌 Configuración del Cliente MCP
Después de la instalación, configure su cliente MCP preferido para conectarse al servidor FDEP:
Claude Code
Agregue a su ~/.claude/settings.json:
{
"mcpServers": {
"fdepAnalyzer": {
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output"
}
}
}
}
Nota: La primera vez que se ejecuta el servidor toma tiempo ya que importa y procesa los datos de FDEP.
Cursor
Agregue a su configuración de Cursor (Cmd/Ctrl + , → Extensiones → MCP):
{
"mcp.servers": {
"fdepAnalyzer": {
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output",
"LOG_LEVEL": "INFO"
}
}
}
}
Nota: La primera vez que se ejecuta el servidor toma tiempo ya que importa y procesa los datos de FDEP.
VS Code
Instale la extensión MCP y agregue a settings.json:
{
"mcp.servers": [
{
"name": "fdepAnalyzer",
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output"
}
}
]
}
Nota: La primera vez que se ejecuta el servidor toma tiempo ya que importa y procesa los datos de FDEP.
Cline
Agregue a su configuración de Cline:
{
"mcpServers": {
"fdepAnalyzer": {
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output"
}
}
}
}
Nota: La primera vez que se ejecuta el servidor toma tiempo ya que importa y procesa los datos de FDEP.
Continue.dev
Agregue a su .continue/config.json:
{
"mcpServers": [
{
"name": "fdepAnalyzer",
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output"
}
}
]
}
Nota: La primera vez que se ejecuta el servidor toma tiempo ya que importa y procesa los datos de FDEP.
Cliente MCP Genérico
Para cualquier cliente compatible con MCP:
{
"server_name": "fdepAnalyzer",
"command": "fdep-mcp-server",
"args": [],
"environment": {
"FDEP_PATH": "/path/to/your/fdep/output",
"DB_HOST": "localhost",
"DB_NAME": "code_as_data",
"LOG_LEVEL": "INFO"
}
}
Nota: La primera vez que se ejecuta el servidor toma tiempo ya que importa y procesa los datos de FDEP.
Variables de Entorno para Todos los Clientes
# Required
FDEP_PATH=/path/to/your/fdep/output
# Database (if different from defaults)
DB_HOST=localhost
DB_PORT=5432
DB_NAME=code_as_data
DB_USER=postgres
DB_PASSWORD=postgres
# Optional
LOG_LEVEL=INFO
DEV_MODE=false
Verificar la Conexión
Después de configurar su cliente, verifique la conexión:
- Inicie su cliente MCP
- Busque "fdepAnalyzer" en las herramientas/servidores disponibles
- Pruebe con una consulta simple:
list_modules(limit=5) - Debería ver sus módulos Haskell listados
🛠️ Herramientas MCP Disponibles (Más de 40 en Total)
📁 Análisis de Módulos (7 herramientas)
| Herramienta | Descripción |
|---|---|
initialize_database | Configurar la base de datos e importar datos de FDEP |
list_modules | Obtener lista de módulos con filtrado |
get_module_details | Información detallada del módulo con estadísticas |
get_functions_by_module | Listar todas las funciones en un módulo |
search_modules | Búsqueda de módulos basada en patrones |
get_module_dependencies | Análisis de dependencias de módulos |
get_code_statistics | Estadísticas integrales de la base de código |
⚡ Análisis de Funciones (8 herramientas)
| Herramienta | Descripción |
|---|---|
get_function_details | Información detallada de la función |
search_functions | Buscar funciones por patrón |
get_most_called_functions | Encontrar funciones llamadas con frecuencia |
get_function_call_graph | Jerarquía de llamadas de funciones |
get_function_callers | Quién llama a esta función |
get_function_callees | Qué funciones llama esta |
analyze_function_complexity | Métricas de complejidad de funciones |
get_function_context | Contexto completo de la función con dependencias |
🏗️ Análisis del Sistema de Tipos (6 herramientas)
| Herramienta | Descripción |
|---|---|
list_types | Obtener tipos por módulo/patrón con categorías |
get_type_details | Información de tipos con constructores/campos |
search_types | Búsqueda avanzada de tipos con filtrado |
get_type_dependencies | Análisis de dependencias de tipos |
analyze_type_usage | Patrones de uso de tipos |
get_nested_types | Obtener definiciones de tipos anidados |
📚 Análisis de Clases (3 herramientas)
| Herramienta | Descripción |
|---|---|
list_classes | Obtener definiciones de clases con filtrado |
get_class_details | Información de clases con instancias |
search_classes | Búsqueda de clases basada en patrones |
📦 Análisis de Importaciones (4 herramientas)
| Herramienta | Descripción |
|---|---|
analyze_imports | Patrones de importación y dependencias |
get_import_graph | Grafos de relaciones de importación de módulos |
find_unused_imports | Candidatos potenciales de limpieza |
get_import_details | Información integral de importaciones |
🔍 Consultas Avanzadas (4 herramientas)
| Herramienta | Descripción |
|---|---|
execute_query | Consultas SQL básicas |
execute_advanced_query | Consultas complejas basadas en JSON con uniones |
execute_custom_query | Consultas SQL personalizadas con parámetros |
find_cross_module_calls | Uso de funciones entre módulos |
🎯 Análisis de Patrones (5 herramientas)
| Herramienta | Descripción |
|---|---|
find_similar_functions | Encontrar funciones similares a una función dada |
find_code_patterns | Encontrar patrones de código recurrentes |
group_similar_functions | Agrupar funciones por similitud |
build_type_dependency_graph | Construir grafo integral de dependencias de tipos |
analyze_type_relationships | Analizar relaciones profundas de tipos |
📍 Ubicación de Código Fuente (3 herramientas)
| Herramienta | Descripción |
|---|---|
find_element_by_location | Encontrar elementos de código por ubicación de fuente |
get_location_context | Obtener contexto alrededor de una ubicación de fuente |
generate_function_imports | Generar declaraciones de importación para funciones |
🔬 Análisis Mejorado (3 herramientas)
| Herramienta | Descripción |
|---|---|
pattern_match_code | Coincidencia avanzada de patrones para estructuras de código |
analyze_cross_module_dependencies | Análisis integral de dependencias |
enhanced_function_call_graph | Grafos de llamadas mejorados con opciones avanzadas |
🔍 Consultas de Ejemplo
Análisis Básico
# Search for validation functions
search_functions(pattern="validation", limit=10)
# Get details about main functions
get_function_details(function_name="main")
# Find most called functions
get_most_called_functions(limit=20)
# List modules in a specific area
list_modules(limit=50)
Análisis Avanzado
# Get function call hierarchy
get_function_call_graph(function_name="processData", depth=3)
# Analyze type dependencies
get_type_dependencies(type_name="User", include_dependents=true)
# Find cross-module function calls
find_cross_module_calls(source_module="Services", target_module="Database")
# Complex JSON query
execute_advanced_query({
"type": "function",
"conditions": [
{"field": "name", "operator": "like", "value": "%Handler%"}
],
"limit": 50
})
Análisis Arquitectónico
# Module dependency analysis
get_module_dependencies(module_name="Core.Services", include_dependents=true)
# Import relationship graph
get_import_graph(root_module="Main", depth=3)
# Complexity analysis
analyze_function_complexity(module_name="BusinessLogic", min_complexity=5)
# Comprehensive statistics
get_code_statistics(include_details=true)
⚙️ Configuración
Variables de Entorno (.env)
# Database
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432
DB_NAME=code_as_data
# FDEP Data Source
FDEP_PATH=/path/to/your/fdep/output
# Logging
LOG_LEVEL=INFO
Integración con el Plugin Spider
Para proyectos Haskell que usan GHC 9.2.8:
- Agregar la entrada flake de Spider
- Configurar cabal con los plugins fdep y fieldInspector
- Ejecutar el servidor socket durante la compilación
- Generar la salida de FDEP para el análisis
Distribución de Herramientas
- 📁 Análisis de Módulos: 7 herramientas
- ⚡ Análisis de Funciones: 8 herramientas
- 🏗️ Sistema de Tipos: 6 herramientas
- 📚 Análisis de Clases: 3 herramientas
- 📦 Análisis de Importaciones: 4 herramientas
- 🔍 Consultas Avanzadas: 4 herramientas
- 🎯 Análisis de Patrones: 5 herramientas
- 📍 Ubicación de Código Fuente: 3 herramientas
- 🔬 Análisis Mejorado: 3 herramientas