PluginWorld
Mc

mcp-compress-proxy

MCP

A task-aware transparent proxy that wraps stdio MCP servers (such as git, filesystem, and terminal) and compresses large tool outputs field-by-field using declarative YAML profiles, passing narrow intent queries through untouched. Discarded data is stored in SQLite and can be losslessly retrieved via an injected tool, either in full, by line range, or by grep, while errors are always preserved and failures fall back to the raw result.

@LT326 · MIT License · updated today

SECURITY

B

SCORE

60

STARS

▲ 0

PLUG IN

git clone https://github.com/LT326/mcp-compress-proxy.git

See the README to configure this MCP server

README

mcp-compress-proxy

任务感知的 MCP 透明压缩代理(Task-Aware MCP Compression Proxy)。

面向 ZCode / Claude Code / Cursor 等 MCP 客户端:代理拉起原始 MCP server (第一版支持 git,filesystem / terminal profile 已就绪),按任务意图用 YAML Profile 驱动字段级压缩;被丢弃的数据落入 SQLite,可随时通过注入的 retrieve_original 工具无损取回(全量 / 子字段 / 行区间 / grep 部分取回)。

  • 架构约束与迭代记录:见 AGENTS.md
  • 合成基准:tests/benchmark/report.md(平均压缩率 81.5%、关键字段保留率 100%)
  • 真实会话基准(20 个 LLM 会话 A/B 对照):v1 · v2(优化后)(retrieve 6→0,深扫任务 token 改善 31-34%,成功率无损)

快速开始

要求:Python ≥ 3.10(开发于 3.12)、uv、git。

git clone https://github.com/LT326/mcp-compress-proxy.git
cd mcp-compress-proxy
uv venv && uv pip install -e ".[dev]"
python -m pytest tests/ -v          # 50 个测试应全绿

安装要代理的 server(以官方 git server 为例,固定版本):

uv tool install "mcp-server-git==2026.10.19"   # 大陆网络可加 --index-url https://pypi.tuna.tsinghua.edu.cn/simple

⚠️ 2026-10 核验事实:npm 包 @modelcontextprotocol/server-git 已下架(registry E404)。 官方 git MCP server 现为 PyPI 包 mcp-server-git。详见 docs/e2e-verification.md。

接入 MCP 客户端(以 ZCode 为例)

下面 <PROJECT_DIR> 指本仓库克隆路径,<YOUR_REPO> 指你要代理的 git 仓库。 写入 ZCode 的 MCP 配置(用户级或工作区级均可):

{
  "mcp": {
    "servers": {
      "git-compressed": {
        "command": "<PROJECT_DIR>\\.venv\\Scripts\\python.exe",
        "args": [
          "<PROJECT_DIR>\\scripts\\zcode_entry.py",
          "--server", "git",
          "--db", "<PROJECT_DIR>\\refs.db",
          "--",
          "mcp-server-git",
          "--repository", "<YOUR_REPO>"
        ]
      }
    }
  }
}
  • Windows 必须走 scripts/zcode_entry.py 入口:GUI 客户端拉起子进程的环境往往极简 (PATH 缺 git → server 内 GitPython 启动即崩 → 表现为连接 30 秒超时)。该入口会从 注册表补全 PATH、写入 GIT_PYTHON_GIT_EXECUTABLE 绝对路径,再进入代理主循环。 Linux / macOS 或环境完整的客户端可直接用 -m mcp_compress_proxy.proxy 替代该入口。
  • --db 是 sw-ref 可逆存储的 SQLite 路径,可放任意位置。
  • mcp-server-git 换成 uv tool install 装出的可执行文件绝对路径最稳(拉起零网络)。
  • 接入其它 stdio MCP server:把 -- 之后的子命令换成对应 server 的启动命令, 并在 profiles/ 下按 profiles/{server_name}.yaml 增加一份 Profile。
  • 空环境冒烟验证(模拟 GUI 残缺环境):
python scripts/verify_zcode_chain.py

使用行为

  • 窄意图查询原样透传(git_show / git_diff / max_count≤20 的 git_log)—— 不压缩、不注入标记;宽范围扫描(如 max_count>20 的 git_log)返回块级摘要: 每条 commit 一行 hash | 作者 | message 首行,末尾带 [sw-compressed; original: sw-ref:… — call retrieve_original] 标记。
  • 需要原文时调用注入的 retrieve_original:全量 {"ref_id": "sw-ref:…"}、行区间 {"ref_id": …, "lines": "120-180"}、 过滤 {"ref_id": …, "grep": "^commit"}(命中行带行号)。
  • 压缩规则全部在 profiles/*.yaml(声明式,改 YAML 不改代码);终端类输出启用 R5:错误信号(非零退出码 / Traceback / FAILED)无论任务类型 100% 保留。
  • 代理 fail-open:压缩路径任何异常一律透传原始结果,不影响可用性。

真实 E2E(可复跑)

.venv\Scripts\python.exe scripts\e2e_mcp_git.py            # 直连 + 经代理双链路(真实 mcp-server-git)
set MCP_E2E=1 && .venv\Scripts\python.exe -m pytest tests\test_e2e_git.py -v

完整证据(版本矩阵、命令、输出、常见问题、清理)见 docs/e2e-verification.md; ZCode 图形端手把手确认清单见 docs/zcode-manual-check.md (docs 内含开发机的绝对路径,为原始验证记录,保留未改)。

适用边界(来自真实基准的诚实结论)

✓ 大输出、概览型消费(摸底 / 定位 / 列清单)、长会话——输出压到 1/4~1/8,几乎零取回; × 精确逐条处理全量数据的任务(数数、全清单核对)会触发取回,净值可能为负—— 对此类调用请用窄查询(透传)或部分取回。详见 real_sessions_report_v2.md 结论一节。

开发

  • Python ≥ 3.10;依赖管理用 uv:uv venv && uv pip install -e ".[dev]"
  • 测试:python -m pytest tests/ -v(默认不含真实网络 E2E,MCP_E2E=1 开启)
  • 真实会话基准工具链:scripts/real_bench_prepare.py(任务+ground truth 生成)、 scripts/mcp_call.py(双臂 helper)、scripts/real_bench_score.py(计分报告)

License

MIT

SIMILAR PLUGINS