返回市场
前端依赖MCP服务器

前端依赖MCP服务器

作者:juspay4 星标更新:2025-06-17

项目介绍

FDEP MCP 服务器

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

🔌 符合MCP协议 | 🏗️ 40多种分析工具 | ⚡ 实时查询

✨ MCP 服务器特性

📊 40多种全面分析工具

  • 模块分析:7种工具用于模块结构和依赖关系
  • 函数分析:8种工具用于调用图和复杂度指标
  • 类型系统:6种工具用于类型关系和使用模式
  • 类分析:3种工具用于类型类和实例分析
  • 导入分析:4种工具用于依赖可视化
  • 高级查询:4种工具用于基于JSON的复杂代码查询
  • 模式分析:5种工具用于代码模式检测
  • 源位置:3种工具用于基于位置的分析
  • 增强分析:3种工具用于高级结构分析

🚀 快速开始

预备条件

  • Python 3.13+
  • UV 包管理器
  • PostgreSQL 数据库(必须运行中)
  • Spider 插件生成的 FDEP 输出(用于全面分析)

数据库设置

安装前,确保 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

此命令将:

  • 初始化 PostgreSQL 数据库模式
  • 导入和处理你的 FDEP 数据(如果已配置 FDEP_PATH)
  • 设置所有必要的索引和关系

注意:首次运行需要时间,因为它会处理大量的 FDEP 数据集。

配置环境

cp .env.example .env
# 编辑 .env 文件以设置你的数据库设置和 FDEP_PATH

🔌 MCP 客户端配置

安装后,配置你首选的 MCP 客户端连接到 FDEP 服务器:

Claude Code

添加到你的 ~/.claude/settings.json

{
  "mcpServers": {
    "fdepAnalyzer": {
      "command": "fdep-mcp-server",
      "args": [],
      "env": {
        "FDEP_PATH": "/path/to/your/fdep/output"
      }
    }
  }
}

注意:首次运行服务器时需要时间,因为它会导入和处理 FDEP 数据。

Cursor

添加到你的 Cursor 设置(Cmd/Ctrl + , → 扩展 → MCP):

{
  "mcp.servers": {
    "fdepAnalyzer": {
      "command": "fdep-mcp-server",
      "args": [],
      "env": {
        "FDEP_PATH": "/path/to/your/fdep/output",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

注意:首次运行服务器时需要时间,因为它会导入和处理 FDEP 数据。

VS Code

安装 MCP 扩展,并添加到 settings.json

{
  "mcp.servers": [
    {
      "name": "fdepAnalyzer",
      "command": "fdep-mcp-server",
      "args": [],
      "env": {
        "FDEP_PATH": "/path/to/your/fdep/output"
      }
    }
  ]
}

注意:首次运行服务器时需要时间,因为它会导入和处理 FDEP 数据。

Cline

添加到你的 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 数据。

所有客户端的环境变量

# 必需
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

验证连接

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

  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_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)

⚙️ 配置

环境变量(.env)

# 数据库
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

Spider 插件集成

对于使用 GHC 9.2.8 的 Haskell 项目:

  1. 添加 Spider flake 输入
  2. 使用 fdep 和 fieldInspector 插件配置 cabal
  3. 在构建期间运行 socket 服务器
  4. 生成 FDEP 输出进行分析

工具分布

  • 📁 模块分析:7种工具
  • 函数分析:8种工具
  • 🏗️ 类型系统:6种工具
  • 📚 类分析:3种工具
  • 📦 导入分析:4种工具
  • 🔍 高级查询:4种工具
  • 🎯 模式分析:5种工具
  • 📍 源位置:3种工具
  • 🔬 增强分析:3种工具