使用说明
代码图MCP
一个统一的MCP服务器,为代码、文档和学习提供知识图。专为Claude Code集成而构建。
概述
AI编码助手患有健忘症。每次上下文压缩都会删除存在的代码、连接方式以及学习到的内容。代码图MCP通过维护一个跨越代码结构、文档和持久学习的统一知识图来解决这个问题。
看 docs/VISION.md 为了实现完整的愿景。
安装
先决条件
- Node.js 22+
- pnpm 9+
- (可选)Ruby
ruby-lspgem用于增强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。
快速开始
安装和配置后:
- 验证连接 -The
ping工具应返回“pong” - 解析你的代码库:
mcp__code-graph__parse_directory with path: "/path/to/your/project" - 查看图表:
mcp__code-graph__graph_status - 查询图表:
mcp__code-graph__find_entity with namePattern: "MyClass" mcp__code-graph__blast_radius with filePath: "/path/to/file.ts"
配置
项目ID
服务器使用以下检测方法(按顺序)自动识别您的项目:
-
环境变量 (显式配置)
{ "mcpServers": { "code-graph": { "command": "node", "args": ["path/to/code-graph-mcp/packages/mcp-server/dist/index.js"], "env": { "PROJECT_ID": "my-project" } } } } -
Git远程源URL (自动检测)
- 从中提取存储库名称
git config --get remote.origin.url - 支持SSH和HTTPS格式(例如。,
git@github.com:owner/repo.git和https://github.com/owner/repo两者都导致repo)
- 从中提取存储库名称
-
package.json名称 (自动检测)
- 阅读
name场从package.json在当前目录中 - 条带
@scope/作用域包的前缀:@myorg/my-package→my-package
- 阅读
-
退回到“未知” 如果所有检测方法都失败
项目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
许可证
麻省理工学院
