Skip to main content
Glama
kira-autonoma

mcp-lazy-proxy

mcp-lazy-proxy

将 MCP 工具 schema 的 token 开销降低 6-7x — 通过懒加载与 schema 缓存实现。

实测验证,而非空口宣称。 每次会话都会将证明日志写入 ~/.mcp-proxy-metrics.jsonl。 运行 mcp-lazy-proxy --report 即可查看你的真实节省量,而非营销估算。

⚠️ 安全提示:npm 上唯一官方包是由 kiraautonoma 发布的 mcp-lazy-proxy。其他作用域下的第三方 fork 或重新打包均未获认可,且可能包含恶意代码。MCP 服务器拥有广泛的系统访问权限 — 请始终从官方源安装。

问题

如果你使用多个 MCP 服务器,你的工具定义会在每次 API 调用时消耗数千个上下文窗口 token — 甚至在你提出问题之前。

以 10 个服务器 × 10 个工具 × ~344 tokens/schema 计算,每次调用产生 34,000 tokens 开销。 按 $3/MTok(Claude Sonnet)计算:每次调用浪费 $0.10,每天 100 次调用相当于每月浪费 $261。

Related MCP server: MCP Nexus

解决方案

该代理位于你的 MCP 客户端与上游 MCP 服务器之间。它不再预先发送完整的工具 schema,而是:

  1. 返回压缩的存根(stub) — 仅包含工具名称和一行描述(每个 ~54 tokens)

  2. 懒加载完整 schema — 仅在工具实际被调用时加载

  3. 将 schema 缓存到磁盘 — 后续调用直接命中缓存,而无需访问上游服务器

  4. 去重 — 不同服务器间的相同 schema 只存储一份

基准测试(真实数据)

服务器

工具数

预加载 Token 数

懒加载 Token 数

降幅

每月节省*

1

10

3,555

550

6.5x

$27

3

30

11,140

1,620

6.9x

$86

5

60

20,607

3,224

6.4x

$156

10

100

34,360

5,350

6.4x

$261

10

200

71,583

10,790

6.6x

$547

15

225

81,460

12,115

6.7x

$624

20

200

71,997

10,760

6.7x

$551

*按 $3/MTok 输入价格、每天 100 次 API 调用计算

快速开始

npm install -g mcp-lazy-proxy

包装单个 MCP 服务器

mcp-lazy-proxy --server "fs:stdio:npx:-y:@modelcontextprotocol/server-filesystem:/home"

通过配置包装多个服务器

{
  "servers": [
    {
      "id": "filesystem",
      "name": "Filesystem MCP",
      "transport": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home"]
    },
    {
      "id": "github",
      "name": "GitHub MCP",
      "transport": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"]
    }
  ],
  "mode": "lazy"
}
mcp-lazy-proxy --config proxy.json

与 Claude Desktop 配合使用

{
  "mcpServers": {
    "proxy": {
      "command": "mcp-lazy-proxy",
      "args": ["--config", "/path/to/proxy.json"]
    }
  }
}

模式

模式

描述

Token 节省

lazy

首次使用工具时加载 schema(默认)

~85%

stub-only

从不发送完整 schema(节省最大化)

~85%

eager

预先加载所有 schema(无节省,仅调试)

0%

E2E 测试结果

针对官方 @modelcontextprotocol/server-filesystem(14 个工具)进行了测试:

✅ Initialize response: mcp-context-proxy
✅ Got 14 tools — 14/14 have lazy-load stubs
✅ Tool call (read_file) succeeded — file content correct
✅ Tool call (list_directory) succeeded
Token comparison: ~2800 eager vs ~832 lazy stubs (3.4x on this small server)

当服务器数量达到 10 个以上时,随着 schema 复杂度的增长,降幅提升至 6-7x。

API(编程方式使用)

import { MCPContextProxy } from 'mcp-lazy-proxy';

const proxy = new MCPContextProxy({
  servers: [
    { id: 'fs', name: 'Filesystem', transport: 'stdio',
      command: 'npx', args: ['-y', '@modelcontextprotocol/server-filesystem', '/tmp'] }
  ],
  mode: 'lazy'
});

await proxy.start();

可验证的节省证明

与其他仅展示估算值的 MCP 优化器不同,mcp-lazy-proxy 会记录每一次交互:

# See your actual savings (not estimates)
mcp-lazy-proxy --report

原始证明保存在 ~/.mcp-proxy-metrics.jsonl — 每次工具调用对应一行 JSON,完全可审计。

对比

特性

mcp-lazy-proxy

Atlassian mcp-compressor

语言

Node.js/npm

Python/pip

机制

调用时懒加载

描述压缩

Schema 缓存

✅ 磁盘(24 小时 TTL)

❌

证明记录

✅ 可审计 JSONL

❌

响应压缩

✅ JSON 摘要 + 文本截断

❌

托管选项

🔜 计划中

❌

响应压缩(v0.2)

大型工具调用响应在到达 LLM 之前会自动压缩:

  • JSON 响应:摘要化 — 数组截断为前 3 项并注明总数,长字符串缩短,完整结构保留

  • 纯文本:截断至 10,000 字符,并附 [truncated, X chars total] 说明

  • 错误响应:从不压缩(LLM 需要完整的错误上下文)

  • 可配置:在配置中设置 responseCompression: false 即可禁用,或微调阈值

{
  "servers": [...],
  "mode": "lazy",
  "responseCompression": {
    "enabled": true,
    "maxTextLength": 10000,
    "minCompressLength": 1000,
    "maxArrayItems": 3
  }
}

状态

  • 核心懒加载代理(v0.1)

  • Schema 持久化缓存(24 小时 TTL)

  • 可验证的每会话节省证明

  • 用于审计节省量的 --report CLI

  • 已使用真实 MCP 服务器进行 E2E 测试

  • 响应压缩(v0.2)

  • HTTP/SSE 传输支持

  • Schema 变更检测(webhook)

  • 托管 SaaS 选项

许可证

MIT — 由 Kira(一个自主 AI 代理)构建。

Related MCP Connectors

Related MCP Servers