satgate-proxy
v0.3.0
Published
Budget-enforced MCP proxy — hard-cap your AI agent tool spend
Maintainers
Readme
satgate-proxy
Budget-enforced MCP proxy — hard-cap your AI agent tool spend.
MCP servers are an open tap. Every tools/call costs money and there's no built-in spending limit. satgate-proxy sits between your MCP client (Claude Desktop, Cursor) and the server, enforcing a hard budget cap.
Zero dependencies. Node.js built-ins only. npx and go.
Quick Start — Local Mode (New in v0.3.0)
No server, no API key, no account. Budget enforced in-process:
npx satgate-proxy --local --budget 5.00 \
--server @modelcontextprotocol/server-google-searchOr with a config file:
# satgate.yaml
server: @modelcontextprotocol/server-google-search
budget: 5.00
mcp_pricing:
web_search: 5
dalle_generate: 50
'*': 1npx satgate-proxy --local --config satgate.yamlClaude Desktop config (local mode):
{
"mcpServers": {
"google-search": {
"command": "npx",
"args": [
"satgate-proxy",
"--local", "--budget", "5.00",
"--server", "@modelcontextprotocol/server-google-search"
]
}
}
}No env vars needed. No accounts. Just a budget cap.
SaaS Mode (Teams & Enterprise)
For server-side enforcement with L402 macaroons:
{
"mcpServers": {
"google-search": {
"command": "npx",
"args": [
"satgate-proxy",
"--cap", "5.00",
"--server", "@modelcontextprotocol/server-google-search"
],
"env": {
"SATGATE_API_KEY": "your_macaroon_here"
}
}
}
}Get your API key at cloud.satgate.io.
How It Works
Local Mode
┌──────────────┐ stdio ┌────────────────┐ stdio ┌──────────────┐
│ Claude │ ──── JSON-RPC ──▶ satgate-proxy │ ──── JSON-RPC ──▶ MCP Server │
│ Desktop │ ◀── JSON-RPC ── │ (budget gate) │ ◀── JSON-RPC ── │ (child proc) │
│ / Cursor │ └────────────────┘ └──────────────┘
└──────────────┘ ↑ intercepts tools/call
↑ deducts from budget
↑ blocks when exhaustedThe proxy spawns your MCP server as a child process, intercepts every tools/call, deducts from your budget based on per-tool pricing, and blocks calls when the budget is exhausted.
SaaS Mode
┌──────────────┐ stdio ┌────────────────┐ SSE/HTTP ┌──────────────┐
│ Claude │ ──── JSON-RPC ──▶ satgate-proxy │ ──── JSON-RPC ──▶ SatGate │
│ Desktop │ ◀── JSON-RPC ── │ (this package) │ ◀── JSON-RPC ── │ MCP Proxy │
│ / Cursor │ └────────────────┘ │ + Budget │
└──────────────┘ │ Enforcement │
└──────┬───────┘
│
┌──────▼───────┐
│ MCP Server │
│ (hosted) │
└──────────────┘Config File (satgate.yaml)
Instead of CLI flags, you can use a config file:
# satgate.yaml
server: @modelcontextprotocol/server-google-search
budget: 5.00
mcp_pricing:
web_search: 5 # 5 cents per search
dalle_generate: 50 # 50 cents per image
'*': 1 # 1 cent default for unlisted toolsPricing is in cents. The '*' wildcard sets the default cost for any tool not explicitly listed.
CLI Flags
| Flag | Description | Default |
|------|-------------|---------|
| --server <package> | MCP server package to proxy (required) | — |
| --local | Run in local mode (no SatGate server needed) | off |
| --budget <amount> | Budget cap in USD (local mode) | unlimited |
| --config <path> | Path to satgate.yaml config file | — |
| --cap <amount> | Budget cap in USD (SaaS mode) | — |
| --endpoint <url> | SatGate proxy endpoint | https://satgate-mcp-saas.fly.dev |
| --key <macaroon> | API key (or SATGATE_API_KEY env var) | — |
| --verbose | Debug logging to stderr | off |
| -h, --help | Show help | — |
Why?
MCP gives AI agents direct access to paid APIs — search, code execution, databases, you name it. There's no built-in spending limit. A runaway agent can burn through hundreds of dollars in minutes.
satgate-proxy adds a hard cap:
- Local mode: Set
--budget 5.00→ agent can spend at most $5, enforced in-process - SaaS mode: Set
--cap 5.00→ enforced server-side with L402 macaroons - Zero dependencies —
npxruns it instantly
Zero Dependencies
This package uses only Node.js built-ins (child_process, http, https, fs). No node_modules, no install step. npx satgate-proxy just works.
Links
- 🌐 satgate.io — Homepage
- ☁️ cloud.satgate.io — Dashboard & API keys
- 📦 GitHub — Source code
- 📋 MCP Specification — Model Context Protocol
License
MIT
