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:
- Inicie seu cliente MCP
- Procure por "fdepAnalyzer" nas ferramentas/servidores disponíveis
- Teste com uma consulta simples:
list_modules(limit=5) - Você deve ver seus módulos Haskell listados
🛠️ Ferramentas MCP Disponíveis (Mais de 40 no Total)
📁 Análise de Módulos (7 ferramentas)
| Ferramenta | Descrição |
|---|---|
initialize_database | Configurar banco de dados e importar dados FDEP |
list_modules | Obter lista de módulos com filtragem |
get_module_details | Informações detalhadas do módulo com estatísticas |
get_functions_by_module | Listar todas as funções em um módulo |
search_modules | Busca de módulos baseada em padrões |
get_module_dependencies | Análise de dependências de módulos |
get_code_statistics | Estatísticas abrangentes do codebase |
⚡ Análise de Funções (8 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_function_details | Informações detalhadas da função |
search_functions | Buscar funções por padrão |
get_most_called_functions | Encontrar funções frequentemente chamadas |
get_function_call_graph | Hierarquia de chamadas de funções |
get_function_callers | Quem chama esta função |
get_function_callees | Quais funções esta chama |
analyze_function_complexity | Métricas de complexidade de funções |
get_function_context | Contexto completo da função com dependências |
🏗️ Análise do Sistema de Tipos (6 ferramentas)
| Ferramenta | Descrição |
|---|---|
list_types | Obter tipos por módulo/padrão com categorias |
get_type_details | Informações de tipo com construtores/campos |
search_types | Busca avançada de tipos com filtragem |
get_type_dependencies | Análise de dependências de tipos |
analyze_type_usage | Padrões de uso de tipos |
get_nested_types | Obter definições de tipos aninhados |
📚 Análise de Classes (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
list_classes | Obter definições de classes com filtragem |
get_class_details | Informações de classe com instâncias |
search_classes | Busca de classes baseada em padrões |
📦 Análise de Imports (4 ferramentas)
| Ferramenta | Descrição |
|---|---|
analyze_imports | Padrões de import e dependências |
get_import_graph | Grafos de relacionamento de imports de módulos |
find_unused_imports | Candidatos potenciais para limpeza |
get_import_details | Informações abrangentes de imports |
🔍 Consultas Avançadas (4 ferramentas)
| Ferramenta | Descrição |
|---|---|
execute_query | Consultas SQL básicas |
execute_advanced_query | Consultas complexas baseadas em JSON com joins |
execute_custom_query | Consultas SQL personalizadas com parâmetros |
find_cross_module_calls | Uso de funções entre módulos |
🎯 Análise de Padrões (5 ferramentas)
| Ferramenta | Descrição |
|---|---|
find_similar_functions | Encontrar funções semelhantes a uma função dada |
find_code_patterns | Encontrar padrões de código recorrentes |
group_similar_functions | Agrupar funções por semelhança |
build_type_dependency_graph | Construir grafo abrangente de dependências de tipos |
analyze_type_relationships | Analisar relacionamentos profundos de tipos |
📍 Localização de Código-Fonte (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
find_element_by_location | Encontrar elementos de código por localização no código-fonte |
get_location_context | Obter contexto ao redor de uma localização no código-fonte |
generate_function_imports | Gerar declarações de import para funções |
🔬 Análise Aprimorada (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
pattern_match_code | Correspondência avançada de padrões para estruturas de código |
analyze_cross_module_dependencies | Análise abrangente de dependências |
enhanced_function_call_graph | Grafos 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:
- Adicionar entrada flake do Spider
- Configurar cabal com plugins fdep e fieldInspector
- Executar servidor socket durante a compilação
- 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