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.
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.
- 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`
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.
One command — uv tool install .
