contextshrinker
contextshrinker
contextshrinker 是一个用 Go 编写的零依赖、无头(headless)模型上下文协议(MCP)服务器。它将本地代码库索引到嵌入式 Kùzu 图数据库中,从而大幅减少自主 AI 代理(如 Claude Code、Cursor、Antigravity IDE、Aider 和 Claude Desktop)的 LLM 令牌消耗。
contextshrinker 不会强迫 AI 代理读取原始源文件或运行笨拙的基于 grep 的搜索,而是允许代理查询项目架构依赖关系、函数调用链和类继承结构的语义图——将输入上下文消耗减少 90% 到 98%。
🚀 主要特性
通用代理兼容性: 可通过标准输入/输出(
stdio)无缝附加到任何符合 MCP 的编码工具或 IDE。零外部数据库: 完全自包含。在项目本地的
.contextshrinker/目录中运行进程内图数据库(Kùzu)。自动管理 LSP 守护进程: 自动检测项目语言,以编程方式配置沙盒语言服务器(如用于 Go 的
gopls或用于 Python 的pyright)(如果缺失),并在后台查询其 RPC 接口以构建调用图。多语言支持: 支持 Go、Python、JavaScript、TypeScript 和 Java 的完整 AST 语法解析和语义索引。
干净的项目隔离: 每个工作区都维护自己的
.contextshrinker/目录,其中包含隔离的配置文件(.contextshrinker/ignore)和图数据库文件(.contextshrinker/db/)。实时状态同步: 使用
fsnotify递归监视文件。保存时,防抖增量更新会清除旧节点并实时重新索引已修改的文件。交互式图可视化: 按需生成令人惊叹的、由 Vis.js 驱动的深色模式 HTML 代码库可视化(
.contextshrinker/contextshrinker_graph.html)。
Related MCP server: code-graph-mcp
🛠️ 架构:两遍摄取
为了干净地索引代码,contextshrinker 运行两遍摄取序列:
graph TD
A[Walk Workspace] -->|Filter via .contextshrinker/ignore| B[Pass 1: Tree-sitter Syntax]
B -->|Create Nodes| C[(Kùzu Graph DB)]
C --> D[Pass 2: LSP Semantic Cross-References]
D -->|Create CALLS / IMPLEMENTS Edges| C第一遍(Tree-sitter AST 提取): 快速扫描源文件以提取实体(函数/方法、类/结构体、变量)及其关联的文档字符串,并将它们作为节点插入。
第二遍(LSP 语义解析): 查询后台语言服务器协议(LSP)守护进程以获取交叉引用,从而识别和连接调用(
CALLS)、导入(IMPORTS)和类继承(IMPLEMENTS/EXTENDS)。
📥 安装
选项 1:预编译二进制文件(最快)
如果您不想安装 Go,可以下载适用于您平台的可移植预编译包:
转到 Releases 页面。
下载适用于您操作系统的存档文件(
.tar.gz或.zip)。解压存档。将可执行文件(
contextshrinker)及其动态库(libkuzu/kuzu_shared)放在同一文件夹中。从该目录运行可执行文件:
macOS / Linux:
chmod +x contextshrinker
./contextshrinker --helpWindows:
contextshrinker.exe --help选项 2:从源代码构建(需要 Go)
先决条件
Go(1.21 或更高版本)
Node.js 和 npm(用于自动安装 JS/TS 和 Python LSP)
编译
克隆存储库并运行:
go build -o contextshrinker要将其直接安装到系统 PATH 中:
go install🔌 集成到编码代理中
contextshrinker 作为编码代理的子进程按需运行。将编译后二进制的绝对路径注册到您的客户端中:
1. Antigravity IDE(Gemini 代理面板)
打开 Antigravity IDE。
单击代理面板中的
...(更多选项) 菜单。选择 "管理 MCP 服务器" $\rightarrow$ "查看原始配置"。
在
mcp_config.json中注册服务器:{ "mcpServers": { "contextshrinker": { "command": "/absolute/path/to/contextshrinker" } } }
2. Claude Code(CLI)
自动添加服务器:
claude mcp add contextshrinker /absolute/path/to/contextshrinker3. Cursor IDE
导航到 设置 $\rightarrow$ 功能 $\rightarrow$ MCP。
单击 + 添加新的 MCP 服务器。
设置配置:
名称:
contextshrinker类型:
command命令:
/absolute/path/to/contextshrinker
4. Claude Desktop
将其添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"contextshrinker": {
"command": "/absolute/path/to/contextshrinker"
}
}
}🧰 公开的工具
配置完成后,以下工具将自动可供您的 AI 编码代理使用:
search_codebase参数:
query(字符串)描述: 执行全文搜索和 Cypher 查询,以匹配类、函数和变量中的结构和文档字符串。
get_call_chain参数:
target_function(字符串)、depth(整数,最大 5)描述: 使用变长路径 Cypher 查询解析上游调用者链,以映射调用依赖关系。
get_file_structure参数:
file_path(字符串)描述: 检索单个文件中包含的完整抽象节点结构(类、接口、方法、变量),而无需将原始文本内容馈送到上下文中。
visualize_codebase描述: 触发按需 HTML 导出,将
contextshrinker_graph.html保存到您的.contextshrinker/目录中。
get_architecture_report描述: 检索完整的代码库架构健康报告,其中包含有关上帝对象、耦合热点、循环、死未导出函数、AI 指标(SCR、DCR、BVI、AOI、调用链深度指数 - CDI)的指标,以及可操作的代码质量指南(Jeff Dean 原则)和 AI 系统提示指令。
🏛️ 代码库与架构优化
您可以使用 contextshrinker 系统地审计耦合、分析领域边界(DDD),并使用 LLM 指导代码重构(例如,将单体应用拆分为模块)。
优化工作流
生成架构指标和指南: 在终端中运行分析命令以检查代码库图并生成报告:
./contextshrinker analyze这将生成
contextshrinker-report.md,其中包含上帝对象(高出站耦合)、黑洞(高入站调用)、循环导入路径、死代码(未使用的私有函数)、AI 指标(包括调用链深度指数 - CDI)以及可操作的代码质量和 LLM 架构指南(Jeff Dean 原则)的指标。获取系统提示: 从 CLI 检索首席系统架构师提示:
./contextshrinker prompt architect使用 LLM 分析:
将
prompt architect命令的输出设置为 LLM 的系统提示。将生成的
contextshrinker-report.md的内容作为上下文/输入提供。要求 LLM 提出有界上下文拆分或接口边界。
代理/工具使用工作流: 如果使用兼容 MCP 的代理(如 Antigravity IDE、Claude Code 或 Cursor),您可以直接询问:
"运行 contextshrinker 分析报告,读取生成的 markdown,并充当系统架构师来审计我们的设计热点。在建议具体的模块提取之前,使用
get_call_chain和get_file_structure工具检查耦合情况。"
⚙️ 配置与忽略
为防止工作区图膨胀,默认会忽略标准库和依赖项文件夹(node_modules/、vendor/、.git/ 等)。
要添加自定义忽略项,请初始化项目并在工作区根目录生成 .csignore 文件,方法是运行:
contextshrinker init.csignore 中的每一行都会递归匹配:
# Custom project ignores
*.log
tmp-output/
dist/
.vitepress💡 大型项目的最佳实践
如果您在中小型项目(例如,数百或数千个文件)上使用 contextshrinker,则直接在 LLM/代理提示(如 Claude Code 或 Cursor)中运行初始代码库摄取可能会导致代理超时问题。这是因为代理在等待首次工作区解析和 LSP 引用解析完成时具有严格的超时限制(通常为 60 秒)。
为防止这种情况,请在启动代理之前在终端中遵循以下优化工作流:
初始化工作区: 运行初始化命令以创建配置目录和默认忽略列表:
contextshrinker init配置忽略项: 打开工作区根目录下生成的
.csignore文件,并添加要排除的任何大型目录(例如,文档站点、测试资产、构建文件夹)。离线构建数据库: 从终端运行一次分析命令以构建初始图数据库:
contextshrinker analyze这将在离线状态下执行 Tree-sitter 解析和 LSP 语义交叉引用的繁重工作。填充数据库后,后续的代理请求和实时状态同步将在几秒钟内以增量方式运行,从而防止任何将来的超时!
📊 命令行界面(CLI)模式
您可以直接从终端查询代码库图、显式启动 MCP 服务器守护进程、检索系统架构师提示或生成健康分析报告。
1. 启动 MCP 服务器
默认情况下,运行不带参数的 ./contextshrinker 将启动 MCP 服务器守护进程。您也可以显式触发它:
./contextshrinker start2. 运行代码库架构分析
分析代码库结构(上帝对象、入站调用热点、循环导入、死代码、调用链深度指数 - CDI 和 LLM 代码质量指南)并将报告写入 contextshrinker-report.md:
./contextshrinker analyze3. 打印首席系统架构师提示
将领域驱动设计(DDD)首席系统架构师系统提示打印到标准输出:
./contextshrinker prompt architect4. 搜索代码库
查找与查询匹配的函数、类或变量:
./contextshrinker search "IngestWorkspace"5. 跟踪调用链
跟踪目标函数名称的上游调用者(默认深度为 3,最大为 5):
./contextshrinker call-chain "IngestWorkspace" --depth 36. 检索文件结构
获取文件的结构,而无需读取其完整文本内容:
./contextshrinker structure "main.go"7. 生成交互式可视化
生成 Vis.js 代码库图表示:
./contextshrinker visualize在任何浏览器中打开生成的 .contextshrinker/contextshrinker_graph.html,以交互方式浏览项目的架构。
选项(全局标志)
--workspace <path>:指定项目目录(默认为.)。--db <path>:指定数据库存储目录(默认为.contextshrinker/db)。--reindex:在执行查询之前强制进行完整的工作区摄取扫描(重新解析代码和映射 LSP 关系)。如果数据库为空,则会自动运行摄取。注意: 由于 Kuzu DB 会建立独占的文件级锁,请确保在活动数据库上运行 CLI 命令时暂停或停止 IDE 的 MCP 客户端,或者使用 CLI 标志指定其他工作区/数据库目录。
📄 许可证
本项目根据 MIT 许可证授权。
This server cannot be deployed
Maintenance
Related MCP Connectors
Repository knowledge graph MCP server for codebase understanding and debugging.
Hosted code graph over MCP: exact callers, dependencies, and cross-repo blast radius for AI agents.
Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.
Codebase graphs, caller impact analysis, and recorded project context for AI coding agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceCross-repository code knowledge graph MCP server for Java, Kotlin, JavaScript, and TypeScript. Indexes source code into embedded KuzuDB via tree-sitter and exposes 30+ tools for call-flow tracing, multi-hop taint analysis (OWASP/CWE/PCI/STIG), entry-point reachability filtering, performance hotspot detection, and license compliance — without reading source files. 95% fewer tokens vs source-read331MIT
- AlicenseNot gradedqualityAmaintenanceA high-performance code knowledge graph server implementing MCP, indexing codebases into a structured AST knowledge graph with semantic search, call graph traversal, and HTTP route tracing.1,753 npm84MIT
- AlicenseBqualityAmaintenanceHigh-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 159 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.81746,435MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for semantic code search and dependency graph analysis. Indexes codebases into a knowledge graph with vector embeddings for AI-powered code understanding.12 npmMIT