ethereum-wallet-mcp
# Ethereum Wallet MCP Server
A self-contained [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that exposes Ethereum wallet tools to AI agents over stdio.
This repository contains the complete MCP server implementation (source code + Dockerfile). No database, no external RPC provider, and no secrets are required to build and run it.
## Tools
| Tool | Description |
|------|-------------|
| `create_wallet` | Create a new Ethereum wallet |
| `list_wallets` | List all wallets |
| `get_balance` | Get the ETH balance of a wallet |
| `validate_address` | Validate an Ethereum address (full EIP-55 checksum verification) |
| `gas_price` | Get the current gas price in Gwei |
| `list_transactions` | List transactions (paged) |
| `get_transaction` | Get details of a single transaction |
## Build & run with Docker
```bash
docker build -t ethereum-wallet-mcp .
docker run -i ethereum-wallet-mcp
```
## Run locally
```bash
dotnet run
```
## Connect (e.g. Claude Desktop / Cursor)
```json
{
"mcpServers": {
"ethereum-wallet-mcp": {
"command": "docker",
"args": ["run", "-i", "ethereum-wallet-mcp"]
}
}
}
```
## Stack
- .NET 9
- [ModelContextProtocol](https://www.nuget.org/packages/ModelContextProtocol) (stdio transport)TDQS
Scored across 7 tools
Each tool targets a distinct resource and action: balance reads, wallet listing/creation, transaction listing vs. single-transaction detail, plus two clearly public utility calls (gas price, address validation). There is no meaningful overlap between any pair, and the list/get distinction on transactions is explicit.
Five of seven tools follow a clean verb_noun pattern (get_balance, list_wallets, list_transactions, get_transaction, create_wallet, validate_address). The only deviation is gas_price, which uses a noun phrase rather than a verb, but it is still readable and unambiguous.
Seven tools is a tight, well-scoped surface for an Ethereum wallet server with no filler. Every tool maps to a distinct capability an agent would plausibly need.
Read paths and wallet creation are covered, but there is no send/transfer tool, no single-wallet detail or rename/delete operation, and no transaction submission or signing. An agent can inspect a wallet but cannot act on it, which is a notable gap for a wallet server.