LabscoMCP early access ↗
JamesANZMCP SERVER · OFFICIAL PROJECT

Evm MCP

The full EVM JSON-RPC surface across any chain and any provider — plus transaction simulation that reports the revert reason before you sign anything.

by JamesANZ ↗Chain State, Explorers & Contract Tooling✓ Official

LABSCO SUMMARY

Simulation tells you why it would revert, in English.

The simulation tools use only eth_call, eth_estimateGas and debug_traceCall where the provider supports it — they never sign or send. What comes back is whether the transaction would succeed, the revert reason in plain language, estimated gas and the balance and state changes. By default the sender is funded with virtual ETH so you can simulate from any address without holding its keys, and real state diffs are used when tracing is available rather than being inferred. Address aliases are the quality-of-life piece that makes the rest usable in conversation.

What it is

An MCP server exposing EVM JSON-RPC methods to an AI coding environment, working with Infura, Alchemy, QuickNode, local nodes or any custom RPC, across Ethereum, Polygon, Arbitrum, Optimism, BSC, Avalanche, Base and any chain you register yourself. Address aliases mean you can say "my wallet" or USDC instead of pasting hex.

What you get

  • Chain and account reads: latest block, balance, nonce, block and transaction by identifier, receipts, contract bytecode and storage — eth_blockNumber, eth_getBalance, eth_getTransactionCount, eth_getBlockByNumber, eth_getTransactionByHash, eth_getTransactionReceipt, eth_getCode, eth_getStorageAt
  • Contract interaction and gas: execute a call, estimate gas, read the gas price, and broadcast a signed transaction — eth_call, eth_estimateGas, eth_gasPrice, eth_sendRawTransaction
  • Read-only simulation against forked or overridden state that never broadcasts: native transfers, ERC20 transfers with human amounts, encoded contract calls and raw transactions, plus a pure calldata encoder — simulate_native_transfer, simulate_erc20_transfer, simulate_contract_call, simulate_transaction, encode_function_data
  • Event logs with block range, address and topic filters — eth_getLogs
  • Network and client introspection, plus discovery of what you have configured — eth_chainId, net_version, net_peerCount, web3_clientVersion, web3_sha3, list_supported_networks, list_known_addresses
  • Alias resolution through KNOWN_ADDRESSES and WALLET_ADDRESSES, and ENS names in the simulation tools

Requirements

At least one of: a provider API key (INFURA_API_KEY or ALCHEMY_API_KEY), a custom provider in CUSTOM_PROVIDERS, or a custom network with an rpcUrl in CUSTOM_NETWORKS. Optional: DEFAULT_NETWORK, DEFAULT_PROVIDER and RPC_PROVIDER_ORDER for fallback order, plus KNOWN_ADDRESSES and WALLET_ADDRESSES for aliases. Node.js 18 or newer and npm; install globally with npm install -g @jamesanz/evm-mcp or build from a clone, and Cursor has a one-click install link. Configuration changes need a server restart. The package is @jamesanz/evm-mcp (2.0.0 in package.json).

Setup effort

One command plus a key — npm install -g @jamesanz/evm-mcp, then supply credentials