coronium-proxy-mcp
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@coronium-proxy-mcplist my available mobile proxies"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Coronium Mobile Proxy MCP Server
MCP (Model Context Protocol) server for Coronium.io mobile (4G/5G) proxy management. Drive the full proxy lifecycle — list, rotate, replace, test, configure auto-rotation, buy, renew, manage subscriptions, open tickets — directly from Claude, Cursor, Cline, VS Code, Zed, Continue, and any other MCP-compatible host. Manage your account at dashboard.coronium.io.
Tool count is whatever
tools/listreturns in your installed version — trust that over any number in this README. The published npm package (latest, 1.3.0) ships the full 48-tool surface: the core lifecycle (auth, account, shop, proxies, support) plus the pay-per-GB pool tier and the proxy-health / payments-ledger / webhook tools. Also: live coin pricing, transparent token refresh, modular codebase. See CHANGELOG.md.
Mental model + operating principles live in the canonical agent skill: https://dashboard.coronium.io/SKILL.md. In one breath: a Coronium proxy is a real SIM in a real device on a carrier CGNAT pool — finite, stateful, physical. Drive it with code-simplifier discipline — smallest sufficient action (don't rotate when sticky works;
restartbeforereplacebefore buy-new), read reality before acting (tools/list,list_tariffs, health — don't assume), a200is "accepted," not "done" (verify the egress IP changed), and no looping/speculative mutations (irreversible actions need confirmation). The recipes are defaults, not laws — compose your own; only the safety/cost rules and the network's physics (rate limits, finite stock, ~290s carrier sticky window) are fixed.
Which Coronium MCP do I want?
Two MCP servers exist and both hit the same backend (https://api.coronium.io/api/v3). Pick by your starting state:
You are… | Use | Why |
A Coronium customer with an existing dashboard.coronium.io email/password |
| The full lifecycle surface (run |
An AI agent or a new user who wants one-command signup, no email | Voucher-gated, wallet-bound (SIWE) signup. 7 minimal verbs. |
The two MCPs are intentional siblings, not duplicates — different auth model, different tool depth. Once signed in, both produce JWTs against the same API, so you can switch later if needs change.
Related MCP server: preloop
Decision guide for AI agents
When this MCP is loaded inside Claude / Cursor / Windsurf / etc., the agent can reach for any tool tools/list exposes. The right choice usually isn't "what's the closest tool name match" — these tools have real semantic differences. Read this once before driving the surface.
Rotate vs Replace — they are NOT interchangeable
Symptom | Use | Cost | Why |
IP got banned by the target site, modem otherwise healthy |
| free | Same modem, fresh IP from the carrier. ~20-second operation. |
Modem hasn't responded in N minutes, multiple |
| free (subscription transfers) | Swap to a different physical modem in the same country. Use this when rotation alone keeps yielding the same dead IP. |
Need a different country/carrier | Buy a new one + release the old | $$ | Rotate/replace stay within country. |
Anti-pattern: don't loop coronium_restart_modem more than 2 times — if rotation keeps returning the same IP, the carrier isn't releasing it. Switch to coronium_replace_modem. The backend's stuck-rotation janitor (deployed 2026-04-30) auto-clears stale "rotating" states within 5 min, so a hung rotation isn't a permanent block.
Stock-out handling
coronium_buy_modems_with_balance returns 4xx if the requested country has no inventory. Don't loop the same call. Instead:
coronium_list_free_modems— confirms what stock exists right nowIf empty for the target country, fall back to a neighbouring market (US ↔ CA, DE ↔ NL ↔ AT, UK ↔ IE) or alert the human
coronium_list_tariffs— surfaces price across countries so you can compare
Reading balance correctly
coronium_get_balance returns three numbers:
account_credit— USD wallet, what's actually spent by buy/renew toolscrypto deposits:— held but unspent crypto (BTC/USDT/etc.). Will convert to account_credit when deposit is detected; not directly spendable.total value— informational, sum across both
Always compare a planned purchase against account_credit, not total value. A user with $0 account_credit and $50 in undeposited crypto cannot buy until the deposit is processed.
Rotation interval — pick by use case
coronium_set_rotation_interval takes seconds. Common values:
Use case | Interval | Notes |
High-volume scraping | 60 s | Maxes carrier rotation cadence; some carriers throttle below 90s |
Account farming | 300 s (5 min) | Reduces detection from rotation-frequency fingerprints |
Long-lived persona | 1800 s (30 min) | Or 0 (disable auto-rotate, rotate manually only) |
Sticky session | 0 | Manual control via |
When to open a ticket vs retry
Open a ticket via coronium_create_ticket when:
A modem has been "replaced" twice in 24h and still doesn't work — likely server-level issue
A payment shows
status: pendingfor >10 min aftercoronium_buy_modems_with_balancereturned a payment_idAn ext_ip never updates despite repeated successful rotations (rare; janitor should catch this)
Don't open a ticket for:
Stock-out (try a different country first)
"My IP got banned" (rotate / replace handles this)
"Speed is slow" (carrier-side; not actionable by support)
Auto-login posture
If CORONIUM_LOGIN and CORONIUM_PASSWORD are set in the MCP env, don't call coronium_login proactively. The MCP auto-logs-in on the first 401 and caches the token at ~/.coronium/token.enc (AES-256-CBC). Manual coronium_login is only needed for explicit account switching or token diagnostics.
Country/carrier selection heuristics
Target site is geo-fenced: pick the same country as the target audience. e.g. US TikTok → US carrier.
Captcha / fraud-detection sensitivity: prefer 5G T-Mobile (US) or Three (UK) — carrier-grade NAT pools rotate aggressively, so individual IPs look "real residential mobile" rather than datacenter.
Cost-sensitive: list tariffs by
coronium_list_tariffs --country PL(Poland Play / Plus) — cheap, high-volume EU pool.Asia-Pacific: stock thin. Always
coronium_list_free_modems --country TH/AU/NZfirst.
Tool-naming distinction (across MCPs)
If the agent has both this MCP and the wallet-bound coronium-mcp loaded, the tool prefixes tell it which auth path is active:
coronium_*(this server) → email/password auth, full lifecycle, existing-customer mode<verb>_<noun>likeproxy_rotate,proxy_buy(coronium-mcp) → wallet/SIWE auth, agent-native mode
Don't mix-and-match in the same session unless you've confirmed the JWTs are the same identity.
Prerequisites
A Coronium.io account — sign up via the dashboard
Node.js 18+ installed
Quick Start
1. Install
git clone https://github.com/coroniumio/coronium-proxy-mcp.git
cd coronium-proxy-mcp
npm install
npm run build2. Configure your AI tool
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"coronium": {
"command": "node",
"args": ["/absolute/path/to/coronium-proxy-mcp/dist/server.js"],
"env": {
"CORONIUM_LOGIN": "your-email@example.com",
"CORONIUM_PASSWORD": "your-password"
}
}
}
}Cursor IDE / Cline / VS Code Copilot / Zed / Continue
Same shape — add to the host's MCP config (.cursor/mcp.json, Cline's MCP settings, etc).
3. Restart your tool
Talk to your AI: "list my Coronium proxies", "rotate the Polish one", "show my balance", "open a ticket about modem cor_US_xxx not working".
What's new in 1.3.0
+14 tools → 48 total. Adds the pay-per-GB Pool tier (8 tools: stock, keys, proxy-URL builder, top-up, cancel, buy-with-balance, sessions), plus coronium_get_proxy_health (per-modem liveness so agents stop retrying dead proxies), coronium_get_payments (full payment + invoice ledger for reconciliation), coronium_get_p0f_options (valid OS-fingerprint values), coronium_apply_modem_settings, and coronium_get_webhook / coronium_set_webhook (modem-lifecycle auto-swap webhook). coronium_list_tariffs now surfaces the additive ip_stack field.
What's new in 1.2.0
Auto-login: set CORONIUM_LOGIN/CORONIUM_PASSWORD once and forget about token management — any tool that hits a 401 transparently re-mints and retries. No more "your token expired, please run coronium_get_token".
Live coin pricing: balance views now show USD valuation pulled live from CoinGecko (60s in-memory cache, falls back gracefully on rate limit).
Full lifecycle surface covering: auth, account, proxies (full lifecycle), shop (browse + buy + renew), tickets, and pool (pay-per-GB). The catalogue below documents the complete surface; tools/list shows exactly what your installed version exposes (48 as of the published npm latest, 1.3.0). See Tool catalogue below.
Modular codebase: src/{config,logger,token-store,api-client,prices,formatters}.ts plus src/tools/{auth,account,proxies,shop,tickets}.ts. The 2010-line single-file from 1.1.x is gone.
Tool catalogue
Auth (3)
Tool | Description |
| Authenticate with email + password. Most other tools auto-login on 401, so explicit calls are only needed for re-auth or account switching. |
| Verify the cached token is still valid. |
| Clear the encrypted token cache. |
Account (9)
Tool | Description |
| Profile, role, contact, business data, 2FA state. |
| Unified multi-currency balance: account credit + crypto, all in USD with live prices. |
| Legacy crypto-only view (BTC/USDT/etc with deposit addresses). |
| Saved Stripe cards (last-4 digits + brand). |
| Get configured email-alert tiers (USD). |
| Set email-alert tiers — e.g. |
| Full payment + invoice ledger ( |
| Get the configured modem-lifecycle auto-swap webhook URL ( |
| Set/clear the modem-lifecycle webhook URL ( |
Proxies (16)
Tool | Description |
| List proxies with optional filters ( |
| Full detail for one proxy by |
| Authenticated rotation via |
| Poll real-time rotation status ( |
| Token-based rotation via the public reset service (no API token needed). |
| Live connectivity probe through the proxy. |
| Swap a broken modem for a working one (subscription transfers). |
| Configure auto-rotation cadence in seconds (0 = manual only). |
| Rotate the HTTP/SOCKS proxy password. |
| Free-form label, ≤200 chars. |
| p0f Android/iOS/Windows/etc fingerprint preset. |
| Cancel auto-renew (modem stays usable until current expiry). |
| Download |
| Per-modem liveness ( |
| List valid OS-fingerprint (p0f) values for |
| Apply pending modem settings ( |
Shop (7)
Tool | Description |
| Countries with stock + free-modem counts. |
| Available price plans (with optional country filter). |
| Live free-modem inventory. |
| Validate a coupon code. |
| Buy 1+ modems using account credit. |
| Renew existing modems. |
| Check status of a payment by id. |
Tickets (5)
Tool | Description |
| List your tickets (filter by |
| Full ticket detail with replies. |
| Open a new ticket. |
| Add a reply. |
| Close from the customer side. |
Pool (8)
Pay-per-GB residential/mobile pool (Proxies.sx tier). These return a clear error / 503 when the pool tier is disabled on the deployment.
Tool | Description |
| Live pool country/stock availability. |
| List your pool keys with usage. |
| Build a ready-to-use proxy URL for a pool key. |
| Add GB / extend a pool key. |
| Disable a pool key. |
| Mint a new pool key using account credit. |
| List active pool sessions. |
| Close a pool session. |
Environment
cp .env.example .env
# edit .env with your credentialsVariable | Default | Purpose |
| — | Account email |
| — | Account password |
|
| Canonical production API base. The OpenAPI spec at https://dashboard.coronium.io/api-docs/ lists this as the single supported server URL. |
|
| Token-based rotation endpoint |
|
| Coin price source |
|
| Set to |
| random per process | Pin to a 64-hex value to keep cache across restarts |
|
|
|
Security
Tokens encrypted at rest with AES-256-CBC under a scrypt-derived key
Credentials live in env vars or
.env— never written to source filesCache directory:
~/.coronium/(token + crypto deposit addresses)All logging goes to stderr; stdout is reserved for MCP JSON-RPC
Development
npm run dev # tsx watch mode
npm test # vitest
npm run build # tsc → dist/
npm run typecheck # tsc --noEmit
LOG_LEVEL=debug npm run devSibling project — wallet-bound MCP
For agent-native onboarding (no email/password — wallet keypair + voucher), see coronium-mcp in the coronium-ai monorepo. Tool surfaces are intentionally similar so an agent can substitute one for the other based on the user's auth model.
Support
Issues: GitHub
Email: hello@coronium.io
Dashboard: dashboard.coronium.io
Buy proxies: coronium.io/buy-mobile-proxies
License
MIT — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/coroniumio/coronium-proxy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server