io.github.blackwell-systems/gcf-proxy

Official registry Developer tools

Drop-in MCP proxy. 71% fewer tokens. Session dedup compounds to 92%. Zero code changes.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package @blackwell-systems/gcf-proxy
Claude Code
claude mcp add gcf-proxy -- npx -y @blackwell-systems/gcf-proxy@0.10.2
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "gcf-proxy": {
            "command": "npx",
            "args": [
                "-y",
                "@blackwell-systems/gcf-proxy@0.10.2"
            ]
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. gcf-proxy
  2. Install
  3. Try it (30 seconds, no auth)
  4. Usage
  5. How it works
  6. Why not modify the server?
  7. Benchmarks
  8. Links
  9. License

gcf-proxy

Bidirectional MCP proxy that translates between JSON and GCF. Drop-in, zero changes to your server or client. Works with any structured data format.

100% comprehension on every frontier model. 29% fewer tokens than TOON, 56% fewer than JSON (2,400+ evals, 11 models, 3 providers). Nested object flattening with opt-out for open-weight models. One line change in your MCP config.

Install

pip install gcf-proxy                                         # PyPI
npm install -g @blackwell-systems/gcf-proxy                   # npm
go install github.com/blackwell-systems/gcf-proxy@latest      # Go

Try it (30 seconds, no auth)

gcf-proxy --verbose uvx yfinance-mcp

Use it with any MCP client. When tools return structured JSON, the proxy re-encodes to GCF and logs savings to stderr:

gcf-proxy: get_price_history              54.0KB -> 28.1KB (48% saved)
gcf-proxy: get_ticker_info                10.0KB -> 7.4KB (26% saved)
gcf-proxy: get_price_history              53.8KB -> 27.9KB (48% saved)

--- gcf-proxy session stats ---
Tool calls rewritten:  3
JSON bytes in:         117.8KB
GCF bytes out:         63.4KB
Bytes saved:           54.4KB (46.2%)
Est. tokens saved:     ~13.6K
-------------------------------

Real live stock data from Yahoo Finance. 118KB of JSON reduced to 63KB. ~13,600 tokens saved in 3 tool calls.

Usage

Local server (stdio)

Add gcf-proxy in front of any MCP server command:

{
  "mcpServers": {
    "memory": {
      "command": "gcf-proxy",
      "args": ["npx", "-y", "@modelcontextprotocol/server-memory"]
    }
  }
}
Remote server (HTTP)

Point --upstream at any Streamable HTTP MCP server:

{
  "mcpServers": {
    "remote": {
      "command": "gcf-proxy",
      "args": ["--upstream", "http://host:3000/mcp"]
    }
  }
}

Supports JSON and SSE responses. Session ID tracking via Mcp-Session-Id is automatic.

Deploy as HTTP service

--http turns the proxy into a remote Streamable HTTP server:

gcf-proxy --http :9090 --session your-mcp-server

Any MCP client that supports HTTP transport connects directly. Health check at /health. Chains with --upstream for fully remote deployments.

Both modes are bidirectional: server responses are encoded to GCF, GCF in tool call arguments is decoded to JSON. Neither side needs to change.

Flags
FlagDescription
--sessionEnable session dedup (bare refs for previously-transmitted symbols)
--cacheCache encoded responses for identical tool calls
--deltaSend only changed symbols when a tool's response changes slightly
--no-flattenUse expanded encoding for nested objects (open-weight models currently comprehend this form better; GCF still outperforms JSON either way)
--min-size NSkip encoding for responses smaller than N bytes (default: 100)
--stream-threshold NMin symbols before streaming mode activates (default: 5)
--stats-file PATHWrite JSON stats to file after each call
--upstream URLConnect to a remote MCP server over HTTP
--http ADDRServe MCP over Streamable HTTP
--no-progressDisable progress notifications
--verboseLog per-call savings to stderr
Responses: Server (JSON) -> LLM (GCF)
Before: {"tool":"context_for_task","symbols":[{"qualified_name":"pkg.Auth","kind":"function","score":0.78,...},...]}
After:  GCF profile=graph tool=context_for_task budget=5000 tokens=1900 symbols=50 edges=20
        ## targets
        @0 fn pkg.Auth 0.78 lsp_resolved
        ...

53-71% fewer input tokens.

Requests: LLM (GCF) -> Server (JSON)

If the LLM produces GCF in a tool call argument (63% fewer output tokens), the proxy decodes it to JSON before forwarding:

LLM sends:    {"tool": "process", "arguments": {"data": "GCF profile=generic\nname=Alice\nage=30\n"}}
Server gets:  {"tool": "process", "arguments": {"data": {"name": "Alice", "age": 30}}}

Detection is a 4-byte prefix check (GCF). Zero overhead. Non-GCF strings pass through untouched.

How it works

  1. Spawns your MCP server as a subprocess
  2. Proxies stdin/stdout between client and server
  3. Responses: intercepts JSON-RPC responses, re-encodes structured JSON as GCF
  4. Requests: scans tool call arguments for GCF strings, decodes to JSON
  5. Passes everything else through unchanged in both directions

Why not modify the server?

Sometimes you can't. The server is a third-party binary, or it's maintained by another team, or you just don't want to add a dependency. gcf-proxy gives you the token savings without touching server code.

If you control the server, use the GCF libraries directly for better control over session deduplication and delta encoding.

Benchmarks

100% general comprehension on every frontier model. 91.2% on adversarial code graphs (vs TOON 68.8%, JSON 54.1%). Wins 15/16 datasets on token benchmark.

EvalGCFTOONJSON
General comprehension100%100%100%
Adversarial code graphs (500 symbols)91.2%68.8%54.1%
Token efficiency (16 datasets)15/16 wins1/16baseline

Reproduce comprehension eval: git clone https://github.com/blackwell-systems/gcf-go && cd gcf-go/eval && GOWORK=off go test -run TestComprehension -v -timeout 0

Reproduce token benchmark: git clone https://github.com/blackwell-systems/toon && cd toon && git checkout gcf-comparison && cd benchmarks && pnpm install && pnpm benchmark:tokens

More links

License

MIT - Dayna Blackwell / GCF

Frequently asked questions

What is io.github.blackwell-systems/gcf-proxy?

Drop-in MCP proxy. 71% fewer tokens. Session dedup compounds to 92%. Zero code changes.

How do I install io.github.blackwell-systems/gcf-proxy?

It runs on your machine. In Claude Code: claude mcp add gcf-proxy -- npx -y @blackwell-systems/gcf-proxy@0.10.2. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.blackwell-systems/gcf-proxy need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is io.github.blackwell-systems/gcf-proxy open source?

Yes. Its code is on GitHub under the Apache-2.0 license.

Who maintains io.github.blackwell-systems/gcf-proxy?

It is published by blackwell-systems. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.