This repository contains a Model Context Protocol (MCP) server that provides Claude with access to Ethereum and EVM-compatible blockchain operations via ethers.js v5. The server enables Claude to perform operations like creating wallets, checking balances, sending transactions, and interacting with smart contracts on EVM-compatible blockchains.
The MCP server exposes the following tools to Claude:
-
wallet_create_random
: Create a new wallet with a random private key -
wallet_from_private_key
: Create a wallet from a private key -
wallet_from_mnemonic
: Create a wallet from a mnemonic phrase -
wallet_from_encrypted_json
: Create a wallet by decrypting an encrypted JSON wallet -
wallet_encrypt
: Encrypt a wallet with a password
-
wallet_get_address
: Get the wallet address -
wallet_get_public_key
: Get the wallet public key -
wallet_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 wallet -
wallet_get_chain_id
: Get the chain ID the wallet is connected to -
wallet_get_gas_price
: Get the current gas price -
wallet_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 transaction -
wallet_sign_transaction
: Sign a transaction without sending it -
wallet_populate_transaction
: Populate a transaction with missing fields
-
wallet_sign_message
: Sign a message -
wallet_sign_typed_data
: Sign typed data (EIP-712) -
wallet_verify_message
: Verify a signed message -
wallet_verify_typed_data
: Verify signed typed data
-
provider_get_block
: Get a block by number or hash -
provider_get_transaction
: Get a transaction by hash -
provider_get_transaction_receipt
: Get a transaction receipt -
provider_get_code
: Get the code at an address -
provider_get_storage_at
: Get the storage at a position for an address -
provider_estimate_gas
: Estimate the gas required for a transaction -
provider_get_logs
: Get logs that match a filter -
provider_get_ens_resolver
: Get the ENS resolver for a name -
provider_lookup_address
: Lookup the ENS name for an address -
provider_resolve_name
: Resolve an ENS name to an address
-
network_get_network
: Get the current network information -
network_get_block_number
: Get the current block number -
network_get_fee_data
: Get the current fee data (base fee, max priority fee, etc.)
- Node.js (v16 or higher)
- Claude Desktop application
You can run the MCP server directly without installation using npx:
npx @mcp-dockmaster/mcp-cryptowallet-evm
This will download and execute the server directly from npm.
-
Clone this repository:
git clone https://github.com/dcSpark/mcp-cryptowallet-evm.git cd mcp-cryptowallet-evm
-
Install dependencies:
npm ci
-
Build the project:
npm run build
The MCP server supports the following environment variables:
-
PRIVATE_KEY
: Optional private key to use for wallet operations when no wallet is explicitly provided
To configure Claude Desktop to use this MCP server:
-
Open Claude Desktop
-
Navigate to the Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
Add the MCP server configuration:
{
"mcpServers": {
"mcp-cryptowallet-evm": {
"command": "npx",
"args": [
"@mcp-dockmaster/mcp-cryptowallet-evm"
]
}
}
}
Alternatively, if you installed the package locally:
{
"mcpServers": {
"mcp-cryptowallet-evm": {
"command": "node",
"args": [
"/path/to/your/mcp-cryptowallet-evm/build/index.js"
]
}
}
}
node build/index.js
Once configured, restart Claude Desktop. Claude will now have access to the Ethereum and EVM-compatible blockchain tools. You can ask Claude to:
-
Create a new wallet:
Can you create a new Ethereum wallet for me?
-
Check a wallet balance:
What's the balance of the Ethereum wallet address 0x742d35Cc6634C0532925a3b844Bc454e4438f44e?
-
Send a transaction:
Can you help me send 0.1 ETH to 0x742d35Cc6634C0532925a3b844Bc454e4438f44e?
Claude will use the MCP server to interact with the Ethereum blockchain directly.
To add new tools to the MCP server:
- Define the tool in
src/tools.ts
- Create a handler function in the appropriate handler file
- Add the handler to the
handlers
object insrc/tools.ts
npm run build
MIT