Skip to main content
Glama

MetaMask MCP

A Model Context Protocol (MCP) server that allows LLM to interact with the blockchain through MetaMask.

With these tools, your private keys remain securely stored in your crypto wallet and are never shared with the AI agent when signing messages or sending transactions.

Preview

https://github.com/user-attachments/assets/3fe8f20b-4666-4c36-8030-04d3e5d587c7

Related MCP server: EVM MCP Server

Requirements

  • Node.js (v20 or higher)

  • pnpm

Setup

  1. Clone the repository

git clone https://github.com/Xiawpohr/metamask-mcp.git
cd metamask-mcp
  1. Install dependencies

pnpm install
  1. Build the project

pnpm build

Using with Claude Desktop

Follow the guide https://modelcontextprotocol.io/quickstart/user and add the following configuration:

{
  "mcpServers": {
    "metamask": {
      "command": "node",
      "args": [
        "/PATH/TO/YOUR_PROJECT/dist/index.ts"
      ]
    }
  }
}

Tools

  • call: Executing a new message call immediately without submitting a transaction to the network.

  • get-chain-list: Get a list of all chains information.

  • get-connect-uri: Get the connect URI to connect to a MetaMask wallet.

  • show-connect-qrcode: Show the connect QR code for a given connect URI.

  • deploy-contract: Deploy a contract to the network, given bytecode, and constructor arguments.

  • disconnect: Disconnect the wallet.

  • estimate-fee-per-gas: Estimate for the fees per gas (in wei) for a transaction to be likely included in the next block.

  • estimate-gas: Estimate the gas necessary to complete a transaction without submitting it to the network.

  • get-account: Get the current account.

  • get-native-currency-balance: Get the native currency balance of an address.

  • get-token-balance: Get token balance of an address.

  • get-block-number: Fetch the number of the most recent block seen.

  • get-block: Fetch information about a block at a block number, hash or tag.

  • get-chain-id: Get the current chain id.

  • get-chains: Get the configured chains.

  • get-ens-address: Fetch the ENS address for name.

  • get-ens-name: Fetch the primary ENS name for address.

  • get-gas-price: Fetch the current price of gas (in wei).

  • get-token: Fetch the token information.

  • get-transaction-reeceipt: Fetch the Transaction Receipt given a Transaction hash.

  • get-transaction: Fetch transaction given hash or block identifiers.

  • read-contract: Call a read-only function on a contract, and returning the response.

  • send-transaction: Send transactions to networks.

  • sign-message: Sign a message.

  • switch-chain: Switch the target chain.

  • verify-message: Verify that a message was signed by the provided address.

  • wait-for-transaction-receipt: Waits for the transaction to be included on a block, and then returns the transaction receipt.

  • write-contract: Execute a write function on a contract.

Prompts

Contributing

Contributions are welcome! Please submit pull requests with any improvements or bug fixes.

License

MIT License

Available Tools

28 tools
callB

Executing a new message call immediately without submitting a transaction to the network.

Inputs: to (required), data (required), value.

deploy-contractC

Deploy a contract to the network, given bytecode, and constructor arguments.

Inputs: abi (required), bytecode (required), args.

disconnectC

Disconnect the wallet.

Inputs: no named parameters.

estimate-fee-per-gasC

Estimate for the fees per gas (in wei) for a transaction to be likely included in the next block.

Inputs: chainId, formatUnits.

estimate-gasA

Estimate the gas necessary to complete a transaction without submitting it to the network.

Inputs: to (required), data, value, maxFeePerGas, +2 more.

get-accountB

Get the current account.

Inputs: no named parameters.

get-blockC

Fetch information about a block at a block number, hash or tag.

Inputs: chainId, blockHash, blockNumber, blockTag.

get-block-numberB

Fetch the number of the most recent block seen.

Inputs: chainId.

get-chain-idB

Get the current chain id.

Inputs: no named parameters.

get-chain-listB

Get a list of all chains information.

Inputs: no named parameters.

get-chainsC

Get the configured chains.

Inputs: no named parameters.

get-connect-uriB

Get the connect URI to connect to a MetaMask wallet.

Inputs: no named parameters.

get-ens-addressB

Fetch the ENS address for name.

Inputs: name (required), chainId, blockNumber.

get-ens-nameB

Fetch the primary ENS name for address.

Inputs: address (required), chainId, blockNumber.

get-native-currency-balanceC

Get the native currency balance of an address.

Inputs: address (required).

get-tokenC

Fetch the token information.

Inputs: address (required), chainId.

get-token-balanceC

Get token balance of an address.

Inputs: address (required), token (required).

get-transactionC

Fetch transaction given hash or block identifiers.

Inputs: hash (required), chainId.

get-transaction-receiptC

Fetch the Transaction Receipt given a Transaction hash.

Inputs: hash (required), chainId.

read-contractC

Call a read-only function on a contract, and returning the response.

Inputs: abi (required), address (required), functionName (required), args, +1 more.

send-transactionC

Send transactions to networks.

Inputs: to (required), data, value, maxFeePerGas, +2 more.

show-connect-qrcodeC

Show the connect QR code for a given connect URI.

Inputs: uri (required).

sign-messageC

Sign a message.

Inputs: message (required).

switch-chainC

Switch the target chain.

Inputs: chainId (required), addEthereumChainParameter.

verify-messageA

Verify that a message was signed by the provided address.

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

wait-for-transaction-receiptC

Waits for the transaction to be included on a block, and then returns the transaction receipt.

Inputs: hash (required), confirmations, chainId.

wait-secondsB

Wait the given seconds.

Inputs: seconds (required).

write-contractC

Execute a write function on a contract.

Inputs: abi (required), address (required), functionName (required), args, +4 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 28 tools

    Disambiguation4/5

    Most tools have distinct purposes, but some overlap exists, such as 'get-block' and 'get-block-number' which could cause minor confusion. However, descriptions clarify their differences, and the majority of tools target specific actions like contract operations, account management, and transaction handling without significant ambiguity.

    Naming Consistency4/5

    Tool names follow a consistent verb-noun pattern with hyphens (e.g., 'get-account', 'send-transaction'), but there are minor deviations like 'call' and 'disconnect' that lack nouns. Overall, the naming is predictable and readable, with only a few tools breaking the pattern.

    Tool Count3/5

    With 28 tools, the count is borderline high for a wallet integration server, potentially feeling heavy. While it covers many blockchain operations, some tools like 'wait-seconds' seem peripheral, and the set might benefit from consolidation to reduce complexity without losing core functionality.

    Completeness5/5

    The tool set provides comprehensive coverage for MetaMask wallet and blockchain interactions, including account management, contract operations (deploy, read, write), transaction handling, gas estimation, and network utilities. There are no obvious gaps, and it supports full CRUD-like workflows for the domain.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      A Model Context Protocol server that enables AI agents to interact with 30+ Ethereum-compatible blockchain networks, providing services like token transfers, contract interactions, and ENS resolution through a unified interface.
      28
      96 npm
      379
      MIT
    • -
      license
      Not graded
      quality
      Not graded
      maintenance
      Comprehensive Model Context Protocol server that enables AI agents to interact with 30+ Ethereum-compatible blockchain networks, supporting token transfers, smart contract interactions, and ENS name resolution through a unified interface.
      1
      -
    • A
      license
      C
      quality
      D
      maintenance
      A suite of MCP servers that allow LLMs to interact with blockchains through MetaMask wallet without exposing private keys, facilitating secure AI-powered blockchain interactions and simplified user onboarding.
      25
      4
      ISC