FDEP MCP Server

Um servidor de análise estática de código para bases de código Haskell em escala empresarial, fornecendo mais de 40 ferramentas abrangentes de análise.

Documentação

Servidor FDEP MCP

Um servidor de Model Context Protocol (MCP) para Análise Estática de Código que oferece mais de 40 ferramentas abrangentes de análise para codebases Haskell de nível empresarial. Integra-se perfeitamente com ferramentas e clientes de IA compatíveis com MCP para fornecer inteligência de código em tempo real e insights arquiteturais.

🔌 Compatível com Protocolo MCP | 🏗️ Mais de 40 Ferramentas de Análise | ⚡ Consultas em Tempo Real

✨ Recursos do Servidor MCP

📊 Mais de 40 Ferramentas Abrangentes de Análise

  • Análise de Módulos: 7 ferramentas para estrutura de módulos e dependências
  • Análise de Funções: 8 ferramentas para grafos de chamadas e métricas de complexidade
  • Sistema de Tipos: 6 ferramentas para relacionamentos de tipos e padrões de uso
  • Análise de Classes: 3 ferramentas para análise de typeclass e instâncias
  • Análise de Imports: 4 ferramentas para visualização de dependências
  • Consultas Avançadas: 4 ferramentas para consultas complexas de código baseadas em JSON
  • Análise de Padrões: 5 ferramentas para detecção de padrões de código
  • Localização de Código-Fonte: 3 ferramentas para análise baseada em localização
  • Análise Aprimorada: 3 ferramentas para análise estrutural avançada

🚀 Início Rápido

Pré-requisitos

  • Python 3.13+
  • Gerenciador de pacotes UV
  • Banco de dados PostgreSQL (deve estar em execução)
  • Saída FDEP do plugin Spider (para análise abrangente)

Configuração do Banco de Dados

Antes da instalação, certifique-se de que o PostgreSQL esteja em execução e crie o banco de dados necessário:

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

Instalação

# 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 

Configuração do Banco de Dados e Importação de Dados

Importante: Complete esta etapa antes de usar o servidor MCP com qualquer cliente.

fdep-mcp-server --setup --verbose

Este comando irá:

  • Inicializar o esquema do banco de dados PostgreSQL
  • Importar e processar seus dados FDEP (se FDEP_PATH estiver configurado)
  • Configurar todos os índices e relacionamentos necessários

Observação: A primeira execução leva tempo, pois processa grandes conjuntos de dados FDEP.

Configurar Ambiente

cp .env.example .env
# Edit .env with your database settings and FDEP_PATH

🔌 Configuração do Cliente MCP

Após a instalação, configure seu cliente MCP preferido para conectar ao servidor FDEP:

Claude Code

Adicione ao seu ~/.claude/settings.json:

{
  "mcpServers": {
    "fdepAnalyzer": {
      "command": "fdep-mcp-server",
      "args": [],
      "env": {
        "FDEP_PATH": "/path/to/your/fdep/output"
      }
    }
  }
}

Observação: A primeira execução do servidor leva tempo, pois importa e processa os dados FDEP.

Cursor

Adicione às configurações do Cursor (Cmd/Ctrl + , → Extensões → MCP):

