Skip to main content
Glama

MCP Ethers Server

⚡ Claude Code Setup:

claude mcp add ethers-wallet -- node /path/to/ethers-server/build/src/index.js

A complete ethers.js v6 wrapper for Claude with 40+ tools for Ethereum blockchain interactions. Works with 20+ EVM networks including Ethereum, Polygon, Arbitrum, Base, and more.

Tool Categories

🔗 Core Ethereum

Network info • Block/transaction data • Wallet operations • Gas estimation • ENS resolution • Message signing • Unit conversion

🪙 Token Standards

ERC20: Token info, balances, transfers, approvals
ERC721: NFT info, ownership, transfers, metadata
ERC1155: Multi-token balances, transfers, batch operations

📝 Transaction Management

Transaction preparation • ERC20/721/1155 transaction prep • Secure transaction broadcasting • Gas optimization

🔧 Contract Interaction

Smart contract calls • Contract code inspection • Custom ABI support

Related MCP server: EVM MCP Server

Quick Example

# Get Vitalik's ETH balance
"getWalletBalance": {
  "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
  "provider": "mainnet"
}

# Get USDC token info
"erc20GetTokenInfo": {
  "tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
  "provider": "mainnet"
}

Installation

git clone https://github.com/yourusername/ethers-server.git
cd ethers-server
npm install
npm run build

Environment Variables

Create .env file:

ALCHEMY_API_KEY=your_alchemy_key
INFURA_API_KEY=your_infura_key
DEFAULT_NETWORK=mainnet

Advanced Setup

Local Project

claude mcp add --scope local ethers-wallet --env ALCHEMY_API_KEY=your_key -- node /path/to/build/src/index.js

Shared Team Config

claude mcp add --scope project ethers-wallet -- node /path/to/build/src/index.js

Security

🔐 Secure by Design: Uses prepare → sign → send workflow. Private keys never stored on server. External signing supported (hardware wallets, offline signing).

⚠️ API Keys: Protect your .env file. Never expose Alchemy/Infura keys.

Development

Built with ethers.js v6 for maximum compatibility and performance. Full TypeScript support with comprehensive error handling.

Testing: npm test (requires Hardhat local node)
Build: npm run build

Contributing

Contributions welcome! See our comprehensive test suite and follow existing code patterns.

License

MIT License - Dennison Bertram (dennison@tally.xyz)


🚀 Production Ready: Successfully validated with live Ethereum mainnet transactions. Complete MCP server with 40+ tools for all your Web3 needs.

Available Tools

54 tools
approveNFTD

Inputs: contractAddress (required), tokenId (required), approved (required), provider, +2 more.

checkWalletExistsD

Inputs: provider.

contractCallD

Inputs: contractAddress (required), abi (required), method (required), args, +2 more.

erc1155_balanceOfD

Inputs: contractAddress (required), ownerAddress (required), tokenId (required), tokenAddress, +2 more.

erc1155_balanceOfBatchD

Inputs: tokenAddress (required), ownerAddresses (required), tokenIds (required), provider, +1 more.

erc1155_uriD

Inputs: tokenAddress (required), tokenId (required), provider, chainId.

erc20_balanceOfC

Get the ERC20 token balance for a specific address. Alternative naming for compatibility with MCP client tests.

Inputs: contractAddress (required), ownerAddress (required), tokenAddress, provider, +1 more.

erc20_getTokenInfoC

Get detailed information about an ERC20 token including its name, symbol, decimals, and total supply. Alternative naming for compatibility with MCP client tests.

Inputs: contractAddress (required), tokenAddress, provider, chainId.

erc721_balanceOfA

Get the number of ERC721 NFTs owned by a specific address. Alternative naming for compatibility with MCP client tests.

Inputs: tokenAddress (required), ownerAddress (required), provider, chainId.

erc721_tokenURID

Inputs: tokenAddress (required), tokenId (required), provider, chainId.

ethSignD

Inputs: data (required), provider.

formatEtherD

Inputs: wei (required).

formatUnitsD

