MCP Etherscan Server
The MCP Etherscan Server provides tools for interacting with Ethereum blockchain data via Etherscan's API using the Model Context Protocol. You can:
Check ETH balance for any Ethereum address
View transaction history with detailed information
Track ERC20 token transfers with token details
Fetch smart contract ABIs
Monitor current gas prices (Safe Low, Standard, Fast)
Resolve Ethereum addresses to associated ENS names
Uses environment variables for configuration, specifically for storing and accessing the Etherscan API key.
Provides tools for accessing Ethereum blockchain data through Etherscan's API, including checking ETH balances, viewing transaction history, tracking ERC20 transfers, fetching contract ABIs, monitoring gas prices, and resolving ENS names.
Provides a Node.js-based MCP server implementation for accessing Ethereum blockchain data.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Etherscan Servercheck the ETH balance for vitalik.eth"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Etherscan Server
An MCP (Model Context Protocol) server that provides Ethereum blockchain data tools via Etherscan's API. Features include checking ETH balances, viewing transaction history, tracking ERC20 transfers, fetching contract ABIs, monitoring gas prices, and resolving ENS names.
Features
Balance Checking: Get ETH balance for any Ethereum address
Transaction History: View recent transactions with detailed information
Token Transfers: Track ERC20 token transfers with token details
Contract ABI: Fetch smart contract ABIs for development
Gas Prices: Monitor current gas prices (Safe Low, Standard, Fast)
ENS Resolution: Resolve Ethereum addresses to ENS names
Related MCP server: MCP Etherscan Server
Prerequisites
Node.js >= 18
An Etherscan API key (get one at https://etherscan.io/apis)
Installation
Clone the repository:
git clone [your-repo-url]
cd mcp-etherscan-serverInstall dependencies:
npm installCreate a
.envfile in the root directory:
ETHERSCAN_API_KEY=your_api_key_hereBuild the project:
npm run buildRunning the Server
Start the server:
npm startThe server will run on stdio, making it compatible with MCP clients like Claude Desktop.
How It Works
This server implements the Model Context Protocol (MCP) to provide tools for interacting with Ethereum blockchain data through Etherscan's API. Each tool is exposed as an MCP endpoint that can be called by compatible clients.
Available Tools
check-balanceInput: Ethereum address
Output: ETH balance in both Wei and ETH
get-transactionsInput: Ethereum address, optional limit
Output: Recent transactions with timestamps, values, and addresses
get-token-transfersInput: Ethereum address, optional limit
Output: Recent ERC20 token transfers with token details
get-contract-abiInput: Contract address
Output: Contract ABI in JSON format
get-gas-pricesInput: None
Output: Current gas prices in Gwei
get-ens-nameInput: Ethereum address
Output: Associated ENS name if available
Using with Claude Desktop
To add this server to Claude Desktop:
Start the server using
npm startIn Claude Desktop:
Go to Settings
Navigate to the MCP Servers section
Click "Add Server"
Enter the following configuration:
{ "name": "Etherscan Tools", "transport": "stdio", "command": "node /path/to/mcp-etherscan-server/build/index.js" }Save the configuration
The Etherscan tools will now be available in your Claude conversations
Example Usage in Claude
You can use commands like:
Check the balance of 0x742d35Cc6634C0532925a3b844Bc454e4438f44eor
Show me recent transactions for vitalik.ethDevelopment
To add new features or modify existing ones:
The main server logic is in
src/server.tsEtherscan API interactions are handled in
src/services/etherscanService.tsBuild after changes:
npm run build
License
MIT License - See LICENSE file for details
Available Tools
6 toolscheck-balanceB
Check the ETH balance of an Ethereum address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Ethereum address (0x format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool's function but omits critical details such as whether it's a read-only operation, potential rate limits, network dependencies, or error conditions. This leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It is appropriately sized for a simple tool with one parameter, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It fails to address behavioral aspects like safety, performance, or output format, which are crucial for an agent to use the tool effectively in a blockchain context with potential complexities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'address' fully documented in the input schema. The description adds no additional parameter semantics beyond what the schema provides, such as explaining the ETH balance unit or address validation nuances, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Check') and resource ('ETH balance of an Ethereum address'), distinguishing it from sibling tools like get-contract-abi or get-transactions. It precisely identifies what the tool does without being vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get-token-transfers or get-transactions. It lacks any context about use cases, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-contract-abiC
Get the ABI for a smart contract
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Contract address (0x format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves data ('Get'), implying a read-only operation, but does not disclose any behavioral traits such as error handling, rate limits, authentication needs, or what happens if the address is invalid. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not explain what an ABI is, the expected return format, or any behavioral context (e.g., network dependencies, error cases). For a tool with no structured data beyond the input schema, this leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, fully documenting the single parameter 'address' with its format and pattern. The description does not add any meaning beyond what the schema provides (e.g., it does not explain what an ABI is or provide context for the address). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('ABI for a smart contract'), making it immediately understandable. However, it does not differentiate this tool from its siblings (e.g., get-transactions, get-token-transfers), which are also retrieval operations, so it lacks sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context (e.g., blockchain network), or exclusions, leaving the agent to infer usage based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-ens-nameC
Get the ENS name for an Ethereum address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Ethereum address (0x format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'gets' an ENS name, implying a read-only operation, but does not specify behavioral traits like error handling (e.g., if no ENS name exists), rate limits, authentication requirements, or response format. This leaves significant gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core functionality, making it easy to understand quickly, and every part of the sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that performs a lookup operation. It does not explain what is returned (e.g., the ENS name string or null if not found), error conditions, or any dependencies, leaving the agent with insufficient context to use the tool effectively beyond basic parameter input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'address' parameter clearly documented. The description adds no additional meaning beyond what the schema provides, such as explaining ENS name resolution specifics or edge cases. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('ENS name'), and identifies the target ('Ethereum address'). However, it does not explicitly differentiate from sibling tools like 'get-contract-abi' or 'get-transactions', which might also involve Ethereum addresses but serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or specific contexts for usage, such as when an ENS name lookup is needed compared to other address-related operations offered by sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-gas-pricesB
Get current gas prices in Gwei
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool gets 'current' prices, implying real-time data, but doesn't specify data sources, update frequency, rate limits, or error handling. For a tool with zero annotation coverage, this leaves significant gaps in understanding its operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It front-loads the essential information ('Get current gas prices in Gwei'), making it immediately actionable. Every part of the sentence earns its place by specifying the action, timeliness, resource, and unit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but has clear gaps. It covers the basic purpose but lacks details on behavioral traits (e.g., data freshness, network context) and usage guidelines. For a tool that likely interacts with blockchain data, more context on reliability or scope would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's output. A baseline of 4 is applied for zero-parameter tools, as it avoids unnecessary complexity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('current gas prices in Gwei'), making the tool's purpose immediately understandable. It distinguishes from siblings by focusing on gas prices rather than balances, ABIs, ENS names, or transaction data. However, it doesn't specify the scope (e.g., network, location) or differentiate from potential similar tools not in the sibling list, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context (e.g., for transaction planning), or exclusions (e.g., historical prices). While the tool's name and purpose imply usage for real-time gas price queries, this is only implied, not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-token-transfersC
Get ERC20 token transfers for an Ethereum address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Ethereum address (0x format) | |
| limit | No | Number of transfers to return (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but lacks critical details: it doesn't specify whether this queries a blockchain or API, mention rate limits, authentication needs, pagination behavior, or what the return format looks like (e.g., JSON array of transfers). This is inadequate for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of blockchain data retrieval and the absence of both annotations and an output schema, the description is insufficient. It doesn't explain what data is returned (e.g., transfer details like amounts, timestamps, or transaction hashes), error conditions, or behavioral constraints, leaving significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('address' and 'limit') with formats and constraints. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline score of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('ERC20 token transfers for an Ethereum address'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get-transactions' or 'check-balance', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get-transactions' (which might return different data) or 'check-balance' (which provides account balances rather than transfer history), leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-transactionsC
Get recent transactions for an Ethereum address
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Ethereum address (0x format) | |
| limit | No | Number of transactions to return (max 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'recent transactions' but doesn't specify time frames, pagination, rate limits, authentication needs, or error handling. For a read operation with potential complexity, this leaves significant gaps in understanding how the tool behaves beyond basic input-output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a simple tool and gets straight to the point, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a tool that fetches transactions. It lacks details on return format (e.g., list structure, fields included), error cases, or behavioral traits like rate limits. For a read operation with potential data volume, more context is needed to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('address' and 'limit') with formats and constraints. The description adds no additional parameter semantics beyond implying 'recent' for transactions, which is vague and not parameter-specific. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('recent transactions for an Ethereum address'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like 'get-token-transfers', which might be a similar query, but it's specific enough to understand the core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get-token-transfers' or 'check-balance'. It states what it does but offers no context about appropriate scenarios, prerequisites, or exclusions, leaving the agent to infer usage based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v1.0.0- First observed
check-balance - First observed
get-contract-abi - First observed
get-ens-name - First observed
get-gas-prices - First observed
get-token-transfers - First observed
get-transactions
TDQS
Each tool has a clearly distinct purpose targeting different Ethereum-related queries: balance checks, contract ABI retrieval, ENS name lookup, gas price monitoring, token transfer history, and transaction history. There is no overlap or ambiguity between these functions, making tool selection straightforward for an agent.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., check-balance, get-contract-abi, get-ens-name). This uniformity enhances readability and predictability, allowing agents to easily understand and navigate the tool set without confusion from mixed naming conventions.
With 6 tools, the server is well-scoped for an Etherscan-like interface, covering essential Ethereum operations without being overwhelming or sparse. Each tool serves a distinct and useful function, making the count appropriate for the domain and typical agent workflows.
The tool set covers core Ethereum functionalities such as address queries, contract interactions, and network data, but has minor gaps. For example, it lacks tools for checking internal transactions, verifying contract source code, or fetching block information, which could limit some advanced use cases, though agents can still perform most common tasks effectively.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Etherscan Api - 71 tools for data, metrics, and on-chain analytics
Read-only Etherscan V2 blockchain data: balances, transactions, transfers, tokens, contracts, logs.
Explore blockchain data across addresses, tokens, blocks, and transactions. Investigate any transa…
Multi-chain wallet intelligence: balances, transactions, ENS, OFAC screening across 7 chains.
Related MCP Servers
- AlicenseAqualityDmaintenanceFacilitates interaction with Ethereum blockchain data via Etherscan's API, providing real-time access to balances, transactions, token transfers, contract ABIs, gas prices, and ENS name resolutions.62630MIT
- AlicenseAqualityDmaintenanceProvides Ethereum blockchain data tools via Etherscan's API, enabling users to check balances, view transactions, track token transfers, fetch contract ABIs and code, monitor gas prices, and resolve ENS names.7MIT
- AlicenseAqualityFmaintenanceProvides MCP tools to query Etherscan for Ethereum blockchain data—ETH balances, ERC-20 tokens, transactions, contract ABIs, and gas prices—without requiring an API key.820MIT
- AlicenseNot gradedqualityCmaintenanceProvides comprehensive access to Ethereum blockchain data through the Etherscan API, including account, block, contract, transaction, token, gas, statistics, logs, and RPC proxy tools.4MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/5ajaki/mcp-etherscan-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server