craftsman-map
Compiles codebases into a layered knowledge graph, providing an MCP server with 16 tools for AI to navigate, understand, and analyze code before making changes.
README
craftsman-map
把任意代码库编译成分层知识图谱,通过 MCP 协议让 AI 编程工具在改代码前真正读懂项目——而不是凭印象乱改。
五层架构,对应五件事:
- INGEST(摄取):多语言解析 + 文档资产导入 → 统一图谱
- MAP(地图):功能块聚类 + 渐进披露 → 省 token
- NAVIGATE(导航):影响面分析 + git 历史 → 双轨证据
- UNDERSTAND(理解):把代码翻译成人话 → wiki 描述 + 调用方 LLM 增强
- TRACE(工作链):入口到出口调用链路追踪 → 大模型定位 bug 的核心能力
安装
pip install craftsman-map
依赖说明:
- 零强制依赖:Python 解析用内置
ast,图谱用纯 Python,开箱即用 - 可选增强:
pip install tree-sitter tree-sitter-javascript tree-sitter-typescript tree-sitter-go→ 解锁 JS/TS/Go 多语言 - git 历史:
pip install dulwich→ 无需安装 git 二进制,纯 Python 读 git 历史
快速上手
# 1. 在你的项目根目录建立索引(改代码前必须先跑这个)
cd /path/to/your-project
craftsman-map index
# 2. 看功能块地图(渐进披露第一层)
craftsman-map map
# 3. 找符号
craftsman-map search "UserService"
# 4. 看符号详情 + 邻居
craftsman-map symbol "src/auth/service.py::UserService"
# 5. 分析影响面(改这里会波及哪里)
craftsman-map impact "src/auth/service.py::UserService.login"
# 6. 钻取展开(渐进披露第二层)
craftsman-map explore "src/auth/service.py::UserService" --depth 2
# 7. 热点分析(哪些文件改动最频繁)
craftsman-map hotspots
# 8. 统计概览
craftsman-map overview
# 9. 分层架构视图(自动标出入口/核心/工具层)
craftsman-map layers
# 10. 自动识别真实入口
craftsman-map entrypoints
# 11. 工作链:追踪从入口到出口的调用路径
craftsman-map trace "src/main.py::main"
# 12. 生成 wiki 描述(规则版,零成本)
craftsman-map wiki
# 13. 拿某个功能块的描述原料包(给调用方 LLM 生成描述用)
craftsman-map describe --cluster 0
# 14. 把 LLM 生成的描述写回缓存
craftsman-map desc --cluster 0 --text "这个模块负责..."
命令全集
| 命令 | 作用 | 典型用途 |
|---|---|---|
index [PATH] |
建立/刷新索引 | 首次使用或代码变更后 |
overview |
节点/边/语言统计 | 了解项目规模 |
map |
功能块总览 | 渐进披露第一层,只看摘要 |
search QUERY |
符号搜索 | 找函数/类/变量 |
symbol ID |
符号详情 + 邻居 | 精确查看某个符号 |
impact ID |
影响面分析 | 改动前评估波及范围 |
explore ID |
渐进钻取 | 从某节点展开邻居 |
hotspots |
变更热点 + 共变关系 | 找高风险区域 |
layers |
分层架构视图 | 自动标出入口/核心/工具/配置层 |
entrypoints |
识别真实入口 | 找出项目真正的调用起点 |
trace ID |
工作链追踪 | 从入口到出口的完整调用路径 |
wiki |
生成 wiki 描述 | 把代码翻译成人话(规则版,零成本) |
describe |
输出描述原料包 | 给调用方 LLM 生成高质量描述用 |
desc |
回写 LLM 描述 | 把调用方生成的描述缓存进图谱 |
所有命令默认输出 JSON(适合大模型解析),加 --pretty 格式化输出。
为什么给大模型用?
LLM 的真痛点不是"看不懂代码",是"找不准 + 看太多"。
craftsman-map 的设计原则:
-
渐进披露省 token:
map先给功能块摘要(10 行),锁定目标后再explore钻进去——不一次吞下 5000 个函数。 -
置信度体系:每条边都带
confidence字段(静态铁证 1.0 / 歧义 0.6 / 悬空 0.4),让大模型知道哪些是确定事实、哪些是推断。 -
next_actions引导:每个输出都包含"下一步可以调哪些命令",消除大模型的猜测。 -
双轨影响面:静态调用图 + git 共变历史。纯静态图会漏掉"没有直接调用关系但经常一起改"的隐式耦合。
MCP 接入(让大模型自主调用)
craftsman-map 内置 MCP server,标准 stdio JSON-RPC 协议:
craftsman-map serve-mcp
在 AWS Code / Cursor / Cline / Windsurf / Continue 配置:
{
"mcpServers": {
"craftsman-map": {
"command": "craftsman-map",
"args": ["serve-mcp"]
}
}
}
clients/ 目录里有各平台配置文件,复制粘贴即用。MCP 提供 16 个工具,覆盖全部 CLI 命令,AI 可按需自主调用。
支持语言
| 语言 | 支持状态 | 后端 |
|---|---|---|
| Python | ✅ 内置,零依赖 | 内置 ast |
| JavaScript | ✅ 可选 | tree-sitter |
| TypeScript | ✅ 可选 | tree-sitter |
| Go | ✅ 可选 | tree-sitter |
| Markdown / txt | ✅ 内置 | 文本解析 |
| 图片 / 二进制资产 | ✅ 内置(记录路径,不读内容) | AssetParser |
项目结构
craftsman-map/
├── craftsman_map/
│ ├── cli.py # CLI 入口
│ ├── mcp_server.py # MCP stdio server(16 个工具)
│ ├── indexer.py # INGEST 层:扫描 + 解析 + 建图
│ ├── git_history.py # git 历史维度(dulwich 纯 Python)
│ ├── graph/
│ │ ├── model.py # Node / Edge 数据模型(含 confidence)
│ │ ├── store.py # CodeGraph 存储 + 聚类 + 序列化
│ │ └── linker.py # 引用消解
│ ├── parsers/
│ │ ├── base.py # 解析器抽象接口
│ │ ├── python_parser.py
│ │ ├── ts_parser.py # JS/TS/Go(tree-sitter)
│ │ └── doc_parser.py # Markdown / 资产
│ ├── understand/
│ │ ├── wiki.py # 理解层:规则描述 + 原料包 + 注入回写
│ │ ├── view.py # 分层视图
│ │ └── trace.py # 工作链追踪
│ └── commands/
│ ├── core.py
│ └── understand.py
├── tests/ # 68 条测试,全部 passed
├── clients/ # 各平台 MCP 配置文件
└── pyproject.toml
开发 & 测试
pip install -e ".[dev]"
pytest tests/ -v
68 passed,0 skipped,0 failed。
💝 赞助 / Sponsor
如果 craftsman-map 对你有帮助,欢迎赞助支持持续开发与维护。
If craftsman-map helps you, consider sponsoring to support ongoing development.
设计哲学
craftsman-map 的核心信念:LLM 理解代码库,靠的不是"看全部",而是"看对的部分"。
把代码库编译成结构化知识图谱,通过确定性 CLI 精准披露——五层架构对应五件事:摄取、分层、导航、理解、查询。每一层都可独立使用,也可以组合成完整的代码理解流水线。
欢迎提 issue 和 PR。
联系 / Contact
有任何问题、建议或合作意向,欢迎随时发邮件联系。
Feel free to reach out by email for any questions, suggestions, or collaboration.
- 📧 Email: 545118959@qq.com
- 💬 Issues: github.com/EthanXue666/craftsman-map/issues
License
MIT — 个人和商业项目均可免费使用。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。