# Etherscan MCP server

> Read Etherscan blockchain data across 60+ chains: balances, transactions, token transfers, contracts, logs and gas prices.

- Listing: https://mcp.tc/i/etherscan
- Connect: use the server's own URL `https://mcp-keyless.etherscan.io/mcp` (no sign-in); clients connect to it directly. The listing link is a page, not an MCP endpoint.
- Type: remote (Streamable HTTP)
- Auth: none
- Category: [Finance & Payments](https://mcp.tc/c/finance-payments)
- Vendor: Etherscan
- Homepage: <https://docs.etherscan.io/build-with-ai/mcp>

## About

Connects to the Etherscan V2 API for read-only onchain data. You can check native balances, list normal and internal transactions, fetch token transfers (ERC-20, ERC-721, ERC-1155), read verified contract source and ABI, search event logs, check transaction status and get gas price recommendations. A chainid parameter selects the chain.

The keyless endpoint at https://mcp-keyless.etherscan.io/mcp is hosted over Streamable HTTP and needs no sign-in or API key, with limited tools and its own rate limits. A second endpoint, https://mcp.etherscan.io/mcp, accepts your Etherscan API key in an Authorization header. The tools cannot sign or broadcast transactions or change state.

## What it can do

- Check native coin balances for an address
- List normal and internal transactions
- Get ERC-20, ERC-721 and ERC-1155 token transfers
- Read verified contract source code and ABI
- Search event logs by address and topics
- Look up transaction status, receipt and details
- Get gas price recommendations
- Find the block closest to a timestamp

## Tools (16)

- `get_native_balance`: Get the native coin balance of an address, in wei. (read-only)
- `get_transactions`: List normal (external) transactions for an address. (read-only)
- `get_internal_transactions`: List internal transactions by address or parent transaction hash. (read-only)
- `get_token_transfers`: Get ERC-20, ERC-721 or ERC-1155 transfer events for an address. (read-only)
- `get_contract_source`: Get verified source code and metadata for a contract. (read-only)
- `get_contract_abi`: Get the verified ABI (JSON) for a contract. (read-only)
- `get_contract_creation`: Get creator address and creation transaction for up to 5 contracts. (read-only)
- `get_transaction_receipt_status`: Get receipt status of a transaction (1 success, 0 failed). (read-only)
- `get_transaction_status`: Get contract execution status of a transaction. (read-only)
- `get_gas_oracle`: Get safe, propose and fast gas price recommendations. (read-only)
- `get_block_by_timestamp`: Get the block number closest to a Unix timestamp. (read-only)
- `get_supported_chains`: List chains and chain IDs supported by the Etherscan V2 API. (read-only)
- `get_logs`: Search event logs by address and topics over a block range. (read-only)
- `get_transaction_by_hash`: Get the full transaction object for a hash. (read-only)
- `get_transaction_receipt`: Get a transaction receipt with status, gas used and logs. (read-only)
- `render_etherscan_widget`: Show returned Etherscan facts in an explorer-style card. (read-only)

## Example prompts

- "What is the ETH balance of vitalik.eth's address on Ethereum?"
- "Summarize this transaction: 0xa44757750f25d11d8d22434a68c39c6962a55ddf369ce202624950ada3080acf"
- "Show the latest ERC-20 transfers for this address on Arbitrum."
- "What are the current gas price recommendations on Ethereum?"

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport http etherscan https://mcp-keyless.etherscan.io/mcp
```

2. Start Claude Code and type `/mcp`. **etherscan** should show as connected.

Add `--scope user` to make it available in every project, not just this one.

### Claude Desktop

1. Open **Settings → Connectors** and click **Add custom connector**.

2. Name it **Etherscan** and paste this URL:

```url
https://mcp-keyless.etherscan.io/mcp
```

3. Click **Add**. Its tools appear in the chat’s tools menu.

Claude Desktop’s JSON config file only starts local servers. Remote servers go through Connectors, and connectors you add on claude.ai show up here too.

### claude.ai

1. Open the connector form on claude.ai. This button fills in the name and URL for you:

[Add to claude.ai](<https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Etherscan&connectorUrl=https%3A%2F%2Fmcp-keyless.etherscan.io%2Fmcp>) (opens connector settings)

2. Check that the URL reads `https://mcp-keyless.etherscan.io/mcp` and click **Add**.

3. Turn it on in a chat from the tools menu.

Free plans allow one custom connector. On Team and Enterprise plans an owner adds it under **Organization settings → Connectors**.

### ChatGPT

1. On chatgpt.com, open **Settings → Security and login** and turn on **Developer mode**.

2. Go to `chatgpt.com/plugins` and click **+** to create an app for a remote MCP server.

3. Paste `https://mcp-keyless.etherscan.io/mcp` as the server URL and choose **No authentication**.

Developer mode is available on the web for Plus, Pro, Business, Enterprise and Education accounts.

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=etherscan&config=eyJ1cmwiOiJodHRwczovL21jcC1rZXlsZXNzLmV0aGVyc2Nhbi5pby9tY3AifQ%3D%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "etherscan": {
      "url": "https://mcp-keyless.etherscan.io/mcp"
    }
  }
}
```

### VS Code

[Install in VS Code](<https://vscode.dev/redirect/mcp/install?name=etherscan&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp-keyless.etherscan.io%2Fmcp%22%7D>) (opens VS Code)

Or from a terminal:

```bash
code --add-mcp '{"name":"etherscan","type":"http","url":"https://mcp-keyless.etherscan.io/mcp"}'
```

Or commit it to the repo in `.vscode/mcp.json`:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "etherscan": {
      "type": "http",
      "url": "https://mcp-keyless.etherscan.io/mcp"
    }
  }
}
```

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "etherscan": {
      "serverUrl": "https://mcp-keyless.etherscan.io/mcp"
    }
  }
}
```

2. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf. It reads `serverUrl` (or `url`) for remote servers.

### Codex

```bash
codex mcp add etherscan --url https://mcp-keyless.etherscan.io/mcp
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.etherscan]
url = "https://mcp-keyless.etherscan.io/mcp"
```

### Gemini CLI

```bash
gemini mcp add --transport http etherscan https://mcp-keyless.etherscan.io/mcp
```

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients accept this shape. Some name the URL field differently: `serverUrl` in Devin Desktop, `httpUrl` in Gemini CLI’s settings file.

```json
{
  "mcpServers": {
    "etherscan": {
      "type": "http",
      "url": "https://mcp-keyless.etherscan.io/mcp"
    }
  }
}
```

Zed puts servers under `context_servers` in its settings. Cline needs `"type": "streamableHttp"`, or it assumes SSE.

Client only starts local servers? Bridge it with `npx -y mcp-remote https://mcp-keyless.etherscan.io/mcp`.

## Details

- Server version: 2.4.0
- MCP protocol version: 2025-11-25
- Last checked: 2026-10-03 (reachable)
- Listed: 2026-10-03
- Updated: 2026-10-04

---
Source: https://mcp.tc/i/etherscan (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
