以太坊区块链数据访问服务

一个基于Etherscan API的区块链数据访问服务,支持多链查询和智能合约交互,适用于LLM应用和开发者。

  • by huahuayu
  • Go
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 huahuayu/etherscan-mcp-server

使用说明

Etherscan MCP服务器

用于的Etherscan API客户端的Go实现 模型上下文协议(MCP) 这使得LLM应用程序能够访问Etherscan区块链数据。

特性

  • 访问Etherscan API V2以获得多链支持
  • 使用单个API密钥 50个支撑链
  • 支持多种区块链数据检索方法:
    • 账户余额
    • 块信息
    • 合同数据(ABI,源代码)
    • 燃气预言机
    • 令牌信息
    • 交易数据
    • 还有更多

需求

  • Etherscan API密钥(从https://etherscan.io/myapikey)

安装

  1. 克隆存储库:

    git clone https://github.com/huahuayu/etherscan-mcp-server.git
    cd etherscan-mcp-server
    
  2. 设置Etherscan API密钥环境变量:

    ETHERSCAN_API_KEY=your_api_key_here
    
  3. 构建服务器:

    make build
    
  4. 安装服务器:

    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 <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服务器提供以下访问区块链数据的工具:

  1. 获取账户余额 -获取特定区块链上的账户余额
  2. getBlockByNumber -按区块编号获取区块信息
  3. getBlockRewards -按区块编号获取区块奖励
  4. getContractABI -获取经过验证的合同的ABI
  5. getContractSourceCode -获取已验证合约的源代码
  6. executeContractMethod -执行读取合约功能
  7. getGasOracle -获取当前天然气价格预言输出
  8. getTokenBalance -获取特定区块链上账户的代币余额
  9. getTokenDetails -获取全面的代币信息
  10. getTransactionByHash -通过哈希获取交易详细信息
  11. getTransactionByBlockNumberAndIndex -按区块编号和索引获取交易
  12. getTransactionCount -获取从某个地址发送的交易数量
  13. getTransactionReceipt -检查交易收据状态
  14. getTransactionStatus -检查合同执行状态
  15. getTransactionsByAddress -按地址获取交易列表
  16. getInternal TransactionsByAddress -按地址获取内部交易列表
  17. getTokenTransfersByAddress -按地址获取代币转账列表
  18. getERC721传输 -按地址获取ERC721代币转移列表
  19. 获取最新区块编号 -获取最新的区块编号

每个工具都接受特定的参数,并以结构化格式提供区块链数据。

许可证

麻省理工学院