项目介绍
Etherscan MCP Server
这是一个用Go语言实现的Etherscan API客户端,用于模型上下文协议(MCP),使LLM应用程序能够访问Etherscan区块链数据。
特性
- 访问支持多链的Etherscan API V2
- 使用单个API密钥即可访问超过50条支持的链
- 支持多种区块链数据检索方法:
- 账户余额
- 区块信息
- 合约数据(ABI,源代码)
- 气象预言机
- 代币信息
- 交易数据
- 更多
需求
安装
-
克隆仓库:
git clone https://github.com/huahuayu/etherscan-mcp-server.git
cd etherscan-m
-
设置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个区块的矿工奖励是什么?"
- "谁挖了Ethereum上的第16900000个区块?"
合约交互
- "显示0x1f9840a85d5af5bf1d1762f925bdaddc4201f984处的源代码"
- "Polygon上的USDC合约的ABI是什么?"
- "使用我的地址作为参数调用USDT合约的balanceOf函数"
交易信息
- "给我详细信息关于交易0x123456789abcdef..."
- "交易0xabcdef...是否已被确认?"
- "交易0x789abc...使用的gas价格是多少?"
气费和网络
- "Ethereum上的当前气费是多少?"
- "现在推荐的快速交易的气费是多少?"
- "Ethereum网络上有多少笔待处理的交易?"
代币信息
- "告诉我关于LINK代币合约的情况"
- "地址0x123...拥有哪些ERC-721 NFT?"
- "显示0xvitalik.eth最近的代币转移"
自定义查询
- "跟踪过去1000个区块中所有转移到Binance热钱包的USDC"
- "在第17000000个区块中收到最多ETH的地址有哪些?"
- "比较类似交易在Ethereum和Arbitrum上的气费使用情况"
可用工具
Etherscan MCP Server提供了以下工具来访问区块链数据:
- getAccountBalance - 获取特定区块链上账户的余额
- getBlockByNumber - 根据区块号获取区块信息
- getBlockRewards - 根据区块号获取区块奖励
- getContractABI - 获取已验证合约的ABI
- getContractSourceCode - 获取已验证合约的源代码
- executeContractMethod - 执行读取合约函数
- getGasOracle - 获取当前气价预言机输出
- getTokenBalance - 获取特定区块链上账户的代币余额
- getTokenDetails - 获取全面的代币信息
- getTransactionByHash - 根据哈希获取交易详情
- getTransactionByBlockNumberAndIndex - 根据区块号和索引获取交易
- getTransactionCount - 获取从某个地址发送的交易数量
- getTransactionReceipt - 检查交易收据状态
- getTransactionStatus - 检查合约执行状态
- getTransactionsByAddress - 根据地址获取交易列表
- getInternalTransactionsByAddress - 根据地址获取内部交易列表
- getTokenTransfersByAddress - 根据地址获取代币转移列表
- getERC721Transfers - 根据地址获取ERC721代币转移列表
- getLatestBlockNumber - 获取最新的区块号
每个工具接受特定参数,并以结构化格式提供区块链数据。
许可证
MIT