FDEP MCP Server

FDEP MCP Server

Provides static code analysis for enterprise-scale Haskell codebases with 40+ comprehensive tools for analyzing modules, functions, types, classes, imports, and architectural dependencies through real-time queries.

Category
Visit Server

README

FDEP MCP Server

A Static Code Analysis Model Context Protocol (MCP) server delivering 40+ comprehensive analysis tools for enterprise-scale Haskell codebases. Seamlessly integrates with MCP-compatible AI tools and clients to provide real-time code intelligence and architectural insights.

šŸ”Œ MCP Protocol Compliant | šŸ—ļø 40+ Analysis Tools | ⚔ Real-time Queries

✨ MCP Server Features

šŸ“Š 40+ Comprehensive Analysis Tools

  • Module Analysis: 7 tools for module structure and dependencies
  • Function Analysis: 8 tools for call graphs and complexity metrics
  • Type System: 6 tools for type relationships and usage patterns
  • Class Analysis: 3 tools for typeclass and instance analysis
  • Import Analysis: 4 tools for dependency visualization
  • Advanced Queries: 4 tools for complex JSON-based code queries
  • Pattern Analysis: 5 tools for code pattern detection
  • Source Location: 3 tools for location-based analysis
  • Enhanced Analysis: 3 tools for advanced structural analysis

šŸš€ Quick Start

Prerequisites

  • Python 3.13+
  • UV package manager
  • PostgreSQL database (must be running)
  • FDEP output from Spider plugin (for comprehensive analysis)

Database Setup

Before installation, ensure PostgreSQL is running and create the required database:

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

Installation

# 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 

Database Setup and Data Import

Important: Complete this step before using the MCP server with any client.

fdep-mcp-server --setup --verbose

This command will:

  • Initialize the PostgreSQL database schema
  • Import and process your FDEP data (if FDEP_PATH is configured)
  • Set up all necessary indexes and relationships

Note: The first run takes time as it processes large FDEP datasets.

Configure Environment

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

šŸ”Œ MCP Client Configuration

After installation, configure your preferred MCP client to connect to the FDEP server:

Claude Code

Add to your ~/.claude/settings.json:

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

Note: The first time running the server takes time as it imports and processes the FDEP data.

Cursor

Add to your Cursor settings (Cmd/Ctrl + , → Extensions → MCP):

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

Note: The first time running the server takes time as it imports and processes the FDEP data.

VS Code

Install the MCP extension and add to settings.json:

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

Note: The first time running the server takes time as it imports and processes the FDEP data.

Cline

Add to your Cline configuration:

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

Note: The first time running the server takes time as it imports and processes the FDEP data.

Continue.dev

Add to your .continue/config.json:

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

Note: The first time running the server takes time as it imports and processes the FDEP data.

Generic MCP Client

For any MCP-compatible client:

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

Note: The first time running the server takes time as it imports and processes the FDEP data.

Environment Variables for All Clients

# 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

Verify Connection

After configuring your client, verify the connection:

  1. Start your MCP client
  2. Look for "fdepAnalyzer" in available tools/servers
  3. Test with a simple query: list_modules(limit=5)
  4. You should see your Haskell modules listed

šŸ› ļø MCP Tools Available (40+ Total)

šŸ“ Module Analysis (7 tools)

Tool Description
initialize_database Setup database and import FDEP data
list_modules Get list of modules with filtering
get_module_details Detailed module info with statistics
get_functions_by_module List all functions in a module
search_modules Pattern-based module search
get_module_dependencies Module dependency analysis
get_code_statistics Comprehensive codebase statistics

⚔ Function Analysis (8 tools)

Tool Description
get_function_details Detailed function information
search_functions Search functions by pattern
get_most_called_functions Find frequently called functions
get_function_call_graph Function call hierarchy
get_function_callers Who calls this function
get_function_callees What functions this calls
analyze_function_complexity Function complexity metrics
get_function_context Complete function context with dependencies

šŸ—ļø Type System Analysis (6 tools)

Tool Description
list_types Get types by module/pattern with categories
get_type_details Type info with constructors/fields
search_types Advanced type search with filtering
get_type_dependencies Type dependency analysis
analyze_type_usage Type usage patterns
get_nested_types Get nested type definitions

šŸ“š Class Analysis (3 tools)

Tool Description
list_classes Get class definitions with filtering
get_class_details Class info with instances
search_classes Pattern-based class search

šŸ“¦ Import Analysis (4 tools)

Tool Description
analyze_imports Import patterns and dependencies
get_import_graph Module import relationship graphs
find_unused_imports Potential cleanup candidates
get_import_details Comprehensive import information

šŸ” Advanced Queries (4 tools)

Tool Description
execute_query Basic SQL queries
execute_advanced_query JSON-based complex queries with joins
execute_custom_query Custom SQL queries with parameters
find_cross_module_calls Cross-module function usage

šŸŽÆ Pattern Analysis (5 tools)

Tool Description
find_similar_functions Find functions similar to a given function
find_code_patterns Find recurring code patterns
group_similar_functions Group functions by similarity
build_type_dependency_graph Build comprehensive type dependency graph
analyze_type_relationships Analyze deep type relationships

šŸ“ Source Location (3 tools)

Tool Description
find_element_by_location Find code elements by source location
get_location_context Get context around a source location
generate_function_imports Generate import statements for functions

šŸ”¬ Enhanced Analysis (3 tools)

Tool Description
pattern_match_code Advanced pattern matching for code structures
analyze_cross_module_dependencies Comprehensive dependency analysis
enhanced_function_call_graph Enhanced call graphs with advanced options

šŸ” Example Queries

Basic Analysis

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

Advanced Analysis

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

Architectural Analysis

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

āš™ļø Configuration

Environment Variables (.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

Spider Plugin Integration

For Haskell projects using GHC 9.2.8:

  1. Add Spider flake input
  2. Configure cabal with fdep and fieldInspector plugins
  3. Run socket server during build
  4. Generate FDEP output for analysis

Tool Distribution

  • šŸ“ Module Analysis: 7 tools
  • ⚔ Function Analysis: 8 tools
  • šŸ—ļø Type System: 6 tools
  • šŸ“š Class Analysis: 3 tools
  • šŸ“¦ Import Analysis: 4 tools
  • šŸ” Advanced Queries: 4 tools
  • šŸŽÆ Pattern Analysis: 5 tools
  • šŸ“ Source Location: 3 tools
  • šŸ”¬ Enhanced Analysis: 3 tools

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured