Labsco
MCP SERVER

FDEP MCP Server

by maverox

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

Code Intelligence & Repository Indexing
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. Published on PyPI as fdep-mcp-server, version 0.1.0.

Setup effort

One command — uv tool install .