FDEP MCP服务器
静态代码分析模型上下文协议(MCP)服务器 为企业级Haskell代码库提供40多种全面的分析工具。与MCP兼容的AI工具和客户端无缝集成,提供实时代码智能和架构见解。
🔌 符合MCP协议 | 🏗️ 40+分析工具 | ⚡ 实时查询
✨ MCP服务器功能
📊 40+综合分析工具
- 模块分析:7个模块结构和依赖关系工具
- 功能分析:8个调用图和复杂性度量工具
- 类型系统:6个用于类型关系和使用模式的工具
- 阶级分析:3个类型类和实例分析工具
- 进口分析:4个用于依赖关系可视化的工具
- 高级查询:4个用于复杂JSON代码查询的工具
- 模式分析:5个代码模式检测工具
- 源位置:3个基于位置的分析工具
- 增强分析:3个高级结构分析工具
🚀 快速开始
先决条件
- Python 3.13+
- UV包管理器
- PostgreSQL数据库(必须正在运行)
- Spider插件的FDEP输出(用于综合分析)
数据库设置
安装前,确保PostgreSQL正在运行并创建所需的数据库:
# 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)安装
# 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 数据库设置和数据导入
重要:在将MCP服务器与任何客户端一起使用之前,请完成此步骤。
fdep-mcp-server --setup --verbose此命令将:
- 初始化PostgreSQL数据库架构
- 导入并处理您的FDEP数据(如果配置了FDEP_PATH)
- 设置所有必要的索引和关系
备注:第一次运行需要时间,因为它处理大型FDEP数据集。
配置环境
cp .env.example .env
# Edit .env with your database settings and FDEP_PATH🔌 MCP客户端配置
安装后,配置您首选的MCP客户端以连接到FDEP服务器:
克劳德代码
添加到您的 ~/.claude/settings.json:
{
"mcpServers": {
"fdepAnalyzer": {
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output"
}
}
}
}备注:第一次运行服务器需要时间来导入和处理FDEP数据。
光标
添加到光标设置(Cmd/Ctrl + , → 扩展→ MCP):
{
"mcp.servers": {
"fdepAnalyzer": {
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output",
"LOG_LEVEL": "INFO"
}
}
}
}备注:第一次运行服务器需要时间来导入和处理FDEP数据。
VS代码
安装MCP扩展并添加 settings.json:
{
"mcp.servers": [
{
"name": "fdepAnalyzer",
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output"
}
}
]
}备注:第一次运行服务器需要时间来导入和处理FDEP数据。
克莱恩
添加到您的Cline配置:
{
"mcpServers": {
"fdepAnalyzer": {
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output"
}
}
}
}备注:第一次运行服务器需要时间来导入和处理FDEP数据。
Continue.dev
添加到您的 .continue/config.json:
{
"mcpServers": [
{
"name": "fdepAnalyzer",
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output"
}
}
]
}备注:第一次运行服务器需要时间来导入和处理FDEP数据。
通用MCP客户端
对于任何兼容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"
}
}备注:第一次运行服务器需要时间来导入和处理FDEP数据。
所有客户端的环境变量
# 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验证连接
配置客户端后,验证连接:
- 启动您的MCP客户端
- 在可用工具/服务器中查找“fdepAnalyzer”
- 用一个简单的查询进行测试:
list_modules(limit=5) - 您应该看到您的Haskell模块已列出
🛠️ MCP工具可用(共40+个)
📁 模块分析(7个工具)
| 工具 | 说明 |
|---|---|
initialize_database | 设置数据库并导入FDEP数据 |
list_modules | 获取具有筛选功能的模块列表 |
get_module_details | 详细的模块信息和统计数据 |
get_functions_by_module | 列出模块中的所有函数 |
search_modules | 基于模式的模块搜索 |
get_module_dependencies | 模块依赖性分析 |
get_code_statistics | 全面的代码库统计 |
⚡ 功能分析(8个工具)
| 工具 | 说明 |
|---|---|
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 | 具有依赖关系的完整函数上下文 |
🏗️ 类型系统分析(6个工具)
| 工具 | 说明 |
|---|---|
list_types | 按模块/模式和类别获取类型 |
get_type_details | 使用构造函数/字段键入信息 |
search_types | 具有过滤功能的高级类型搜索 |
get_type_dependencies | 类型依赖性分析 |
analyze_type_usage | 类型使用模式 |
get_nested_types | 获取嵌套类型定义 |
📚 类分析(3个工具)
| 工具 | 说明 |
|---|---|
list_classes | 通过筛选获取类定义 |
get_class_details | 带有实例的类信息 |
search_classes | 基于模式的类搜索 |
📦 进口分析(4个工具)
| 工具 | 说明 |
|---|---|
analyze_imports | 导入模式和依赖关系 |
get_import_graph | 模块导入关系图 |
find_unused_imports | 潜在的清理候选者 |
get_import_details | 全面的进口信息 |
🔍 高级查询(4个工具)
| 工具 | 说明 |
|---|---|
execute_query | 基本SQL查询 |
execute_advanced_query | 基于JSON的复杂连接查询 |
execute_custom_query | 带参数的自定义SQL查询 |
find_cross_module_calls | 跨模块功能使用 |
🎯 模式分析(5个工具)
| 工具 | 说明 |
|---|---|
find_similar_functions | 查找与给定函数类似的函数 |
find_code_patterns | 查找重复代码模式 |
group_similar_functions | 按相似性对函数进行分组 |
build_type_dependency_graph | 构建全面的类型依赖图 |
analyze_type_relationships | 分析深层类型关系 |
📍 源位置(3个工具)
| 工具 | 说明 |
|---|---|
find_element_by_location | 按源位置查找代码元素 |
get_location_context | 获取源位置周围的上下文 |
generate_function_imports | 为函数生成导入语句 |
🔬 增强分析(3个工具)
| 工具 | 说明 |
|---|---|
pattern_match_code | 代码结构的高级模式匹配 |
analyze_cross_module_dependencies | 全面依赖性分析 |
enhanced_function_call_graph | 具有高级选项的增强调用图 |
🔍 查询示例
基本分析
# 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)高级分析
# 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
})架构分析
# 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)⚙️ 配置
环境变量(.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=INFOSpider插件集成
对于使用GHC 9.2.8的Haskell项目:
- 添加Spider薄片输入
- 使用fdep和fieldInspector插件配置cabal
- 在构建过程中运行套接字服务器
- 生成FDEP输出以供分析
______________________________________________________________________
工具分发
- 📁 模块分析:7个工具
- ⚡ 功能分析:8个工具
- 🏗️ 类型系统:6个工具
- 📚 阶级分析:3个工具
- 📦 进口分析:4个工具
- 🔍 高级查询:4个工具
- 🎯 模式分析:5个工具
- 📍 源位置:3个工具
- 🔬 增强分析:3个工具
