项目介绍
Etherscan MCP 服务器
Etherscan API 客户端的 Go 实现,用于 模型上下文协议 (MCP),使大型语言模型 (LLM) 应用程序能够访问 Etherscan 区块链数据。
特性
- 访问支持多链的 Etherscan API V2
- 使用单个 API 密钥即可访问超过 50 条支持的链
- 支持多种区块链数据检索方法:
- 账户余额
- 区块信息
- 合约数据(ABI,源代码)
- 气象预言机
- 代币信息
- 交易数据
- 更多
需求
安装
-
克隆仓库:
git clone https://github.com/WrldRelief/etherscan-mcp-server.git
cd etherscan-mcp-server
-
设置 Etherscan API 密钥环境变量:
ETHERSCAN_API_KEY=your_api_key_here
-
构建服务器:
make build
-
安装服务器:
make install # 安装到 /usr/local/bin
使用
默认模式(标准输入/输出)
使用标准输入/输出通信运行服务器(默认模式):
./bin/etherscan-mcp-server
此模式适用于直接集成与通过标准输入/输出通信的 LLM 应用程序。
MCP 配置:
{
"mcpServers": {
"etherscan-mcp-server": {
"command": "etherscan-mcp-server",
"env": {
"ETHERSCAN_API_KEY": "$your_api_key"
}
}
}
}
重启光标并检查是否成功:

SSE 模式
在 Server-Sent Events 模式下运行服务器:
./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 服务器模式(默认是标准输入/输出模式)
--port <port>:指定 SSE 服务器的端口(默认为 PORT 环境变量或 4000)
连接终端(SSE 模式)
当以 SSE 模式运行时,服务器提供:
- SSE 终端:
http://localhost:4000/sse
支持的链
支持 50 多条链,请参阅 https://docs.etherscan.io/etherscan-v2/getting-started/supported-chains
示例查询
您可以使用如下自然语言查询:
账户和余额信息
- "地址 0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae 的 ETH 余额是多少?"
- "显示 BSC 上地址 0x123abc... 的 USDT 余额"
- "0xvitalik.eth 地址发出了多少笔交易?"
区块信息
- "获取最新 Polygon 区块的信息"
- "区块 17000000 中矿工的奖励是什么?"
- "谁在以太坊上挖了区块 16900000?"
合约交互
- "显示 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 的源代码"
- "Polygon 上的 USDC 合约的 ABI 是什么?"
- "调用 USDT 合约的 balanceOf 函数,参数是我的地址"
交易信息
- "给我交易 0x123456789abcdef... 的详情"
- "交易 0xabcdef... 是否已确认?"
- "交易 0x789abc... 使用的 gas 价格是多少?"
气费和网络
- "以太坊上的当前 gas 价格是多少?"
- "现在推荐的快速交易 gas 价格是多少?"
- "以太坊网络上有多少笔待处理交易?"
代币信息
- "告诉我关于 LINK 代币合约的情况"
- "地址 0x123... 拥有哪些 ERC-721 NFT?"
- "显示 0xvitalik.eth 最近的代币转移"
自定义查询
- "跟踪过去 1000 个区块中所有转移到 Binance 热钱包的 USDC 转移"
- "在区块 17000000 中收到最多 ETH 的地址是哪些?"
- "比较类似交易在以太坊和 Arbitrum 上的 gas 使用情况"
提供的工具
Etherscan MCP 服务器提供了以下工具来访问区块链数据:
- getAccountBalance - 获取特定区块链上账户的余额
- getBlockByNumber - 根据区块编号获取区块信息
- getBlockRewards - 根据区块编号获取区块奖励
- getContractABI - 获取已验证合约的 ABI
- getContractSourceCode - 获取已验证合约的源代码
- executeContractMethod - 执行读取合约函数
- getGasOracle - 获取当前 gas 价格预言机输出
- getTokenBalance - 获取特定区块链上账户的代币余额
- getTokenDetails - 获取全面的代币信息
- getTransactionByHash - 根据哈希获取交易详情
- getTransactionByBlockNumberAndIndex - 根据区块编号和索引获取交易
- getTransactionCount - 获取从某个地址发送的交易数量
- getTransactionReceipt - 检查交易收据状态
- getTransactionStatus - 检查合约执行状态
- getTransactionsByAddress - 根据地址获取交易列表
- getInternalTransactionsByAddress - 根据地址获取内部交易列表
- getTokenTransfersByAddress - 根据地址获取代币转移列表
- getERC721Transfers - 根据地址获取 ERC721 代币转移列表
- getLatestBlockNumber - 获取最新的区块编号
每个工具接受特定参数,并以结构化格式提供区块链数据。
许可证
MIT