{
  "mcp.servers": {
    "fdepAnalyzer": {
      "command": "fdep-mcp-server",
      "args": [],
      "env": {
        "FDEP_PATH": "/path/to/your/fdep/output",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

Observação: A primeira execução do servidor leva tempo, pois importa e processa os dados FDEP.

VS Code

Instale a extensão MCP e adicione ao settings.json:

{
  "mcp.servers": [
    {
      "name": "fdepAnalyzer",
      "command": "fdep-mcp-server", 
      "args": [],
      "env": {
        "FDEP_PATH": "/path/to/your/fdep/output"
      }
    }
  ]
}

Observação: A primeira execução do servidor leva tempo, pois importa e processa os dados FDEP.

Cline

Adicione à configuração do Cline:

{
  "mcpServers": {
    "fdepAnalyzer": {
      "command": "fdep-mcp-server",
      "args": [],
      "env": {
        "FDEP_PATH": "/path/to/your/fdep/output"
      }
    }
  }
}

Observação: A primeira execução do servidor leva tempo, pois importa e processa os dados FDEP.

Continue.dev

Adicione ao seu .continue/config.json:

{
  "mcpServers": [
    {
      "name": "fdepAnalyzer",
      "command": "fdep-mcp-server",
      "args": [],
      "env": {
        "FDEP_PATH": "/path/to/your/fdep/output"
      }
    }
  ]
}

Observação: A primeira execução do servidor leva tempo, pois importa e processa os dados FDEP.

Cliente MCP Genérico

Para qualquer cliente compatível com 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"
  }
}

Observação: A primeira execução do servidor leva tempo, pois importa e processa os dados FDEP.

Variáveis de Ambiente para Todos os 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 Conexão

Após configurar seu cliente, verifique a conexão:

  1. Inicie seu cliente MCP
  2. Procure por "fdepAnalyzer" nas ferramentas/servidores disponíveis
  3. Teste com uma consulta simples: list_modules(limit=5)
  4. Você deve ver seus módulos Haskell listados

🛠️ Ferramentas MCP Disponíveis (Mais de 40 no Total)

📁 Análise de Módulos (7 ferramentas)

FerramentaDescrição
initialize_databaseConfigurar banco de dados e importar dados FDEP
list_modulesObter lista de módulos com filtragem
get_module_detailsInformações detalhadas do módulo com estatísticas
get_functions_by_moduleListar todas as funções em um módulo
search_modulesBusca de módulos baseada em padrões
get_module_dependenciesAnálise de dependências de módulos
get_code_statisticsEstatísticas abrangentes do codebase

⚡ Análise de Funções (8 ferramentas)

FerramentaDescrição
get_function_detailsInformações detalhadas da função
search_functionsBuscar funções por padrão
get_most_called_functionsEncontrar funções frequentemente chamadas
get_function_call_graphHierarquia de chamadas de funções
get_function_callersQuem chama esta função
get_function_calleesQuais funções esta chama
analyze_function_complexityMétricas de complexidade de funções
get_function_contextContexto completo da função com dependências

🏗️ Análise do Sistema de Tipos (6 ferramentas)

FerramentaDescrição
list_typesObter tipos por módulo/padrão com categorias
get_type_detailsInformações de tipo com construtores/campos
search_typesBusca avançada de tipos com filtragem
get_type_dependenciesAnálise de dependências de tipos
analyze_type_usagePadrões de uso de tipos
get_nested_typesObter definições de tipos aninhados

📚 Análise de Classes (3 ferramentas)

FerramentaDescrição
list_classesObter definições de classes com filtragem
get_class_detailsInformações de classe com instâncias
search_classesBusca de classes baseada em padrões

📦 Análise de Imports (4 ferramentas)

FerramentaDescrição
analyze_importsPadrões de import e dependências
get_import_graphGrafos de relacionamento de imports de módulos
find_unused_importsCandidatos potenciais para limpeza
get_import_detailsInformações abrangentes de imports

🔍 Consultas Avançadas (4 ferramentas)

FerramentaDescrição
execute_queryConsultas SQL básicas
execute_advanced_queryConsultas complexas baseadas em JSON com joins
execute_custom_queryConsultas SQL personalizadas com parâmetros
find_cross_module_callsUso de funções entre módulos

🎯 Análise de Padrões (5 ferramentas)

FerramentaDescrição
find_similar_functionsEncontrar funções semelhantes a uma função dada
find_code_patternsEncontrar padrões de código recorrentes
group_similar_functionsAgrupar funções por semelhança
build_type_dependency_graphConstruir grafo abrangente de dependências de tipos
analyze_type_relationshipsAnalisar relacionamentos profundos de tipos

📍 Localização de Código-Fonte (3 ferramentas)

FerramentaDescrição
find_element_by_locationEncontrar elementos de código por localização no código-fonte
get_location_contextObter contexto ao redor de uma localização no código-fonte
generate_function_importsGerar declarações de import para funções

🔬 Análise Aprimorada (3 ferramentas)

FerramentaDescrição
pattern_match_codeCorrespondência avançada de padrões para estruturas de código
analyze_cross_module_dependenciesAnálise abrangente de dependências
enhanced_function_call_graphGrafos de chamadas aprimorados com opções avançadas

🔍 Exemplos de Consultas

Análise Básica

# 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álise Avançada

# 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álise Arquitetural

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

⚙️ Configuração

Variáveis de Ambiente (.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

Integração com Plugin Spider

Para projetos Haskell usando GHC 9.2.8:

  1. Adicionar entrada flake do Spider
  2. Configurar cabal com plugins fdep e fieldInspector
  3. Executar servidor socket durante a compilação
  4. Gerar saída FDEP para análise

Distribuição de Ferramentas

  • 📁 Análise de Módulos: 7 ferramentas
  • ⚡ Análise de Funções: 8 ferramentas
  • 🏗️ Sistema de Tipos: 6 ferramentas
  • 📚 Análise de Classes: 3 ferramentas
  • 📦 Análise de Imports: 4 ferramentas
  • 🔍 Consultas Avançadas: 4 ferramentas
  • 🎯 Análise de Padrões: 5 ferramentas
  • 📍 Localização de Código-Fonte: 3 ferramentas
  • 🔬 Análise Aprimorada: 3 ferramentas