An MCP server that fetches live Base mainnet gas data by paying per call in USDC over the x402 payment protocol.
The price is set by the endpoint, not by this package, and is published in the endpoint's OpenAPI document at /openapi.json. Every tool result reports the amount that was actually settled on-chain.
Fetches live Base mainnet gas data from a paid x402 API. Each call makes a real USDC payment on Base mainnet (eip155:8453), signed as an EIP-3009 transfer authorization by the wallet in BUYER_PRIVATE_KEY. Do not call it in loops or on a schedule: every invocation spends real funds.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
target_url |
string (URL) | No | Override the x402 gas API URL. Defaults to https://base-gas-x402-production.up.railway.app/gas. |
Returns a formatted text report with:
- Base fee
- Priority fees (low, medium, high)
- Estimated ETH transfer cost
- Source URL, payer address, and the amount paid
Example call from an MCP client:
{
"name": "get_base_gas",
"arguments": {}
}The paid data source is a companion project: base-gas-x402.
Requirements
- Node.js 18 or newer (built-in
fetchis required) - A funded Base mainnet wallet: a small USDC balance to pay per call, plus a little ETH for gas
git clone https://github.com/memosr/base-gas-mcp.git
cd base-gas-mcp
npm install
cp .env.example .env
# edit .env and set BUYER_PRIVATE_KEYOr run the published package directly with npx base-gas-mcp (see the config blocks below).
BUYER_PRIVATE_KEY is the private key of a Base mainnet wallet. Create a fresh wallet (for example in MetaMask, Coinbase Wallet, or with cast wallet new), export its private key, and fund it on Base with a few dollars of USDC and a small amount of ETH.
Warning: this is a real private key that controls real funds. Use a separate, disposable wallet holding only small amounts. Never reuse a key from a wallet with significant funds, never commit it to git (
.envis gitignored), and never paste it into chat. The server reads it only to sign payments and never logs or returns it.
| Variable | Required | Description |
|---|---|---|
BUYER_PRIVATE_KEY |
Yes | 32-byte hex private key (64 hex chars, 0x prefix optional) of a funded Base mainnet wallet. |
TARGET_URL |
No | Override the gas API URL. |
BUILDER_CODE |
No | Base Builder Code attached to the payment payload for attribution. Defaults to bc_lhfd8zad. |
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json), then restart Claude Desktop:
{
"mcpServers": {
"base-gas": {
"command": "npx",
"args": ["-y", "base-gas-mcp"],
"env": {
"BUYER_PRIVATE_KEY": "0xYOUR_FUNDED_BASE_MAINNET_PRIVATE_KEY"
}
}
}
}To run from a local clone instead, point command at Node and use the absolute path to the server:
{
"mcpServers": {
"base-gas": {
"command": "node",
"args": ["/absolute/path/to/base-gas-mcp/src/server.js"],
"env": {
"BUYER_PRIVATE_KEY": "0xYOUR_FUNDED_BASE_MAINNET_PRIVATE_KEY"
}
}
}
}claude mcp add base-gas \
--env BUYER_PRIVATE_KEY=0xYOUR_FUNDED_BASE_MAINNET_PRIVATE_KEY \
-- npx -y base-gas-mcpOr from a local clone:
claude mcp add base-gas -- node /absolute/path/to/base-gas-mcp/src/server.jsWith the local form, put BUYER_PRIVATE_KEY in the project's .env file instead of the command line.
Once configured, ask Claude:
- "What is the current gas price on Base?"
- "How much would a simple ETH transfer cost on Base right now?"
- "Check Base gas and tell me whether the base fee is high or low at the moment."
Each of these triggers one get_base_gas call and spends real USDC.
- Node.js (ESM), served over stdio transport
@modelcontextprotocol/sdkfor the MCP server@x402/fetch,@x402/evm, and@x402/extensionsfor the payment-wrapped fetch, the EIP-3009 exact payment scheme, and builder-code attributionviemfor account handling and signingzodfor input validation
MIT, copyright (c) 2026 memosr.