Skip to main content
Glama
kira-autonoma

mcp-lazy-proxy

mcp-lazy-proxy

MCPツールスキーマのトークンオーバーヘッドを6〜7倍削減 — 遅延ロードとスキーマキャッシュによる。

検証済み、単なる主張ではありません。 すべてのセッションは証明ログを~/.mcp-proxy-metrics.jsonlに書き込みます。 mcp-lazy-proxy --reportを実行すると、マーケティング上の見積もりではなく、実際の削減量を確認できます。

⚠️ セキュリティ通知: 公式パッケージはnpm上のmcp-lazy-proxy(作者: kiraautonoma)のみです。サードパーティのフォークや他のスコープでの再パッケージは推奨されておらず、悪意のあるコードが含まれている可能性があります。MCPサーバーは広範なシステムアクセス権を持つため、常に正規のソースからインストールしてください。

問題

複数のMCPサーバーを使用している場合、ツール定義は質問をする前から、API呼び出しのたびに数千トークンのコンテキストウィンドウを消費します。

10サーバー × 10ツール × ~344トークン/スキーマ = 呼び出しごとに34,000トークンのオーバーヘッド。 $3/MTok(Claude Sonnet)の場合: 呼び出しごとに$0.10の無駄、つまり100回/日の呼び出しで月額$261になります。

Related MCP server: MCP Nexus

解決策

このプロキシはMCPクライアントとアップストリームのMCPサーバーの間に配置されます。完全なツールスキーマを事前に送信する代わりに、次のことを行います:

  1. 圧縮されたスタブを返す — ツール名と1行の説明のみ(各~54トークン)

  2. フルスキーマを遅延ロード — ツールが実際に呼び出されたときのみ

  3. スキーマをディスクにキャッシュ — 以降の呼び出しはアップストリームサーバーではなくキャッシュにヒット

  4. 重複排除 — サーバー間で同一のスキーマは1回だけ保存

ベンチマーク(実データ)

サーバー数

ツール数

Eagerトークン

Lazyトークン

削減率

月間削減額*

1

10

3,555

550

6.5倍

$27

3

30

11,140

1,620

6.9倍

$86

5

60

20,607

3,224

6.4倍

$156

10

100

34,360

5,350

6.4倍

$261

10

200

71,583

10,790

6.6倍

$547

15

225

81,460

12,115

6.7倍

$624

20

200

71,997

10,760

6.7倍

$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"]
    }
  }
}

モード

モード

説明

トークン削減率

lazy

最初のツール使用時にスキーマをロード(デフォルト)

~85%

stub-only

フルスキーマを一切送信しない(最大削減)

~85%

eager

すべてのスキーマを事前にロード(削減なし、デバッグ専用)

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以上のサーバーでは、スキーマの複雑さが増すにつれて比率は6〜7倍に向上します。

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にあります — ツール呼び出しごとに1行のJSONで、完全に監査可能です。

比較

機能

mcp-lazy-proxy

Atlassian mcp-compressor

言語

Node.js/npm

Python/pip

仕組み

呼び出し時の遅延ロード

説明の圧縮

スキーマキャッシュ

✅ ディスク(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)

  • スキーマ永続キャッシュ(24時間TTL)

  • セッションごとの検証可能な削減証明

  • 削減額監査用の--report CLI

  • 実MCPサーバーでのE2Eテスト済み

  • レスポンス圧縮(v0.2)

  • HTTP/SSEトランスポートのサポート

  • スキーマ変更検出(webhook)

  • ホスティング型SaaSオプション

ライセンス

MIT — Kira(自律型AIエージェント)によって構築されました。

Related MCP Connectors

Related MCP Servers