Skip to main content
Glama

MCP Crypto Wallet EVM

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.

Overview

The MCP server exposes the following tools to Claude:

Wallet Creation and Management

  • 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 Properties

  • 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)

Blockchain Methods

  • 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

Transaction Methods

  • wallet_send_transaction: Send a transaction

  • wallet_sign_transaction: Sign a transaction without sending it

  • wallet_populate_transaction: Populate a transaction with missing fields

Signing Methods

  • 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 Methods

  • 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 Methods

  • 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.)

Related MCP server: Base MCP Server

Prerequisites

  • Node.js (v16 or higher)

  • Claude Desktop application

Installation

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.

Option 2: Manual Installation

  1. Clone this repository:

    git clone https://github.com/dcSpark/mcp-cryptowallet-evm.git
    cd mcp-cryptowallet-evm
  2. Install dependencies:

    npm ci
  3. Build the project:

    npm run build

Configuration

Environment Variables

The MCP server supports the following environment variables:

  • PRIVATE_KEY: Optional private key to use for wallet operations when no wallet is explicitly provided

Configure Claude Desktop

To configure Claude Desktop to use this MCP server:

  1. Open Claude Desktop

  2. 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

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

Running Locally

node build/index.js

Usage

Once configured, restart Claude Desktop. Claude will now have access to the Ethereum and EVM-compatible blockchain tools. You can ask Claude to:

  1. Create a new wallet:

    Can you create a new Ethereum wallet for me?
  2. Check a wallet balance:

    What's the balance of the Ethereum wallet address 0x742d35Cc6634C0532925a3b844Bc454e4438f44e?
  3. 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.

Development

Adding New Tools

To add new tools to the MCP server:

  1. Define the tool in src/tools.ts

  2. Create a handler function in the appropriate handler file

  3. Add the handler to the handlers object in src/tools.ts

Building

npm run build

License

MIT

Available Tools

35 tools
network_get_block_numberB

Get the current block number

Inputs: no named parameters.

network_get_fee_dataB

Get the current fee data (base fee, max priority fee, etc.)

Inputs: no named parameters.

network_get_networkC

Get the current network information

Inputs: no named parameters.

provider_estimate_gasC

Estimate the gas required for a transaction

Inputs: transaction (required).

provider_get_blockC

Get a block by number or hash

Inputs: blockHashOrBlockTag (required), includeTransactions.

provider_get_codeC

Get the code at an address

Inputs: address (required), blockTag.

provider_get_ens_resolverC

Get the ENS resolver for a name

Inputs: name (required).

provider_get_logsC

Get logs that match a filter

Inputs: filter (required).

provider_get_storage_atC

Get the storage at a position for an address

Inputs: address (required), position (required), blockTag.

provider_get_transactionC

Get a transaction by hash

Inputs: transactionHash (required).

provider_get_transaction_receiptC

Get a transaction receipt

Inputs: transactionHash (required).

provider_lookup_addressC

Lookup the ENS name for an address

Inputs: address (required).

provider_resolve_nameC

Resolve an ENS name to an address

Inputs: name (required).

wallet_callC

Call a contract method without sending a transaction

Inputs: transaction (required), blockTag, wallet.

wallet_create_mnemonic_phraseC

Create a mnemonic phrase

Inputs: length (required), locale.

wallet_create_randomC

Create a new wallet with a random private key

Inputs: locale, password, path.

wallet_encryptC

Encrypt a wallet with a password

Inputs: password (required), wallet (required), options.

wallet_from_encrypted_jsonC

Create a wallet by decrypting an encrypted JSON wallet

Inputs: json (required), password (required).

wallet_from_mnemonicC

Create a wallet from a mnemonic phrase

Inputs: mnemonic (required), locale, path.

wallet_from_private_keyC

Create a wallet from a private key

Inputs: privateKey (required).

wallet_get_addressC

Get the wallet address

Inputs: wallet.

wallet_get_balanceC

Get the balance of the wallet

Inputs: blockTag, wallet.

wallet_get_chain_idB

Get the chain ID the wallet is connected to

Inputs: wallet.

wallet_get_gas_priceC

Get the current gas price

Inputs: wallet.

wallet_get_private_keyC

Get the wallet private key (with appropriate security warnings)

Inputs: password, wallet.

wallet_get_public_keyC

Get the wallet public key

Inputs: wallet.

wallet_get_transaction_countC

Get the number of transactions sent from this account (nonce)

Inputs: blockTag, wallet.

wallet_populate_transactionC

Populate a transaction with missing fields

Inputs: transaction (required), wallet.

wallet_provider_setB

Set the provider URL. By default, the provider URL is set to the ETH mainnet or the URL set in the PROVIDER_URL environment variable.

Inputs: providerURL (required).

wallet_send_transactionC

Send a transaction

Inputs: transaction (required), wallet.

wallet_sign_messageC

Sign a message

Inputs: message (required), wallet.

wallet_sign_transactionB

Sign a transaction without sending it

Inputs: transaction (required), wallet.

wallet_sign_typed_dataC

Sign typed data (EIP-712)

Inputs: domain (required), types (required), value (required), wallet.

wallet_verify_messageC

Verify a signed message

Inputs: address (required), message (required), signature (required).

wallet_verify_typed_dataC

Verify signed typed data

Inputs: address (required), domain (required), signature (required), types (required), +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3/5.0

    Scored across 35 tools

    Disambiguation4/5

    Most tools have distinct purposes with clear resource-action pairs (e.g., network_get_block_number vs. wallet_get_balance), but some overlap exists in provider and wallet operations that could cause confusion, such as provider_get_transaction and wallet_get_transaction_count both dealing with transaction data. Descriptions help clarify, but the boundaries between network, provider, and wallet categories are not always sharp.

    Naming Consistency5/5

    Tool names follow a highly consistent verb_noun pattern with clear prefixes (network_, provider_, wallet_) that group related functions. All names use snake_case uniformly, making them predictable and easy to parse. This consistency aids in understanding the tool set's structure and purpose.

    Tool Count3/5

    With 35 tools, the count is borderline high for a crypto wallet server, potentially overwhelming for agents. While the domain (EVM wallet operations) is broad, covering network, provider, and wallet functions, the number feels heavy and could be streamlined. It's not extreme, but it approaches the upper limit of reasonable scope.

    Completeness5/5

    The tool set provides comprehensive coverage for EVM wallet operations, including network interactions, provider queries, wallet creation/management, transaction handling, and signing/verification. All essential CRUD and lifecycle actions are present, with no obvious gaps that would hinder agent workflows in this domain.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers