MCP Ethers Wallet

{ "name": "ethers-wallet-server", "description": "A server that provides Ethereum wallet and blockchain interaction capabilities", "command": "node build/index.js", "tools": [ { "name": "getWalletBalance", "description": "Get the ETH balance of a wallet", "parameters": { "type": "object", "properties": { "address": { "type": "string", "description": "The Ethereum address to query" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["address"] } }, { "name": "getERC20Balance", "description": "Get the ERC20 token balance of a wallet", "parameters": { "type": "object", "properties": { "address": { "type": "string", "description": "The Ethereum address to query" }, "tokenAddress": { "type": "string", "description": "The address of the ERC20 token contract" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["address", "tokenAddress"] } }, { "name": "getWalletTransactionCount", "description": "Get the number of transactions ever sent by an address", "parameters": { "type": "object", "properties": { "address": { "type": "string", "description": "The Ethereum address to query" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["address"] } }, { "name": "getBlockNumber", "description": "Get the current block number", "parameters": { "type": "object", "properties": { "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } } } }, { "name": "getBlockDetails", "description": "Get details about a block", "parameters": { "type": "object", "properties": { "blockTag": { "type": ["string", "number"], "description": "The block number or the string 'latest'" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["blockTag"] } }, { "name": "getTransactionDetails", "description": "Get details about a transaction", "parameters": { "type": "object", "properties": { "txHash": { "type": "string", "description": "The transaction hash to lookup" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["txHash"] } }, { "name": "getGasPrice", "description": "Get the current gas price", "parameters": { "type": "object", "properties": { "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } } } }, { "name": "getFeeData", "description": "Get the current network fee data", "parameters": { "type": "object", "properties": { "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } } } }, { "name": "getContractCode", "description": "Get a contract's bytecode", "parameters": { "type": "object", "properties": { "address": { "type": "string", "description": "The contract's address" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["address"] } }, { "name": "lookupAddress", "description": "Get the ENS name for an address", "parameters": { "type": "object", "properties": { "address": { "type": "string", "description": "The Ethereum address to resolve" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["address"] } }, { "name": "resolveName", "description": "Get the address for an ENS name", "parameters": { "type": "object", "properties": { "name": { "type": "string", "description": "The ENS name to resolve" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["name"] } }, { "name": "formatEther", "description": "Convert a wei value to a decimal string in ether", "parameters": { "type": "object", "properties": { "wei": { "type": "string", "description": "The wei value to format" } }, "required": ["wei"] } }, { "name": "parseEther", "description": "Convert an ether value to wei", "parameters": { "type": "object", "properties": { "ether": { "type": "string", "description": "The ether value to parse" } }, "required": ["ether"] } }, { "name": "formatUnits", "description": "Convert a value to a decimal string with specified units", "parameters": { "type": "object", "properties": { "value": { "type": "string", "description": "The value to format" }, "unit": { "type": ["string", "number"], "description": "The number of decimals or unit name (e.g., 'gwei', 18)" } }, "required": ["value", "unit"] } }, { "name": "parseUnits", "description": "Convert a decimal string to its smallest unit representation", "parameters": { "type": "object", "properties": { "value": { "type": "string", "description": "The decimal string to parse" }, "unit": { "type": ["string", "number"], "description": "The number of decimals or unit name (e.g., 'gwei', 18)" } }, "required": ["value", "unit"] } }, { "name": "sendTransaction", "description": "Send ETH from the server's wallet to a recipient", "parameters": { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address" }, "value": { "type": "string", "description": "The amount of ETH to send" }, "data": { "type": "string", "description": "Optional. Data to include in the transaction" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["to", "value"] } }, { "name": "signMessage", "description": "Sign a message using the server's wallet", "parameters": { "type": "object", "properties": { "message": { "type": "string", "description": "The message to sign" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["message"] } }, { "name": "contractCall", "description": "Call a method on a smart contract", "parameters": { "type": "object", "properties": { "contractAddress": { "type": "string", "description": "The address of the smart contract" }, "abi": { "type": "string", "description": "The ABI of the contract as a JSON string" }, "method": { "type": "string", "description": "The method name to invoke" }, "methodArgs": { "type": "array", "description": "An array of arguments to pass to the method", "items": { "type": ["string", "number", "boolean", "object"] } }, "value": { "type": "string", "description": "Optional. The amount of ETH to send with the call" }, "provider": { "type": "string", "description": "Optional. Either a supported network name (mainnet, sepolia, goerli, arbitrum, optimism, base, polygon) or a custom RPC URL" } }, "required": ["contractAddress", "abi", "method"] } } ] }