About MGO — Multi-chain Gas Optimizer
MGO is an MCP server and Node client for comparing gas prices across EVM chains. It offers free comparison tools and paid, x402-based recommendations for agents preparing transactions.
Key features
- 01Gas prices across up to 9 EVM chains
- 02Free demo and cheapest-chain tools
- 03Paid basic and premium data
- 04x402 payments in USDC on Base
Use cases
- 01Compare fees before a swap or bridge
- 02Choose a lower-cost chain for deployment
MCP support
Provides free and paid gas tools to MCP clients, including `get_gas_demo` and `get_cheapest_chain`. It is available as a stdio server or hosted at `https://api.mgo.chain-ops.xyz/mcp`.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y chain-ops-mgoMGO_PRIVATE_KEYSecretOptional. EVM private key (0x...) holding USDC on Base; enables auto-pay for the paid tools.MGO_MAX_PRICEOptional. Hard cap per call in micro-USDC (default 10000 = $0.01).Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
4Saved tool list · updated 1w ago
This tool takes no parameters.
Details
From the project READMEchain-ops-mgo
Multi-chain Gas Optimizer — Compare real-time gas prices across 9 EVM chains and get the cheapest-chain recommendation. Pay-per-call via x402 on Base. No API key, no signup.
When to use: call it before any EVM transaction (bridge, deploy, swap) to route to the lowest-fee chain — e.g. "Use Optimism — saves 97% vs Ethereum". Built for AI agents: one USDC microtransaction per call. Ships as a Node client and a stdio MCP server.
MCP server (Claude Desktop, Cursor, any MCP client)
No install needed:
{
"mcpServers": {
"mgo-gas": {
"command": "npx",
"args": ["-y", "chain-ops-mgo"],
"env": { "MGO_PRIVATE_KEY": "0x...", "MGO_MAX_PRICE": "10000" }
}
}
}
Tools: get_gas_demo, get_cheapest_chain (free), get_gas_basic ($0.001), get_gas_premium ($0.002).
Without MGO_PRIVATE_KEY the paid tools return the x402 payment requirements instead of data. With it (plus @chain-ops/agent-sdk and viem installed) they pay automatically, capped at MGO_MAX_PRICE micro-USDC (default 10000 = $0.01).
Prefer not to run anything? The same tools are hosted at https://api.mgo.chain-ops.xyz/mcp (official MCP Registry: xyz.chain-ops/mgo).
Install (library)
Free endpoints only:
npm install chain-ops-mgo
Auto-payment (recommended for paid endpoints):
npm install chain-ops-mgo @chain-ops/agent-sdk viem
Quick Start
Free — no payment
const { getCheapestChain } = require('chain-ops-mgo');
const result = await getCheapestChain();
console.log(result);
// {
// chain: 'Optimism', chainId: 10, nativeToken: 'ETH',
// gasPriceGwei: '0.0010',
// dexSwapCostNative: '0.00000016',
// dexSwapCostUsdc: 0.00039, // from the free /prices feed; omitted if unavailable
// savingsVs: 'Ethereum',
// savingsPercent: '97.4%'
// }
Paid — auto-payment via SDK (recommended)
const { getGasBasicWithPayment } = require('chain-ops-mgo');
const data = await getGasBasicWithPayment({
account: process.env.PRIVATE_KEY, // 0x...
network: 'base',
});
console.log(data.recommendation.action);
// "Use Optimism — saves 97.4% vs Ethereum"
The SDK handles the x402 402-handshake (parse requirements, sign the EIP-3009 USDC authorization, retry). One USDC microtransaction per call ($0.001 basic, $0.002 premium), hard-capped at maxPrice (default $0.01).
Endpoints
| Function | Price | Chains | Notes |
|---|---|---|---|
getGasDemo() | Free | 4 | Raw gas prices (native units), rate limited 10/hr |
getPrices() | Free | — | Native token USD prices (ETH, BNB, POL, AVAX, HYPE), 60s cache |
getCheapestChain() | Free | 4 | Cheapest chain for a DEX swap, USD via getPrices() |
getGasBasicWithPayment({ account }) | $0.001 USDC | 4 | Auto-pay via SDK + recommendation |
getGasPremiumWithPayment({ account }) | $0.002 USDC | 9 | Auto-pay via SDK + 9 chains incl. BNB, Polygon, Avalanche, zkSync, Hyperliquid |
getGasBasic({ paymentHeader }) | $0.001 USDC | 4 | Manual mode — bring your own x402 header |
getGasPremium({ paymentHeader }) | $0.002 USDC | 9 | Manual mode — bring your own x402 header |
Auto-pay options
await getGasPremiumWithPayment({
account: '0x...', // private key OR a viem Account object
network: 'base', // currently only 'base'
maxPrice: 5_000n, // optional cap in micro-USDC ($0.005); default 10_000n
});
If @chain-ops/agent-sdk is not installed, the auto-pay functions throw a clear error pointing to the install command. Free functions work without it.
Manual mode (advanced)
If you build your own x402 client, you can supply a pre-built header:
const { getGasBasic } = require('chain-ops-mgo');
const data = await getGasBasic({
paymentHeader: { 'PAYMENT-SIGNATURE': '<base64 x402 v2 payload>' }, // or 'X-PAYMENT' for v1
});
Without a payment header, paid functions throw Error: Payment required with err.status === 402 and err.paymentInfo (the decoded PAYMENT-REQUIRED header: accepts[], resource, ...).
Payment
Uses x402 protocol on Base (eip155:8453) with USDC. No API key, no subscription, no account required.
Links
- API: https://api.mgo.chain-ops.xyz
- Dashboard: https://mgo.chain-ops.xyz
- SDK:
@chain-ops/agent-sdk— the underlying x402 + ERC-8004 client - Remote MCP: https://api.mgo.chain-ops.xyz/mcp
- Source: https://github.com/dlrjsdl200-byte/chain-ops-mgo
- Homepage: https://chain-ops.xyz
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.