Etherscan MCP服务器
用于的Etherscan API客户端的Go实现 模型上下文协议(MCP) 这使得LLM应用程序能够访问Etherscan区块链数据。
特性
- 访问Etherscan API V2以获得多链支持
- 使用单个API密钥 50个支撑链
- 支持多种区块链数据检索方法:
- 账户余额 - 块信息 - 合同数据(ABI,源代码) - 燃气预言机 - 令牌信息 - 交易数据 - 还有更多
需求
- Etherscan API密钥(从https://etherscan.io/myapikey)
安装
- 克隆存储库:
git clone https://github.com/huahuayu/etherscan-mcp-server.git
cd etherscan-mcp-server- 设置Etherscan API密钥环境变量:
ETHERSCAN_API_KEY=your_api_key_here- 构建服务器:
make build- 安装服务器:
make install # install to /usr/local/bin用法
默认模式(标准输入/输出)
使用stdin/stdout通信运行服务器(默认模式):
./bin/etherscan-mcp-server此模式可用于与通过stdin/stdout通信的LLM应用程序直接集成。
MCP配置:
{
"mcpServers": {
"etherscan-mcp-server": {
"command": "etherscan-mcp-server",
"env": {
"ETHERSCAN_API_KEY": "$your_api_key"
}
}
}
}重新启动游标并检查是否成功:

SSE模式
在服务器发送事件模式下运行服务器:
./bin/etherscan-mcp-server --sse在SSE模式下,服务器监听HTTP并提供SSE端点。
SSE MCP配置:
{
"mcpServers": {
"etherscan-mcp-server": {
"url": "http://localhost:4000/sse",
"env": {
"ETHERSCAN_API_KEY": "$your_api_key"
}
}
}
}服务器选项
--sse:启用SSE服务器模式(默认为stdin/stdout模式)- `--port
`:指定SSE服务器的端口(默认为port env var或4000)
连接端点(SSE模式)
在SSE模式下运行时,服务器提供:
- SSE端点:
http://localhost:4000/sse
支撑链
支持50+链条,请参阅 Etherscan V2支持的链 以获取完整列表及其对应的链ID。
关于免费层限制和RPC回退的说明: 根据Etherscan的 支持链政策,一些网络 不可用 根据免费API计划。这些包括(但不限于): - BNB智能链(BSC) --链ID:56 - 基础 --链ID:8453 - 雪崩C链 --链ID:43114 对于这三条链,此服务器具有 内置RPC回退机制:当Etherscan API返回时NOTOK,它使用标准JSON-RPC方法自动回退到免费的公共RPC端点。 无需付费计划 对于这些链上的以下工具: |工具|JSON-RPC方法| | ----------------------- | --------------------------------- | |getLatestBlockNumber|eth_blockNumber| |getAccountBalance|eth_getBalance| |getTokenBalance|eth_call(平衡)| |getTokenDetails|eth_call(名称/符号/小数)| |getTransactionByHash|eth_getTransactionByHash| |getTransactionReceipt|eth_getTransactionReceipt| |getTransactionCount|eth_getTransactionCount| |executeContractMethod|eth_call| 使用的RPC端点: - BSC:https://binance.llamarpc.com- 基地:https://base.llamarpc.com- 雪崩C链:https://api.avax.network/ext/bc/C/rpc其他Etherscan专用工具(例如。,getContractABI,getTransactionsByAddress)这些链仍然需要Etherscan付费计划。
查询示例
您可以使用以下自然语言查询:
账户和余额信息
- “地址0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae的ETH余额是多少?”
- “显示BSC上地址0x123abc…上USDT的代币余额”
- “0xvitalik.eth从这个地址进行了多少笔交易?”
块信息
- “获取有关最新多边形块的信息”
- “17000000区块矿工的奖励是什么?”
- “谁在以太坊上开采了16900000块?”
合同互动
- “显示0x1f9840a85d5af5f1d1762f925bdc4201f984处的源代码”
- “Polygon上USDC合约的ABI是多少?”
- “以我的地址为参数调用USDT合约的balanceOf函数”
交易信息
- “给我交易0x123456789abcdef的详细信息…”
- “交易0xabcdef…是否已确认?”
- “交易0x789abc中使用的天然气价格是多少…”
天然气和管网
- “以太坊目前的天然气价格是多少?”
- “现在快速交易的建议天然气价格是多少?”
- “以太坊网络上有多少交易悬而未决?”
令牌信息
- “告诉我关于LINK代币合约的情况”
- “ERC-721 NFT地址0x123…属于什么?”
- “显示0xvitalik.eth的最近令牌转移”
自定义查询
- “跟踪过去1000个区块中所有向币安热钱包转账的USDC”
- “在17000000区块中,哪些地址收到的ETH最多?”
- “比较以太坊与Arbitrum上类似交易的天然气使用情况”
可用工具
Etherscan MCP服务器提供以下访问区块链数据的工具:
- 获取账户余额 -获取特定区块链上的账户余额
- getBlockByNumber -按区块编号获取区块信息
- getBlockRewards -按区块编号获取区块奖励
- getContractABI -获取经过验证的合同的ABI
- getContractSourceCode -获取已验证合约的源代码
- executeContractMethod -执行读取合约功能
- getGasOracle -获取当前天然气价格预言输出
- getTokenBalance -获取特定区块链上账户的代币余额
- getTokenDetails -获取全面的代币信息
- getTransactionByHash -通过哈希获取交易详细信息
- getTransactionByBlockNumberAndIndex -按区块编号和索引获取交易
- getTransactionCount -获取从某个地址发送的交易数量
- getTransactionReceipt -检查交易收据状态
- getTransactionStatus -检查合同执行状态
- getTransactionsByAddress -按地址获取交易列表
- getInternal TransactionsByAddress -按地址获取内部交易列表
- getTokenTransfersByAddress -按地址获取代币转账列表
- getERC721传输 -按地址获取ERC721代币转移列表
- 获取最新区块编号 -获取最新的区块编号
每个工具都接受特定的参数,并以结构化格式提供区块链数据。
许可证
麻省理工学院
