区块链数据服务

MCP GetBlock Server是一个通过JSON-RPC接口与GetBlock.io API交互的服务,提供多种区块链网络(如ETH、Solana)的数据请求、实时统计、钱包余额查询、交易状态监控等功能。

  • by GetBlock-io
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 getblock-io/mcp-server

使用说明

MCP GetBlock服务器

用于与GetBlock.io API交互的模型上下文协议(MCP)服务器。

特性

  • 来自各种网络(ETH、Solana)的区块链数据请求
  • 实时区块链统计
  • 钱包余额检查
  • 交易状态监控
  • 获取Solana帐户信息
  • 获取以太坊当前的天然气价格
  • 区块链节点的JSON-RPC接口
  • API令牌的基于环境的配置

安装

选项1:标准Node.js安装

  1. 安装依赖项:
npm install
  1. 编译TypeScript:
npm run build
  1. 创建一个 .env 带有不同区块链访问令牌的文件(可选):
# Access tokens for different blockchains
ETH_ACCESS_TOKEN=your_eth_access_token_here
SOLANA_ACCESS_TOKEN=your_solana_access_token_here
  1. 启动服务器:
npm start

选项2:使用Docker

  1. 构建Docker镜像:
docker build -t mcp/getblock:latest .
  1. 使用环境变量运行容器:
docker run -i --rm \
  -e ETH_ACCESS_TOKEN=your_eth_access_token_here \
  -e SOLANA_ACCESS_TOKEN=your_solana_access_token_here \
  mcp/getblock:latest

发展

对于开发,您可以使用以下命令:

npm run dev

此命令将编译TypeScript并启动服务器。

与Claude Desktop、Cursor或其他IDE一起使用

选项1:通过Node.js直接启动

  1. 通过编辑配置Claude Desktop以使用此服务器 claude_desktop_config.json:
{
    "mcpServers": {
        "getblock": {
            "command": "npm",
            "args": [
                "start",
                "--prefix",
                "/ABSOLUTE/PATH/TO/mcp-getblock"
            ],
            "env": {
                "ETH_ACCESS_TOKEN": "your_eth_access_token_here",
                "SOLANA_ACCESS_TOKEN": "your_solana_access_token_here"
            }
        }
    }
}

选项2:通过Docker启动

  1. 配置Claude Desktop以使用Docker容器:
{
    "mcpServers": {
        "getblock": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "ETH_ACCESS_TOKEN",
                "-e",
                "SOLANA_ACCESS_TOKEN",
                "mcp/getblock:latest"
            ],
            "env": {
                "ETH_ACCESS_TOKEN": "your_eth_access_token_here",
                "SOLANA_ACCESS_TOKEN": "your_solana_access_token_here"
            }
        }
    }
}
  1. 重新启动克劳德桌面
  2. 您应该在工具栏中看到可用的工具

可用工具

  1. get-chain-info -获取区块链网络(ETH、Solana)的一般信息
  2. get-wallet-balance -检查区块链上的钱包余额
  3. get-transaction -获取特定交易的详细信息
  4. get-latest-blocks -获取有关最新区块的信息
  5. get-solana-account -获取Solana帐户的信息
  6. get-eth-gas-price -获取以太坊网络中的当前天然气价格

详细工具说明

获取链信息

{
  "name": "get-chain-info",
  "description": "Get general information about a blockchain network",
  "inputSchema": {
    "properties": {
      "chain": {
        "type": "string",
        "description": "Blockchain network (e.g., eth, solana)",
        "default": "eth"
      }
    }
  }
}

获取钱包余额

{
  "name": "get-wallet-balance",
  "description": "Get the balance of a wallet address on a blockchain",
  "inputSchema": {
    "properties": {
      "address": {
        "type": "string",
        "description": "The wallet address to check"
      },
      "chain": {
        "type": "string",
        "description": "Blockchain network (e.g., eth, solana)",
        "default": "eth"
      }
    },
    "required": ["address"]
  }
}

获取交易

{
  "name": "get-transaction",
  "description": "Get details of a specific transaction",
  "inputSchema": {
    "properties": {
      "txid": {
        "type": "string",
        "description": "Transaction ID/hash"
      },
      "chain": {
        "type": "string",
        "description": "Blockchain network (e.g., eth, solana)",
        "default": "eth"
      }
    },
    "required": ["txid"]
  }
}

访问令牌优先级顺序

访问令牌按以下优先级顺序使用:

  1. 通过环境变量传递的令牌(env 在claude_desktop_config.json中)
  2. .env文件中的令牌
  3. 默认值(如果第1项和第2项中未指定)

架构与技术栈

  • 语言:TypeScript(编译为JavaScript)
  • 运行时:Node.js
  • 通信协议:模型上下文协议(MCP)
  • API集成:GetBlock.io JSON-RPC API
  • 认证:基于令牌的API身份验证
  • 传输层:用于与Claude Desktop通信的标准I/O(stdio)
  • 依赖项:
    • @modelcontextprotocol/sdk:用于MCP实施
    • axios:API请求的HTTP客户端
    • dotenv:环境变量管理

支持的网络

截至2025年6月,该MCP服务器支持以下区块链网络:

主要网络

  • 以太坊(ETH) -完全支持余额、交易、区块和天然气价格查询
  • 索拉纳(SOL) -支持余额、账户信息、交易和区块查询

未来扩张

GetBlock.io的基础设施(包括超过75个区块链网络)支持其他网络 [1])可以通过扩展当前代码库来实现。

使用示例

检查ETH余额

您可以让Claude通过使用 get-wallet-balance 工具:

What is the balance of this Ethereum wallet: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?

查看交易详情

要获取特定交易的信息,请执行以下操作:

Can you show me the details of this Ethereum transaction: 0x0ac94a788a79e3eaa72a33f1da97b79728b570054fe156a7f60e06f5791aaf36?

获取当前天然气价格

要查看以太坊上的当前天然气价格:

What are the current gas prices on Ethereum?

实现细节

服务器架构

服务器遵循一个简单的架构:

  1. 初始化:服务器使用MCP SDK进行初始化,并配置支持的工具
  2. 工具注册:每个区块链操作都注册为一个单独的工具,具有自己的输入模式
  3. 请求处理:传入的请求由主处理程序处理,主处理程序:
    • 提取工具名称和参数
    • 验证输入参数
    • 构造对GetBlock API的适当JSON-RPC调用
    • 处理响应并返回格式化结果
  4. 认证:API令牌通过使用环境变量的优先级系统进行管理

编码结构

  • 工具定义:每个区块链操作都被定义为具有元数据的单独工具
  • 请求处理器:处理工具调用的主要逻辑
  • API集成:用于构造和向GetBlock发送请求的辅助函数
  • 响应处理:区块链数据的格式化和转换(例如wei到ether)

故障排除

API连接问题

如果遇到GetBlock API的连接问题:

  1. 验证您的访问令牌是否在环境变量或.env文件中正确设置
  2. 检查GetBlock服务是否正常运行
  3. 确保您的网络可以访问GetBlock API服务器

响应格式无效

如果您收到有关无效响应格式的错误消息:

  1. 验证GetBlock是否支持您正在使用的区块链和方法
  2. 检查您的访问令牌是否具有足够的权限
  3. 确保特定区块链的参数格式正确