Inputs: value (required), unit (required).

generateWalletD

Inputs: saveToEnv.

getAllNetworksA

Get information about all available blockchain networks. Use this to identify network names, chain IDs, and RPC URLs that can be used with other Ethereum tools. When using other tools with a 'provider' parameter, you can specify any of these network names.

Inputs: no named parameters.

getBlockDetailsD

Inputs: blockTag (required), provider, chainId.

getBlockNumberD

Inputs: provider, chainId.

getContractCodeD

Inputs: address (required), provider, chainId.

getEnsResolutionGuidanceC

Get guidance for resolving ENS names across networks and performing operations

Inputs: ensName (required), targetNetwork (required), operation (required).

getERC20AllowanceC

Get the amount of tokens that a spender is approved to spend on behalf of a token owner. Used to check ERC20 approval amounts.

Inputs: contractAddress (required), ownerAddress (required), spenderAddress (required), tokenAddress, +2 more.

getERC20BalanceB

Get the ERC20 token balance for a specific address. Returns the balance amount along with the token symbol for easy reading.

Inputs: contractAddress (required), ownerAddress (required), tokenAddress, provider, +1 more.

getERC20TokenInfoC

Get detailed information about an ERC20 token including its name, symbol, decimals, and total supply. Requires the contract address of the token.

Inputs: contractAddress (required), tokenAddress, provider, chainId.

getFeeDataD

Inputs: provider, chainId.

getGasPriceD

Inputs: provider, chainId.

getNetworkA

Get detailed information about a specific blockchain network. This provides the network's chain ID, native token, and RPC URL that can be used with other Ethereum tools. This network name can be used as the 'provider' parameter in other tools.

Inputs: name (required).

getNFTInfoC

Get information about an ERC721 NFT collection including its name, symbol, and total supply. Provides basic details about the NFT contract.

Inputs: contractAddress (required), provider, chainId.

getNFTMetadataD

Inputs: contractAddress (required), tokenId (required), provider, chainId.

getNFTOwnerB

Get the current owner of a specific ERC721 NFT token. Returns the Ethereum address that owns the specified token ID.

Inputs: contractAddress (required), tokenId (required), provider, chainId.

getNFTTokenURID

Inputs: contractAddress (required), tokenId (required), provider, chainId.

getSupportedNetworksA

Get a list of all supported networks and their configurations. For more detailed information about networks, use the getAllNetworks and getNetwork tools.

Inputs: no named parameters.

getTransactionDetailsD

Inputs: txHash (required), provider, chainId.

getWalletBalanceD

Inputs: address (required), provider, chainId.

getWalletTransactionCountD

Inputs: address (required), provider, chainId.

listPromptsB

List all available prompts in the system

Inputs: no named parameters.

loadWalletD

Inputs: privateKey (required), saveToEnv.

lookupAddressD

Inputs: address (required), provider, chainId.

parseEtherD

Inputs: ether (required).

prepareContractTransactionC

Prepare a smart contract interaction transaction for signing. Returns transaction data that can be signed and broadcast.

Inputs: contractAddress (required), data (required), fromAddress (required), value, +6 more.

prepareERC1155BatchTransferC

Prepare an ERC1155 batch transfer transaction for signing. Returns transaction data that can be signed and broadcast.

Inputs: contractAddress (required), fromAddress (required), toAddress (required), tokenIds (required), +9 more.

prepareERC1155SetApprovalForAllB

Prepare an ERC1155 setApprovalForAll transaction for signing. Returns transaction data that can be signed and broadcast.

Inputs: contractAddress (required), operator (required), approved (required), fromAddress (required), +7 more.

prepareERC1155TransferC

Prepare an ERC1155 token transfer transaction for signing. Returns transaction data that can be signed and broadcast.

Inputs: contractAddress (required), fromAddress (required), toAddress (required), tokenId (required), +9 more.

prepareERC20ApprovalB

Prepare an ERC20 token approval transaction for signing. Returns transaction data that can be signed and broadcast.

