Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (satgate-proxy) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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