ContextGC

ContextGC

基于AST解析的上下文智能压缩MCP服务器,通过提取代码骨架和按需展开函数,节省70-90% token,并支持渐进式上下文加载。

Category
Visit Server

README

ContextGC

基于 AST 解析的上下文智能压缩 MCP 插件 — 节省 70-90% token

ContextGC 利用 AST 语法树提取代码骨架(imports、类型定义、函数签名),省略实现细节。这是唯一支持渐进式上下文加载的 MCP 工具:骨架 → 按需展开函数 → 完整代码。

工作原理

┌──────────────────────────────────────────────────┐
│  2000 行 React 组件 (≈18,000 tokens)              │
│                                                    │
│  ┌─ read_code_skeleton ──────────────────────────┐ │
│  │  imports + 类型 + 函数签名 (≈2,000 tokens)     │ │
│  │  函数体替换为省略标记                           │ │
│  └────────────────────────────────────────────────┘ │
│                                                    │
│  ┌─ read_function_body ──────────────────────────┐ │
│  │  按需展开指定函数实现 (≈500 tokens)             │ │
│  └────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘

功能

  • read_code_skeleton — 提取源文件结构骨架,减少 70-90% token 用量
  • read_function_body — 按需展开指定函数的完整实现
  • parse_error_log — 压缩错误日志,过滤 node_modules 栈帧
  • context_gc — 垃圾回收缓存骨架,释放上下文窗口空间
  • MCP Prompt 注入 — 自动引导 AI 使用 ContextGC 替代原生 read_file
  • 三级降级 — AST 解析 → 正则降级 → 截断兜底
  • LRU + TTL 缓存 — 骨架缓存随文件变更自动失效

快速开始

安装与运行

# 克隆
git clone https://github.com/YOUR_USERNAME/contextgc-mcp.git
cd contextgc-mcp

# 安装依赖
npm install

# 构建
npm run build

# 运行
node dist/index.js

配置 Claude Code

claude mcp add contextgc -- node /path/to/contextgc-mcp/dist/index.js

配置 Kilo Code / Cursor / Cline

在 MCP 设置中添加:

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

工具参考

read_code_skeleton

读取源文件并返回结构骨架。

参数 类型 必填 说明
filePath string 源文件绝对路径
focusFunction string 保留此函数的完整实现
focusLine number 保留此行所在函数的完整实现
maxOutputLines number 最大输出行数(默认 500)

read_function_body

展开指定函数的完整实现。

参数 类型 必填 说明
filePath string 源文件绝对路径
functionName string 要展开的函数名
includeContext boolean 包含前后 5 行上下文(默认 true)

parse_error_log

压缩错误日志,提取关键信息,过滤噪音。

参数 类型 必填 说明
logContent string 原始错误日志 / stderr 输出
workspaceRoot string 工作区根路径,用于识别业务代码
maxFrames number 最大保留堆栈帧数(默认 10)

context_gc

清除缓存骨架,释放上下文空间。

参数 类型 必填 说明
strategy "lru" | "all" | "older-than" GC 策略(默认 lru
ttlMinutes number older-than 策略的过期分钟数(默认 30)

配置

在工作区根目录创建 contextgc.config.json

{
  "skeleton": {
    "preserveComments": "doc",
    "preserveTypes": true,
    "maxOutputLines": 500
  },
  "cache": {
    "maxEntries": 100,
    "ttlMs": 1800000
  },
  "logTrimmer": {
    "maxFrames": 10,
    "filterPatterns": ["node_modules", "dist", ".next"]
  }
}

环境变量

变量 说明 默认值
CONTEXTGC_CONFIG 自定义配置文件路径 自动搜索
CONTEXTGC_ENABLED 全局开关 true
CONTEXTGC_LOG_LEVEL 日志级别(debug/info/warn/error warn

支持的语言

语言 解析器 状态
JavaScript / JSX Babel ✅ 完整支持
TypeScript / TSX Babel ✅ 完整支持
Python / Go / Rust / Java / C++ 正则降级 ⚠️ 基础支持
其他语言 正则降级 ⚠️ 基础支持

Tree-sitter 集成(完整多语言 AST 支持)计划在 v0.2 实现。

架构

AI 编码助手 (宿主)
        │ MCP (JSON-RPC 2.0 over stdio)
        ▼
┌─────────────────────────────────┐
│       ContextGC MCP Server       │
│  ┌───────────────────────────┐  │
│  │      MCP 协议层            │  │
│  └─────────┬─────────────────┘  │
│  ┌─────────▼─────────────────┐  │
│  │     工具编排层              │  │
│  │  骨架 | 展开函数 | 日志 | GC│  │
│  └─────────┬─────────────────┘  │
│  ┌─────────▼─────────────────┐  │
│  │     解析器抽象层            │  │
│  │  Babel | Tree-sitter | 正则 │  │
│  └───────────────────────────┘  │
└─────────────────────────────────┘

开发

# 安装依赖
npm install

# 构建
npm run build

# 运行测试
npm test

# 监听模式运行测试
npm run test:watch

# 开发模式(自动重编译)
npm run dev

Token 节省基准

场景 原始 压缩后 压缩率
2000 行 React 组件(骨架提取) ~18,000 tok ~2,000 tok 89%
1000 行 npm build 报错日志 ~8,000 tok ~400 tok 95%
500 行 diff 输出 ~5,000 tok ~1,500 tok 70%
综合大型项目调试会话 ~80,000 tok ~15,000 tok 81%

以上为理论估算值,实际压缩率取决于代码风格和文件结构。

许可证

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured