MCP Ethers Wallet
# MCP Ethers Wallet 
A Model Context Protocol server for interacting with Ethereum wallets and networks using Ethers.js v6. This server provides LLMs with a standardized interface to interact with Ethereum networks, smart contracts, and wallets.
## Overview
The MCP Ethers Wallet server implements the [Model Context Protocol](https://modelcontextprotocol.io) specification, providing LLMs with tools to:
- Query blockchain data across multiple networks
- Interact with smart contracts
- Manage wallet operations
- Resolve ENS names
- Handle transactions
- Estimate gas costs
## Installation
```bash
npm install mcp-ethers-wallet
```
## Quick Start
### Starting the Server
```typescript
import { startServer } from 'mcp-ethers-wallet';
startServer().catch((error) => {
console.error('Failed to start server:', error);
process.exit(1);
});
```
### Using with Claude Desktop
1. Install Claude Desktop
2. Add a new MCP server with the following configuration:
```json
"ethers": {
"command": "node",
"args": [
"/path-to-mcp-ethers-wallet/build/src/index.js"
],
"env": {
"ALCHEMY_API_KEY": "<<your alchemy api key>>"
}
}
```
3. The tools will now be available in your Claude conversations
### Testing with MCP Inspector
1. Install the MCP Inspector:
```bash
npm install -g @modelcontextprotocol/inspector
```
2. Start the server:
```bash
npm start
```
3. In another terminal, run the inspector:
```bash
mcp-inspector
```
4. Open http://localhost:5173 in your browser to interact with the tools
## Available Tools
### Network Information
- `getSupportedNetworks`: Get a list of all supported networks and their configurations
- `getBlockNumber`: Get the current block number for a network
- `getBlockDetails`: Get detailed information about a specific block
- `getGasPrice`: Get the current gas price
- `getFeeData`: Get detailed fee data including base fee and priority fee
### Wallet Operations
- `checkWalletExists`: Check if a wallet is configured (without exposing private keys)
- `getWalletBalance`: Get the native token balance of a wallet
- `getWalletTransactionCount`: Get the number of transactions sent from a wallet
- `getERC20Balance`: Get the balance of an ERC20 token for a wallet
### Transaction Management
- `getTransactionDetails`: Get detailed information about a transaction
- `sendTransaction`: Send a native token transaction
- `sendTransactionWithOptions`: Send a transaction with custom options (gas, nonce, etc)
- `getTransactionsByBlock`: Get all transactions in a specific block
### Smart Contract Interaction
- `contractCall`: Execute a contract write method
- `contractCallView`: Execute a contract read method
- `getContractCode`: Get the bytecode of a deployed contract
### ENS Operations
- `lookupAddress`: Resolve an ENS name to an address
- `resolveName`: Resolve an address to an ENS name
## Network Support
The server supports multiple networks including:
- Ethereum Mainnet
- Polygon PoS
- Arbitrum
- Optimism
- Base
- And more...
Use the `getSupportedNetworks` tool to get a complete list of supported networks.
## Configuration
The server can be configured using environment variables:
- `ALCHEMY_API_KEY`: Your Alchemy API key for network access
- `PRIVATE_KEY`: Private key for transaction signing (optional)
- `DEFAULT_NETWORK`: Default network to use (defaults to "mainnet")
## Error Handling
The server provides detailed error messages for common issues:
- Invalid network names or RPC URLs
- Chain ID mismatches
- Contract interaction failures
- Transaction errors
- Network connectivity issues
## Development
```bash
# Install dependencies
npm install
# Run tests
npm test
# Start in development mode
npm run dev
# Build
npm run build
```
## Contributing
Issues and pull requests are welcome on GitHub.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Author
Dennison Bertram (dennison@tally.xyz)