Inputs: contractAddress (required), spenderAddress (required), amount (required), fromAddress (required), +7 more.

prepareERC20TransferA

Prepare an ERC20 token transfer transaction for signing. Returns transaction data that can be signed and broadcast.

Inputs: contractAddress (required), recipientAddress (required), amount (required), fromAddress (required), +7 more.

prepareERC721ApprovalC

Prepare an ERC721 NFT approval transaction for signing. Returns transaction data that can be signed and broadcast.

Inputs: contractAddress (required), tokenId (required), approvedAddress (required), fromAddress (required), +6 more.

prepareERC721SetApprovalForAllB

Prepare an ERC721 NFT setApprovalForAll transaction for signing. Returns transaction data that can be signed and broadcast.

Inputs: contractAddress (required), operator (required), approved (required), fromAddress (required), +6 more.

prepareERC721TransferC

Prepare an ERC721 NFT transfer transaction for signing. Returns transaction data that can be signed and broadcast.

Inputs: contractAddress (required), tokenId (required), toAddress (required), fromAddress (required), +6 more.

prepareTransactionA

Prepare a basic ETH transfer transaction for signing. Returns transaction data that can be signed and broadcast.

Inputs: toAddress (required), value (required), fromAddress (required), provider, +5 more.

resolveNameD

Inputs: name (required), provider, chainId.

sendSignedTransactionA

Send a signed transaction to the blockchain network. Returns transaction hash and receipt.

Inputs: signedTransaction (required), provider, chainId.

sendTransactionD

Inputs: to (required), value (required), data, mockMode, +2 more.

sendTransactionWithOptionsD

Inputs: to (required), value (required), data, gasLimit, +6 more.

setNFTApprovalForAllD

Inputs: contractAddress (required), operator (required), approved (required), provider, +2 more.

signMessageD

Inputs: message (required), provider.

transferNFTD

Inputs: contractAddress (required), tokenId (required), to (required), provider, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    D1.7/5.0

    Scored across 54 tools

    Disambiguation2/5

    There is significant overlap and ambiguity among tools, such as multiple ERC20 balance tools (erc20_balanceOf, getERC20Balance) and ERC721 token URI tools (erc721_tokenURI, getNFTTokenURI), which could confuse agents. Some tools like listPrompts appear unrelated to the Ethereum wallet domain, adding to the confusion.

    Naming Consistency2/5

    Naming conventions are inconsistent, mixing snake_case (e.g., erc20_balanceOf) and camelCase (e.g., getERC20Balance) without a clear pattern. Verb styles vary (e.g., 'get' vs. 'prepare' vs. 'send'), and some tools lack descriptive names (e.g., contractCall, ethSign), making the set chaotic.

    Tool Count1/5

    With 54 tools, the count is excessive for an Ethereum wallet server, leading to bloat and potential confusion. This many tools suggests poor scoping, as many functions could be consolidated (e.g., multiple ERC20/ERC721 tools), making it overwhelming for agents to navigate.

    Completeness3/5

    The toolset covers core Ethereum operations like balances, transfers, approvals, and transaction handling across ERC20, ERC721, and ERC1155 standards, but there are gaps such as missing descriptions for many tools (e.g., approveNFT, getBlockDetails) and unclear coverage for advanced features like smart contract deployment or event listening.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      A Model Context Protocol server that enables AI agents to interact with 30+ Ethereum-compatible blockchain networks, providing services like token transfers, contract interactions, and ENS resolution through a unified interface.
      28
      94 npm
      379
      MIT
    • -
      license
      Not graded
      quality
      Not graded
      maintenance
      Comprehensive Model Context Protocol server that enables AI agents to interact with 30+ Ethereum-compatible blockchain networks, supporting token transfers, smart contract interactions, and ENS name resolution through a unified interface.
      1
      -
    • F
      license
      A
      quality
      C
      maintenance
      A server that exposes blockchain data (balances, tokens, NFTs, contract metadata) via the Model Context Protocol, enabling AI agents and tools to access and analyze blockchain information contextually.
      18
      46
      -