代码知识图谱服务

Code Graph MCP是一个统一的MCP服务器,为代码、文档和学习提供知识图谱,解决AI编码助手的遗忘问题。

  • by joeczar
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 joeczar/code-graph-mcp

使用说明

代码图MCP

一个统一的MCP服务器,为代码、文档和学习提供知识图。专为Claude Code集成而构建。

概述

AI编码助手患有健忘症。每次上下文压缩都会删除存在的代码、连接方式以及学习到的内容。代码图MCP通过维护一个跨越代码结构、文档和持久学习的统一知识图来解决这个问题。

看 docs/VISION.md 为了实现完整的愿景。

安装

先决条件

  • Node.js 22+
  • pnpm 9+
  • (可选)Ruby ruby-lsp gem用于增强Ruby跨文件分辨率

设置

# Clone the repository
git clone https://github.com/joeczar/code-graph-mcp.git
cd code-graph-mcp

# Install dependencies
pnpm install

# Build all packages
pnpm build

使用Claude代码

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "code-graph": {
      "command": "node",
      "args": ["path/to/code-graph-mcp/packages/mcp-server/dist/index.js"]
    }
  }
}

或添加到全局Claude设置(~/.claude/settings.json):

{
  "mcpServers": {
    "code-graph": {
      "command": "node",
      "args": ["/absolute/path/to/code-graph-mcp/packages/mcp-server/dist/index.js"]
    }
  }
}

添加配置后重新启动Claude Code。

快速开始

安装和配置后:

  1. 验证连接 -The ping 工具应返回“pong”
  2. 解析你的代码库:
    mcp__code-graph__parse_directory with path: "/path/to/your/project"
    
  3. 查看图表:
    mcp__code-graph__graph_status
    
  4. 查询图表:
    mcp__code-graph__find_entity with namePattern: "MyClass"
    mcp__code-graph__blast_radius with filePath: "/path/to/file.ts"
    

配置

项目ID

服务器使用以下检测方法(按顺序)自动识别您的项目:

  1. 环境变量 (显式配置)

    {
      "mcpServers": {
        "code-graph": {
          "command": "node",
          "args": ["path/to/code-graph-mcp/packages/mcp-server/dist/index.js"],
          "env": {
            "PROJECT_ID": "my-project"
          }
        }
      }
    }
    
  2. Git远程源URL (自动检测)

    • 从中提取存储库名称 git config --get remote.origin.url
    • 支持SSH和HTTPS格式(例如。, git@github.com:owner/repo.git 和 https://github.com/owner/repo 两者都导致 repo)
  3. package.json名称 (自动检测)

    • 阅读 name 场从 package.json 在当前目录中
    • 条带 @scope/ 作用域包的前缀: @myorg/my-package → my-package
  4. 退回到“未知” 如果所有检测方法都失败

项目ID用于在使用同一服务器实例时区分不同代码库之间的度量和数据。

可用工具

工具 说明
ping 测试连接性(返回“pong”)
echo 回显消息(用于测试)
graph_status 显示图形统计数据(实体、关系)和解析文件
parse_file 将单个文件解析为图形
parse_directory 递归解析目录中的所有文件
find_entity 按名称、类型或文件路径搜索实体
get_exports 列出文件中的所有导出实体
what_calls 查找给定实体的所有调用者
what_does_call 查找给定实体调用的所有实体
blast_radius 分析文件更改的影响

支持的语言

语言 扩展 实体提取 关系
TypeScript .ts, .tsx ✅ 函数、类、方法 ✅ 延伸、呼叫
JavaScript .js, .jsx ✅ 函数、类、方法 ✅ 延伸、呼叫
红宝石 .rb ✅ 函数、类、方法、模块 ✅ 扩展、调用、实现*
查看 .vue ✅ 函数、类、方法 ✅ 延伸、呼叫

注: 默认情况下,调用关系在单个文件中提取。TypeScript/JavaScript尚不支持跨文件调用解析。

Ruby LSP集成(可选)

要使用跨文件继承和模块解析来增强Ruby解析,请安装 ruby-lsp 宝石:

gem install ruby-lsp

如果可用,Ruby LSP提供:

  • 通过以下方式完全解析继承链 linearized_ancestors_of
  • 模块包含跟踪(implements 关系)
  • 跨文件类/模块解析

如果满足以下条件,解析器会自动退回到仅解析树的状态 ruby-lsp 未安装。

发展

pnpm install          # Install dependencies
pnpm build            # Build all packages
pnpm test             # Run tests
pnpm typecheck        # TypeScript type checking
pnpm lint             # ESLint

项目结构

packages/
  core/              # Graph storage, parsing, queries
  mcp-server/        # MCP server with stdio transport
  cli/               # CLI for hooks and management

许可证

麻省理工学院