静态代码分析服务器

FDEP MCP Server是一个静态代码分析模型上下文协议(MCP)服务器,提供40多种全面的分析工具,用于企业级Haskell代码库,并与MCP兼容的AI工具和客户端无缝集成,提供实时代码智能和架构洞察。

  • by juspay
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 maverox/fdep-mcp-server

使用说明

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

验证连接

配置客户端后,验证连接:

  1. 启动您的MCP客户端
  2. 在可用工具/服务器中查找“fdepAnalyzer”
  3. 用一个简单的查询进行测试: list_modules(limit=5)
  4. 您应该看到您的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=INFO

Spider插件集成

对于使用GHC 9.2.8的Haskell项目:

  1. 添加Spider薄片输入
  2. 使用fdep和fieldInspector插件配置cabal
  3. 在构建过程中运行套接字服务器
  4. 生成FDEP输出以供分析

工具分发

  • 📁 模块分析:7个工具
  • ⚡ 功能分析:8个工具
  • 🏗️ 类型系统:6个工具
  • 📚 阶级分析:3个工具
  • 📦 进口分析:4个工具
  • 🔍 高级查询:4个工具
  • 🎯 模式分析:5个工具
  • 📍 源位置:3个工具
  • 🔬 增强分析:3个工具