静态代码分析模型上下文协议(MCP)服务器,提供超过40种全面的分析工具,适用于企业规模的Haskell代码库。无缝集成与MCP兼容的AI工具和客户端,以提供实时代码智能和架构洞察。
🔌 符合MCP协议 | 🏗️ 40多种分析工具 | ⚡ 实时查询
📊 40多种全面分析工具
安装前,确保 PostgreSQL 正在运行并创建所需的数据库:
# 启动 PostgreSQL(如果尚未运行)
# 在 macOS 上使用 Homebrew:
brew services start postgresql
# 在 Ubuntu/Debian 上:
sudo systemctl start postgresql
# 创建数据库
createdb code_as_data # 这应该与你的 .env 文件中的 $DB_NAME 值匹配(默认值:code_as_data)
# 克隆仓库
git clone https://github.com/juspay/fdep-mcp-server.git
cd fdep_mcp
# 使用 UV 全局安装(推荐)
uv tool install .
# 或者使用 pipx 全局安装
# pipx install .
# 或者全局安装
# pip install .
重要:在使用 MCP 服务器之前,请完成此步骤。
fdep-mcp-server --setup --verbose
此命令将:
注意:首次运行时会花费时间,因为它处理大量的 FDEP 数据集。
cp .env.example .env
# 编辑 .env 文件,设置你的数据库设置和 FDEP_PATH
安装后,配置你首选的 MCP 客户端连接到 FDEP 服务器:
添加到你的 ~/.claude/settings.json:
{
"mcpServers": {
"fdepAnalyzer": {
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output"
}
}
}
}
注意:首次运行服务器时会花费时间,因为它导入和处理 FDEP 数据。
添加到你的 Cursor 设置(Cmd/Ctrl + , → 扩展 → MCP):
{
"mcp.servers": {
"fdepAnalyzer": {
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output",
"LOG_LEVEL": "INFO"
}
}
}
}
注意:首次运行服务器时会花费时间,因为它导入和处理 FDEP 数据。
安装 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/config.json:
{
"mcpServers": [
{
"name": "fdepAnalyzer",
"command": "fdep-mcp-server",
"args": [],
"env": {
"FDEP_PATH": "/path/to/your/fdep/output"
}
}
]
}
注意:首次运行服务器时会花费时间,因为它导入和处理 FDEP 数据。
对于任何 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 数据。
# 必需
FDEP_PATH=/path/to/your/fdep/output
# 数据库(如果不同于默认值)
DB_HOST=localhost
DB_PORT=5432
DB_NAME=code_as_data
DB_USER=postgres
DB_PASSWORD=postgres
# 可选
LOG_LEVEL=INFO
DEV_MODE=false
配置客户端后,验证连接:
list_modules(limit=5)| 工具 | 描述 |
|---|---|
initialize_database | 设置数据库并导入 FDEP 数据 |
list_modules | 获取模块列表并过滤 |
get_module_details | 详细的模块信息及统计 |
get_functions_by_module | 列出模块中的所有函数 |
search_modules | 基于模式的模块搜索 |
get_module_dependencies | 模块依赖分析 |
get_code_statistics | 综合代码库统计 |
| 工具 | 描述 |
|---|---|
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 | 完整的函数上下文及其依赖 |
| 工具 | 描述 |
|---|---|
list_types | 按模块/模式获取类型并分类 |
get_type_details | 类型信息及其构造器/字段 |
search_types | 高级类型搜索并过滤 |
get_type_dependencies | 类型依赖分析 |
analyze_type_usage | 类型使用模式 |
get_nested_types | 获取嵌套类型定义 |
| 工具 | 描述 |
|---|---|
list_classes | 获取类定义并过滤 |
get_class_details | 类信息及其实例 |
search_classes | 基于模式的类搜索 |
| 工具 | 描述 |
|---|---|
analyze_imports | 导入模式及其依赖 |
get_import_graph | 模块导入关系图 |
find_unused_imports | 可能的清理候选 |
get_import_details | 综合导入信息 |
| 工具 | 描述 |
|---|---|
execute_query | 基本 SQL 查询 |
execute_advanced_query | 基于 JSON 的复杂查询并联接 |
execute_custom_query | 自定义 SQL 查询并带参数 |
find_cross_module_calls | 跨模块函数使用 |
| 工具 | 描述 |
|---|---|
find_similar_functions | 查找与给定函数相似的函数 |
find_code_patterns | 查找重复的代码模式 |
group_similar_functions | 按相似性分组函数 |
build_type_dependency_graph | 构建综合类型依赖图 |
analyze_type_relationships | 分析深层次类型关系 |
| 工具 | 描述 |
|---|---|
find_element_by_location | 根据源位置查找代码元素 |
get_location_context | 获取源位置周围的上下文 |
generate_function_imports | 为函数生成导入语句 |
| 工具 | 描述 |
|---|---|
pattern_match_code | 高级代码结构模式匹配 |
analyze_cross_module_dependencies | 综合依赖分析 |
enhanced_function_call_graph | 带有高级选项的增强调用图 |
# 搜索验证函数
search_functions(pattern="validation", limit=10)
# 获取主函数详情
get_function_details(function_name="main")
# 查找最常调用的函数
get_most_called_functions(limit=20)
# 列出特定区域的模块
list_modules(limit=50)
# 获取函数调用层次
get_function_call_graph(function_name="processData", depth=3)
# 分析类型依赖
get_type_dependencies(type_name="User", include_dependents=true)
# 查找跨模块函数调用
find_cross_module_calls(source_module="Services", target_module="Database")
# 复杂的 JSON 查询
execute_advanced_query({
"type": "function",
"conditions": [
{"field": "name", "operator": "like", "value": "%Handler%"}
],
"limit": 50
})
# 模块依赖分析
get_module_dependencies(module_name="Core.Services", include_dependents=true)
# 导入关系图
get_import_graph(root_module="Main", depth=3)
# 复杂度分析
analyze_function_complexity(module_name="BusinessLogic", min_complexity=5)
# 综合统计
get_code_statistics(include_details=true)
# 数据库
DB_USER=postgres
DB_PASSWORD=postgres
DB_HOST=localhost
DB_PORT=5432
DB_NAME=code_as_data
# FDEP 数据源
FDEP_PATH=/path/to/your/fdep/output
# 日志
LOG_LEVEL=INFO
对于使用 GHC 9.2.8 的 Haskell 项目: