项目简介

Dependency Analysis MCP服务器是一个基于Model Context Protocol (MCP) 的应用后端,旨在帮助大型语言模型 (LLM) 理解代码库的结构和依赖关系。它通过分析代码仓库,提取依赖信息,生成依赖关系图,并进行架构分析,从而为LLM提供更丰富的上下文信息,提升代码相关的任务(如代码补全、代码理解、代码重构等)的性能。

主要功能点

  • 多语言支持: 支持 TypeScript, JavaScript, C#, Python 等多种编程语言的代码依赖分析。
  • 依赖关系图生成: 能够生成 JSON 或 DOT 格式的详细依赖关系图,帮助理解代码模块之间的相互关系。
  • 架构分析: 可以推断代码库的架构层次,并根据预设规则进行架构验证和评分。
  • 文件元数据提取: 从源代码文件中提取 imports、exports 等元数据信息。
  • 架构评分系统: 根据架构规则和模式评估代码库,量化代码库的架构质量。
  • 提供多种工具: 通过 MCP 协议向客户端暴露多个工具,方便 LLM 按需调用分析功能。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/mkearl/dependency-mcp
  2. 安装依赖:
    cd dependency-mcp
    npm install
  3. 构建项目:
    npm run build

服务器配置

要将 DependencyMCP 服务器配置到 MCP 客户端,您需要在客户端的 MCP 设置文件中添加以下 JSON 配置。通常,该文件位于 '~/.config/cline/mcp_settings.json' 或类似路径。

{
  "mcpServers": {
    "DependencyMCP": {
      "command": "node",
      "args": ["/path/to/dependency-mcp/dist/index.js"],
      "env": {
        "MAX_LINES_TO_READ": "1000", // (可选) 从每个文件读取的最大行数,默认 1000
        "CACHE_DIR": "/path/to/dependency-mcp/.dependency-cache", // (可选) 依赖缓存文件存储目录,默认 .dependency-cache
        "CACHE_TTL": "3600000" // (可选) 缓存有效期,毫秒为单位,默认 1小时 (3600000)
      }
    }
  }
}

注意:

  • 请将 '/path/to/dependency-mcp' 替换为您克隆的 'dependency-mcp' 仓库的实际路径。
  • 'command' 字段指定了启动服务器的命令为 'node'。
  • 'args' 字段指定了服务器启动脚本的路径为 '/path/to/dependency-mcp/dist/index.js'。
  • 'env' 字段允许您设置环境变量来配置服务器的行为,例如 'MAX_LINES_TO_READ'、'CACHE_DIR' 和 'CACHE_TTL'。

基本使用方法

配置完成后,您的 MCP 客户端就可以通过调用 'client.callTool' 方法来使用 DependencyMCP 服务器提供的工具。以下是一些可用的工具及其基本用法示例:

  • analyze_dependencies: 分析代码库依赖关系。

    const result = await client.callTool("DependencyMCP", "analyze_dependencies", {
      path: "/path/to/project", // 代码库路径
      excludePatterns: ["node_modules", "dist"], // (可选) 排除的文件/目录模式
      maxDepth: 10, // (可选) 最大分析深度
      fileTypes: [".ts", ".js", ".cs"] // (可选) 分析的文件类型
    });
  • get_dependency_graph: 获取代码库的依赖关系图。

    const result = await client.callTool("DependencyMCP", "get_dependency_graph", {
      path: "/path/to/project", // 代码库路径
      format: "dot" // (可选) 输出格式,可选 "dot" 或 "json" (默认)
    });
  • get_file_metadata: 获取指定文件的元数据。

    const result = await client.callTool("DependencyMCP", "get_file_metadata", {
      path: "/path/to/file.ts" // 文件路径
    });
  • get_architectural_score: 获取代码库的架构评分。

    const result = await client.callTool("DependencyMCP", "get_architectural_score", {
      path: "/path/to/project", // 代码库路径
      rules: [ // 架构规则
        {
          pattern: "src/domain/**/*",
          allowed: ["src/domain/**/*"],
          forbidden: ["src/infrastructure/**/*"]
        }
      ]
    });

请参考仓库的 README.md 文件和源代码了解更详细的工具参数和使用方法。

信息

分类

开发者工具