MetaMask MCP
This server allows an LLM to interact with the blockchain securely through MetaMask, keeping private keys secure while performing various operations including:
Sign messages and send transactions
Execute message calls without submitting transactions
Deploy and interact with smart contracts
Retrieve blockchain data (blocks, transactions, balances)
Manage wallet connections (QR codes, disconnection)
Work with ENS names and addresses
Estimate gas fees and transaction costs
Switch between blockchain networks
Verify signed messages
Used for running the MCP server, with the application requiring Node.js v20 or higher as specified in the requirements.
Required for package management as specified in the setup instructions for installing dependencies and building the project.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MetaMask MCP what's my ETH balance?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Clone the repository
git clone https://github.com/Xiawpohr/metamask-mcp.git
cd metamask-mcpInstall dependencies
pnpm installBuild the project
pnpm buildUsing 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 toolscallB
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
Scored across 28 tools
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.
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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
MCP server for the Z1N Protocol - on-chain identity for AI agents on Polygon
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
Related MCP Servers
- AlicenseDqualityDmaintenanceA Model Context Protocol server that gives LLMs the ability to interact with Ethereum networks, manage wallets, query blockchain data, and execute smart contract operations through a standardized interface.5432 npm14MIT
- AlicenseBqualityDmaintenanceA 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.2896 npm379MIT
- -licenseNot gradedqualityNot gradedmaintenanceComprehensive 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-
- AlicenseCqualityDmaintenanceA 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.254ISC