MCP Ethers Wallet
The MCP Ethers Wallet server provides a standardized interface for interacting with Ethereum wallets, networks, and smart contracts using Ethers.js v6.
Query Blockchain Data: Get network information, block details, gas prices, and fee data
Wallet Operations: Manage wallets, check balances (ETH and ERC20), retrieve transaction counts
Transaction Management: Send transactions, get transaction details, and manage transactions within blocks
Smart Contract Interaction: Call contract methods (read/write), get bytecode, query events and logs
ENS Operations: Resolve ENS names and addresses
Unit Conversion: Convert between wei and ether, format/parse units
Advanced Features: Sign messages, send pre-signed raw transactions, customize gas settings
Cross-Network Support: Works with multiple Ethereum-compatible networks
Provides API key-based access to Ethereum networks, serving as a node provider for blockchain interactions.
Enables comprehensive interaction with Ethereum networks, including querying blockchain data, managing wallets, sending transactions, and interacting with smart contracts.
Utilizes Ethers.js v6 as the core library for blockchain interactions, providing standardized interfaces for wallet management, smart contract interaction, and transaction handling.
Supports interaction with the Optimism network, allowing for blockchain queries, wallet operations, and transaction management on this Ethereum L2 solution.
Enables interaction with Polygon PoS network, providing tools for blockchain queries, wallet operations, and transaction management on this Ethereum scaling solution.
Click on "Deploy 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., "@MCP Ethers Wallet get Vitalik's ETH balance on mainnet"
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.
MCP Ethers Server
⚡ Claude Code Setup:
claude mcp add ethers-wallet -- node /path/to/ethers-server/build/src/index.jsA 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 buildEnvironment Variables
Create .env file:
ALCHEMY_API_KEY=your_alchemy_key
INFURA_API_KEY=your_infura_key
DEFAULT_NETWORK=mainnetAdvanced Setup
Local Project
claude mcp add --scope local ethers-wallet --env ALCHEMY_API_KEY=your_key -- node /path/to/build/src/index.jsShared Team Config
claude mcp add --scope project ethers-wallet -- node /path/to/build/src/index.jsSecurity
🔐 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 toolsapproveNFTD
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
Scored across 54 tools
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 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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
MCP server for the Z1N Protocol - on-chain identity for AI agents on Polygon
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
Related MCP Servers
- AlicenseBqualityDmaintenanceA 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.2894 npm379MIT
- -licenseNot gradedqualityNot gradedmaintenanceComprehensive 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-
- AlicenseBqualityDmaintenanceA Model Context Protocol server that allows LLMs to interact with blockchain through MetaMask, keeping private keys securely in your crypto wallet while enabling transactions and blockchain operations.2818 npm12MIT

Blockscout MCP Serverofficial
FlicenseAqualityCmaintenanceA 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.1846-