Skip to main content
Glama
bauhaus28
by bauhaus28

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
  1. 第一遍(Tree-sitter AST 提取): 快速扫描源文件以提取实体(函数/方法、类/结构体、变量)及其关联的文档字符串,并将它们作为节点插入。

  2. 第二遍(LSP 语义解析): 查询后台语言服务器协议(LSP)守护进程以获取交叉引用,从而识别和连接调用(CALLS)、导入(IMPORTS)和类继承(IMPLEMENTS / EXTENDS)。


📥 安装

选项 1:预编译二进制文件(最快)

如果您不想安装 Go,可以下载适用于您平台的可移植预编译包:

  1. 转到 Releases 页面。

  2. 下载适用于您操作系统的存档文件(.tar.gz.zip)。

  3. 解压存档。将可执行文件(contextshrinker)及其动态库(libkuzu / kuzu_shared)放在同一文件夹中。

  4. 从该目录运行可执行文件:

macOS / Linux:

chmod +x contextshrinker
./contextshrinker --help

Windows:

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 代理面板)

  1. 打开 Antigravity IDE

  2. 单击代理面板中的 ...(更多选项) 菜单。

  3. 选择 "管理 MCP 服务器" $\rightarrow$ "查看原始配置"

  4. mcp_config.json 中注册服务器:

    {
      "mcpServers": {
        "contextshrinker": {
          "command": "/absolute/path/to/contextshrinker"
        }
      }
    }

2. Claude Code(CLI)

自动添加服务器:

claude mcp add contextshrinker /absolute/path/to/contextshrinker

3. Cursor IDE

  1. 导航到 设置 $\rightarrow$ 功能 $\rightarrow$ MCP

  2. 单击 + 添加新的 MCP 服务器

  3. 设置配置:

    • 名称: 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 编码代理使用:

  1. search_codebase

    • 参数: query(字符串)

    • 描述: 执行全文搜索和 Cypher 查询,以匹配类、函数和变量中的结构和文档字符串。

  2. get_call_chain

    • 参数: target_function(字符串)、depth(整数,最大 5)

    • 描述: 使用变长路径 Cypher 查询解析上游调用者链,以映射调用依赖关系。

  3. get_file_structure

    • 参数: file_path(字符串)

    • 描述: 检索单个文件中包含的完整抽象节点结构(类、接口、方法、变量),而无需将原始文本内容馈送到上下文中。

  4. visualize_codebase

    • 描述: 触发按需 HTML 导出,将 contextshrinker_graph.html 保存到您的 .contextshrinker/ 目录中。

  5. get_architecture_report

    • 描述: 检索完整的代码库架构健康报告,其中包含有关上帝对象、耦合热点、循环、死未导出函数、AI 指标(SCR、DCR、BVI、AOI、调用链深度指数 - CDI)的指标,以及可操作的代码质量指南(Jeff Dean 原则)和 AI 系统提示指令。


🏛️ 代码库与架构优化

您可以使用 contextshrinker 系统地审计耦合、分析领域边界(DDD),并使用 LLM 指导代码重构(例如,将单体应用拆分为模块)。

优化工作流

  1. 生成架构指标和指南: 在终端中运行分析命令以检查代码库图并生成报告:

    ./contextshrinker analyze

    这将生成 contextshrinker-report.md,其中包含上帝对象(高出站耦合)、黑洞(高入站调用)、循环导入路径死代码(未使用的私有函数)、AI 指标(包括调用链深度指数 - CDI)以及可操作的代码质量和 LLM 架构指南(Jeff Dean 原则)的指标。

  2. 获取系统提示: 从 CLI 检索首席系统架构师提示:

    ./contextshrinker prompt architect
  3. 使用 LLM 分析

    • prompt architect 命令的输出设置为 LLM 的系统提示

    • 将生成的 contextshrinker-report.md 的内容作为上下文/输入提供。

    • 要求 LLM 提出有界上下文拆分或接口边界。

  4. 代理/工具使用工作流: 如果使用兼容 MCP 的代理(如 Antigravity IDE、Claude Code 或 Cursor),您可以直接询问:

    "运行 contextshrinker 分析报告,读取生成的 markdown,并充当系统架构师来审计我们的设计热点。在建议具体的模块提取之前,使用 get_call_chainget_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 秒)。

为防止这种情况,请在启动代理之前在终端中遵循以下优化工作流:

  1. 初始化工作区: 运行初始化命令以创建配置目录和默认忽略列表:

    contextshrinker init
  2. 配置忽略项: 打开工作区根目录下生成的 .csignore 文件,并添加要排除的任何大型目录(例如,文档站点、测试资产、构建文件夹)。

  3. 离线构建数据库: 从终端运行一次分析命令以构建初始图数据库:

    contextshrinker analyze

    这将在离线状态下执行 Tree-sitter 解析和 LSP 语义交叉引用的繁重工作。填充数据库后,后续的代理请求和实时状态同步将在几秒钟内以增量方式运行,从而防止任何将来的超时!


📊 命令行界面(CLI)模式

您可以直接从终端查询代码库图、显式启动 MCP 服务器守护进程、检索系统架构师提示或生成健康分析报告。

1. 启动 MCP 服务器

默认情况下,运行不带参数的 ./contextshrinker 将启动 MCP 服务器守护进程。您也可以显式触发它:

./contextshrinker start

2. 运行代码库架构分析

分析代码库结构(上帝对象、入站调用热点、循环导入、死代码、调用链深度指数 - CDI 和 LLM 代码质量指南)并将报告写入 contextshrinker-report.md

./contextshrinker analyze

3. 打印首席系统架构师提示

将领域驱动设计(DDD)首席系统架构师系统提示打印到标准输出:

./contextshrinker prompt architect

4. 搜索代码库

查找与查询匹配的函数、类或变量:

./contextshrinker search "IngestWorkspace"

5. 跟踪调用链

跟踪目标函数名称的上游调用者(默认深度为 3,最大为 5):

./contextshrinker call-chain "IngestWorkspace" --depth 3

6. 检索文件结构

获取文件的结构,而无需读取其完整文本内容:

./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 许可证授权。

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Cross-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-read
    33
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A 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.
    2,783
    68
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    High-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.
    15
    39,846
    MIT

View all related MCP servers

Related MCP Connectors

  • Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.

  • AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).

  • An MCP server that gives your AI access to the source code and docs of all public github repos

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bauhaus28/contextshrinker'

If you have feedback or need assistance with the MCP directory API, please join our Discord server