Based on the ethers.js v5 documentation and the example MCP servers, the following methods should be implemented for our crypto wallet MCP server:
wallet_create_random
- Create a new wallet with a random private keywallet_from_private_key
- Create a wallet from a private keywallet_from_mnemonic
- Create a wallet from a mnemonic phrasewallet_from_encrypted_json
- Create a wallet by decrypting an encrypted JSON walletwallet_encrypt
- Encrypt a wallet with a password
wallet_get_address
- Get the wallet addresswallet_get_public_key
- Get the wallet public keywallet_get_private_key
- Get the wallet private key (with appropriate security warnings)wallet_get_mnemonic
- Get the wallet mnemonic phrase (if available)
wallet_get_balance
- Get the balance of the walletwallet_get_chain_id
- Get the chain ID the wallet is connected towallet_get_gas_price
- Get the current gas pricewallet_get_transaction_count
- Get the number of transactions sent from this account (nonce)wallet_call
- Call a contract method without sending a transaction
wallet_send_transaction
- Send a transactionwallet_sign_transaction
- Sign a transaction without sending itwallet_populate_transaction
- Populate a transaction with missing fields
wallet_sign_message
- Sign a messagewallet_sign_typed_data
- Sign typed data (EIP-712)wallet_verify_message
- Verify a signed messagewallet_verify_typed_data
- Verify signed typed data
provider_get_block
- Get a block by number or hashprovider_get_transaction
- Get a transaction by hashprovider_get_transaction_receipt
- Get a transaction receiptprovider_get_code
- Get the code at an addressprovider_get_storage_at
- Get the storage at a position for an addressprovider_estimate_gas
- Estimate the gas required for a transactionprovider_get_logs
- Get logs that match a filterprovider_get_ens_resolver
- Get the ENS resolver for a nameprovider_lookup_address
- Lookup the ENS name for an addressprovider_resolve_name
- Resolve an ENS name to an address
network_get_network
- Get the current network informationnetwork_get_block_number
- Get the current block numbernetwork_get_fee_data
- Get the current fee data (base fee, max priority fee, etc.)
These methods cover the core functionality needed for a comprehensive EVM crypto wallet implementation using ethers.js v5.