LabscoMCP early access ↗
juspayMCP SERVER · OFFICIAL PROJECT

FDEP MCP Server

Static analysis for large Haskell codebases — call graphs, type relationships and cross-module dependencies, queried live.

by juspay ↗Code Intelligence & Repository Indexing✓ Official

LABSCO SUMMARY

Haskell only, and the build pipeline is the prerequisite.

This does not read your source. It reads what the Spider plugin emitted during a build, which means the setup cost lands on your Haskell toolchain — cabal configured with the fdep and fieldInspector plugins on GHC 9.2.8 — before the server does anything useful. Once past that, it is the kind of question-answering that no editor gives you: who calls this, what breaks if this type changes, which imports are dead.

What it is

A query layer over FDEP output, the dependency data produced by the Spider plugin during a Haskell build. The analysis is imported into PostgreSQL once, and after that questions about modules, functions, types and typeclasses are answered from the database rather than by re-parsing source.

What you get

  • Modules: list_modules, get_module_details, get_functions_by_module, search_modules, get_module_dependencies, get_code_statistics
  • Functions: get_function_details, search_functions, get_most_called_functions, get_function_call_graph, get_function_callers, get_function_callees, analyze_function_complexity, get_function_context
  • Types and classes: list_types, get_type_details, search_types, get_type_dependencies, analyze_type_usage, get_nested_types, list_classes, get_class_details, search_classes
  • Imports: analyze_imports, get_import_graph, find_unused_imports, get_import_details
  • Patterns: find_similar_functions, find_code_patterns, group_similar_functions, build_type_dependency_graph, analyze_type_relationships
  • Source locations: find_element_by_location, get_location_context, generate_function_imports
  • Escape hatches for anything the named tools do not cover: execute_query, execute_advanced_query for JSON-described joins, execute_custom_query, and find_cross_module_calls

Requirements

Python 3.13+ and the UV package manager, plus a running PostgreSQL with a database created ahead of time. Install the project as a tool, then run it once with the setup flag to initialise the schema and import your data — the first run takes a while because the FDEP datasets are large. FDEP_PATH points at the Spider plugin's output; DB_HOST, DB_PORT, DB_NAME, DB_USER and DB_PASSWORD configure the database. Not on PyPI: its pyproject names the package fdep-mcp-server, version 0.1.0, and it installs from a clone.

Setup effort

Build from source — git clone https://github.com/juspay/fdep-mcp-server.git && cd fdep-mcp-server