The registration switches turn this into two very different tools depending on how you configure it. Leave the key variables unset and you have a broad multi-chain block explorer that cannot touch anything. Fill them in and a model holds signing authority over live wallets — which is exactly why the README leads with test wallets and small balances rather than treating that as a footnote.
One MCP server covering a lot of chains, with per-chain registration switches so you only load the ones you use. Read-only queries need no credentials at all; anything that moves funds reads a private key or mnemonic from `.env`.
- Solana: SOL balances, account detail, SPL token balances, transfers, your address derived from the key, and token swaps routed through Jupiter
- EVM: native and ERC-20 balances, native and ERC-20 sends, and ERC-20 approvals across Ethereum, Base, Arbitrum, Optimism, BSC, Polygon, Avalanche and Berachain
- Cardano via Blockfrost: balances, UTxOs, transaction history, stake pools and delegation, native asset detail and epoch statistics
- THORChain: RUNE balances, pool detail, swap quotes between supported assets, and cross-chain swaps
- Bitcoin, Litecoin, Dogecoin and Bitcoin Cash: balances, transaction history, address validation, network info and fees
- XRP Ledger: balances, history, address validation, sends, token balances and trustline creation
- TON: balances, history, address validation and sends with an optional comment
- Registration switches — `ENABLE_SOLANA_TOOLS`, `ENABLE_ETHEREUM_TOOLS`, `ENABLE_CARDANO_TOOLS`, `ENABLE_BITCOIN_TOOLS` and the rest — which cut startup time and shrink the attack surface
Built from source with `npm install` and `npm run build`; the package is `web3-mcp`. Balance and history queries need nothing. Signing does: `SOLANA_PRIVATE_KEY`, `ETH_PRIVATE_KEY`, `XRP_PRIVATE_KEY` or `XRP_MNEMONIC`, `TON_MNEMONIC`, `CARDANO_MNEMONIC`, `THORCHAIN_PRIVATE_KEY`, each in `.env`. Cardano additionally needs a `BLOCKFROST_API_KEY`. Public RPC endpoints are used unless you supply your own. The project's own advice, and it is worth repeating: use test wallets holding small amounts.
One command plus a key — npx -y web3-mcp, then supply credentials
