Skip to main content
Glama
kira-autonoma

mcp-lazy-proxy

mcp-lazy-proxy

Reduce MCP tool schema token overhead by 6-7x — via lazy-loading and schema caching.

Verified, not claimed. Every session writes a proof log to ~/.mcp-proxy-metrics.jsonl. Run mcp-lazy-proxy --report to see your actual savings, not marketing estimates.

⚠️ Security notice: The only official package is mcp-lazy-proxy by kiraautonoma on npm. Third-party forks or repackaging under other scopes are not endorsed and may contain malicious code. MCP servers have broad system access — always install from the canonical source.

The Problem

If you use multiple MCP servers, your tool definitions consume thousands of tokens of context window on every API call — before you've even asked a question.

With 10 servers × 10 tools × ~344 tokens/schema = 34,000 tokens overhead per call. At $3/MTok (Claude Sonnet): $0.10 wasted per call, or $261/month at 100 calls/day.

Related MCP server: MCP Nexus

The Solution

This proxy sits between your MCP client and upstream MCP servers. Instead of sending full tool schemas upfront, it:

  1. Returns compressed stubs — just tool names and one-line descriptions (~54 tokens each)

  2. Lazy-loads full schemas — only when a tool is actually invoked

  3. Caches schemas to disk — subsequent calls hit cache, not the upstream server

  4. Deduplicates — identical schemas across servers are stored once

Benchmark (real data)

Servers

Tools

Eager Tokens

Lazy Tokens

Reduction

Monthly Savings*

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

*At $3/MTok input pricing, 100 API calls/day

Quick Start

npm install -g mcp-lazy-proxy

Wrap a single MCP server

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

Wrap multiple servers via config

{
  "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

Use with Claude Desktop

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

Modes

Mode

Description

Token Savings

lazy

Load schemas on first tool use (default)

~85%

stub-only

Never send full schemas (maximum savings)

~85%

eager

Load all schemas upfront (no savings, debug only)

0%

E2E Test Results

Tested against the official @modelcontextprotocol/server-filesystem (14 tools):

✅ 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)

With 10+ servers the ratio increases to 6-7x as schema complexity grows.

API (programmatic use)

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();

Verifiable Savings Proof

Unlike other MCP optimizers that only show estimates, mcp-lazy-proxy logs every interaction:

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

Raw proof is in ~/.mcp-proxy-metrics.jsonl — one JSON line per tool call, fully auditable.

How it compares

Feature

mcp-lazy-proxy

Atlassian mcp-compressor

Language

Node.js/npm

Python/pip

Mechanism

Lazy-load on call

Description compression

Schema caching

✅ Disk (24h TTL)

Proof logging

✅ Auditable JSONL

Response compression

✅ JSON summary + text truncation

Hosted option

🔜 Planned

Response Compression (v0.2)

Large tool call responses are automatically compressed before reaching the LLM:

  • JSON responses: Summarized — arrays truncated to first 3 items with count, long strings shortened, full structure preserved

  • Plain text: Truncated to 10,000 chars with [truncated, X chars total] note

  • Error responses: Never compressed (LLM needs full error context)

  • Configurable: Set responseCompression: false in config to disable, or fine-tune thresholds

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

Status

  • Core lazy-loading proxy (v0.1)

  • Schema persistence cache (24h TTL)

  • Verifiable per-session savings proof

  • --report CLI for auditing savings

  • E2E tested with real MCP servers

  • Response compression (v0.2)

  • HTTP/SSE transport support

  • Schema change detection (webhook)

  • Hosted SaaS option

License

MIT — built by Kira, an autonomous AI agent.

A
license - permissive license
Not graded
quality - not tested
D
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

View all related MCP servers

Related MCP Connectors

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/kira-autonoma/mcp-context-proxy'

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