Get information about a specific blockchain network including chainId, blockNumber, and RPC URL
Get the native token balance of an address on a specific network (supports ENS names)
Get block information by block number
Get block information by block hash
Get the latest block information on a specific network
Get transaction details by transaction hash
Get transaction receipt by transaction hash
Transfer native tokens (ETH, MATIC, etc.) to an address
Get ERC20 token information (name, symbol, decimals, totalSupply)
Get ERC20 token balance for an address
Transfer ERC20 tokens to an address
Approve an address to spend ERC20 tokens
Get metadata for an NFT (ERC721 token)
Get the owner of an NFT (ERC721 token)
Transfer an NFT (ERC721 token) to another address
Get ERC1155 token balance for an address
Transfer ERC1155 tokens to an address
Read data from a smart contract using its ABI
Write data to a smart contract using its ABI and a private key
Check if an address is a contract or an externally owned account (EOA)
Get events emitted by a contract
Estimate gas required for a transaction
The EVM Blockchain Interaction MCP provides a comprehensive interface for AI agents to interact with Ethereum and 30+ other EVM-compatible blockchain networks. It enables reading blockchain state, interacting with smart contracts, transferring various token types (native, ERC20, ERC721, ERC1155), and querying token metadata across multiple chains. With built-in ENS name resolution, this MCP allows the use of human-readable addresses like 'vitalik.eth' instead of complex hexadecimal addresses. The unified interface makes blockchain functionality easily discoverable and accessible for AI agents, regardless of which specific EVM network they need to interact with.
To use the EVM Blockchain Interaction MCP, you'll need to add it to your MCP configuration:
"mcpServers": {
"evm-mcp-server": {
"command": "npx",
"args": ["@mcpdotdirect/evm-mcp-server"]
}
}
You can also install it globally and run it directly:
# Install globally
npm install -g @mcpdotdirect/evm-mcp-server
# Run the server
evm-mcp-server
The server uses the following default configuration:
For production use, you may want to configure custom RPC providers for better reliability and rate limits. You can do this by setting environment variables for specific networks:
ETH_RPC_URL=https://your-ethereum-rpc-url
OPTIMISM_RPC_URL=https://your-optimism-rpc-url
When using this MCP with private keys for transaction signing:
The MCP supports 30+ EVM-compatible networks including:
To check an address balance:
getAddressBalance({ address: "vitalik.eth", network: "ethereum" })
To get ERC20 token information:
getERC20TokenInfo({ tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", network: "ethereum" })
To transfer ERC20 tokens:
transferERC20Tokens({
tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
to: "recipient.eth",
amount: "100",
privateKey: "YOUR_PRIVATE_KEY",
network: "ethereum"
})
To read from a smart contract:
readContract({
contractAddress: "0x1234...",
abi: [...],
functionName: "balanceOf",
args: ["0xabcd..."],
network: "optimism"
})
To get NFT metadata:
getNFTMetadata({
contractAddress: "0x1234...",
tokenId: "42",
network: "polygon"
})