LABSCO SUMMARY
The key is what turns a reader into a spender.
Balances and contract calls need no credentials at all, so the read-only setup is the one to start from. PRIVATE_KEY is marked optional for a reason: supplying it gives whatever is driving the server the ability to transfer tokens. If you do supply one, make it a wallet whose entire balance you would accept losing to a bad prompt.
What it is
A Web3 server for EVM-compatible chains. It reads token balances, calls smart-contract functions, and — when a private key is configured — transfers native tokens and ERC-20s.
What you get
- Token balances fetched across multiple chains
- Smart-contract function calls
- Native and ERC-20 token transfers
- Support for multiple EVM-compatible chains from the same server
Requirements
The npm package web3-mcp-server, version 0.2.0, run as npx -y web3-mcp-server. PRIVATE_KEY is optional — leave it unset and the server reads; set it and it can move funds. A Docker image exists too, but its documented configuration does not pass PRIVATE_KEY into the container, so run that way it only reads.
Setup effort
Add the configuration to your client
USE CASES
01
Checking what an address holds
Read balances across several EVM chains without connecting a wallet.
02
Querying a contract from the chat
Call a contract function and read the result, rather than opening a block explorer.
03
Sending a payment from an agent workflow
Configure a private key and transfer native or ERC-20 tokens — a deliberate opt-in, not the default.
BEFORE YOU INSTALL
What to know first
Requires
npx on PATH
Optional
Optional, for the transfer and transfer_token tools: PRIVATE_KEY (without it the server only reads)
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
MCP Clients
Claude Desktop
CLAUDE DESKTOP · JSON
{
"mcpServers": {
"web3": {
"command": "npx",
"args": [
"-y",
"web3-mcp-server"
],
"env": {
"PRIVATE_KEY": "<YOUR_PRIVATE_KEY> (optional)"
}
}
}
}