使用说明

项目简介

本项目是一个基于 DipDup 框架构建的 MCP 服务器,专注于以太坊 ERC20 代币的索引和数据查询。它能够追踪 ERC20 代币的交易,并允许 AI 智能体通过调用工具来添加新的追踪代币,以及查询指定地址的交易记录。所有操作均可通过自然语言指令驱动,旨在为 LLM 应用提供结构化的链上数据访问能力。

主要功能点

  • ERC20 代币交易追踪: 自动索引以太坊网络上的 ERC20 代币交易事件。
  • 动态添加追踪代币: 通过 'AddAndIndexErc20TokenContract' 工具,允许 AI 智能体指定新的 ERC20 代币合约地址进行追踪和索引。
  • 地址交易查询: 提供 'GetTokenTransfers' 工具,根据地址查询相关的 ERC20 代币交易记录。
  • 自然语言交互: 所有功能都设计为可以通过自然语言指令驱动的 MCP 工具进行调用,方便 LLM 应用集成。
  • 基于 DipDup: 利用 DipDup 框架的强大索引和数据处理能力,保证数据索引的效率和可靠性。

安装步骤

  1. 安装 DipDup: 如果尚未安装 DipDup,请根据官方文档安装 DipDup (https://dipdup.io/docs/)。推荐使用以下命令快速安装:
    curl -Lsf https://dipdup.io/install.py | python
  2. 配置环境变量: 需要设置以太坊节点 API 密钥,例如 Alchemy API Key。创建 '.env' 文件或在 shell 中设置 'NODE_API_KEY' 环境变量。
    export NODE_API_KEY=your_alchemy_api_key
  3. 运行 DipDup: 使用 DipDup 初始化并运行项目。
    dipdup -e .env -С sqlite run
  4. 运行 MCP 服务器: 单独启动 MCP 服务器,监听在 'http://localhost:9999'。
    dipdup -e .env -C sqlite mcp run

服务器配置

以下为 MCP 客户端连接此 MCP 服务器所需的配置信息 (JSON 格式)。客户端需要配置 'command' 和 'args' 来启动 MCP 服务器进程。

{
  "server_name": "dipdup_erc20_mcp",
  "command": "dipdup",
  "args": ["-e", ".env", "-C", "sqlite", "mcp", "run"],
  "host": "http://localhost:9999"
}

参数注释:

  • 'server_name': 自定义服务器名称,用于客户端标识。例如 "dipdup_erc20_mcp"。
  • 'command': 启动 MCP 服务器的命令,这里使用 'dipdup' (假设 dipdup 命令已添加到系统 PATH)。
  • 'args': 传递给 'dipdup' 命令的参数列表,用于指定运行环境和启动 MCP 服务器:
    • '-e .env': 指定加载 '.env' 环境变量文件。
    • '-C sqlite': 指定使用 SQLite 数据库作为后端存储。
    • 'mcp run': DipDup 的子命令,用于启动 MCP 服务器。
  • 'host': MCP 服务器的访问地址,默认为 'http://localhost:9999',客户端需要连接此地址与服务器通信。

注意: 请确保 '.env' 文件已正确配置 'NODE_API_KEY' 等必要的环境变量,以便 DipDup 可以连接到以太坊节点。根据实际情况修改数据库配置 ('-C' 参数) 和其他 DipDup 运行参数。

基本使用方法

  1. 启动服务器: 按照安装步骤中的 "运行 MCP 服务器" 步骤启动 MCP 服务器。
  2. 客户端交互: 使用 MCP 客户端 (例如实现了 MCP 协议的 LLM 应用或客户端工具) 连接到 'http://localhost:9999'。
  3. 调用工具: 通过 MCP 客户端,可以调用以下工具与服务器交互:
    • 'AddAndIndexErc20TokenContract': 添加新的 ERC20 代币合约进行追踪。需要提供 'token_name' (代币名称), 'token_address' (合约地址), 'first_level' (起始区块高度,可选), 'last_level' (结束区块高度,可选) 等参数。
    • 'GetTokenTransfers': 查询指定地址的 ERC20 代币交易记录。需要提供 'address' (查询地址), 'limit' (返回记录数量限制,可选), 'from_address' (是否包含发送方交易,可选), 'to_address' (是否包含接收方交易,可选) 等参数。
  4. 查看结果: MCP 服务器会将工具执行结果以 JSON-RPC 响应的形式返回给客户端。

示例场景:

假设要使用 AI 智能体追踪 USDC 代币的交易,并查询某个地址的交易记录,可以通过以下步骤 (在 MCP 客户端中操作):

  1. 调用 'AddAndIndexErc20TokenContract' 工具: 指示 AI 智能体调用此工具,并提供 USDC 的相关信息,例如:

    • 'tool_name': 'AddAndIndexErc20TokenContract'
    • 'parameters':
      {
        "token_name": "usdc",
        "token_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
      }

    服务器将创建 USDC 代币的索引,开始追踪其交易。

  2. 调用 'GetTokenTransfers' 工具: 查询某个地址 (例如 '0xdAC17F958D2ee523a2206206994597C13D831ec7') 的 USDC 交易记录:

    • 'tool_name': 'GetTokenTransfers'
    • 'parameters':
      {
        "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
        "limit": 10
      }

    服务器将返回该地址最新的 10 条 USDC 交易记录。

开发

如需本地开发,请参考仓库 README.md 中的 "Development" 部分,配置开发环境并启动 PostgreSQL 数据库。

信息

分类

数据库与文件