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"]
}
}
]
}