以太坊工具包

一个全面的以太坊工具包,提供CLI界面和MCP服务器,用于区块链交互。

  • by wighawag
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 wighawag/tools-ethereum

使用说明

工具以太坊

一个全面的以太坊工具包,为区块链交互提供CLI界面和MCP(模型上下文协议)服务器。

特性

  • 双接口:用作命令行工具(ecli)或作为人工智能助手的MCP服务器
  • 20+以太坊工具:全面覆盖读取区块链数据、发送交易和与智能合约交互
  • 类型安全:用TypeScript编写,带有Zod模式验证
  • 现代堆栈:基于Viem构建,用于可靠的以太坊交互

安装

npm install tools-ethereum
# or
pnpm add tools-ethereum
# or
yarn add tools-ethereum

CLI使用情况

该套餐提供 ecli 命令行界面:

# Start the MCP server with prefixed env vars
export ECLI_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
export ECLI_PRIVATE_KEY=0x...
ecli mcp

# Or use generic env var names (fallback)
export RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
export PRIVATE_KEY=0x...
ecli mcp

# Or use --rpc-url option
ecli --rpc-url https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY mcp

# Get ETH balance (uses env var)
ecli get_balance 0x...

# Or specify --rpc-url explicitly
ecli --rpc-url https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY get_balance 0x...

# Get latest block number
ecli get_block_number

全局选项

  • --rpc-url <url> -以太坊网络的RPC URL(如果设置了env var,则可选)

环境变量

CLI按以下优先级顺序检查环境变量:

  1. ECLI_RPC_URL -以太坊网络的RPC URL(前缀避免冲突)
  2. RPC_URL -回退RPC URL(为方便起见的通用名称)
  3. ECLI_PRIVATE_KEY -用于签署交易的私钥(前缀可避免冲突)
  4. PRIVATE_KEY -回退私钥(为方便起见,通用名称)

注: 私钥必须以开头 0x

MCP服务器

MCP服务器通过模型上下文协议公开所有以太坊工具,使AI助手能够与区块链交互:

import { createServer } from 'tools-ethereum';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { mainnet } from 'viem/chains';

const server = createServer({
  chain: mainnet,
  privateKey: process.env.PRIVATE_KEY as `0x${string}`,
});

const transport = new StdioServerTransport();
await server.connect(transport);

可用工具

只读操作

工具 说明
get_balance 获取地址的ETH余额
get_block_number 获取最新的区块编号
get_block 按数字或哈希获取块详细信息
get_latest_block 获取最新的区块详细信息
get_transaction 通过哈希获取交易详细信息
get_transaction_count 获取地址的随机数/交易计数
get_gas_price 获取当前天然气价格
get_fee_history 获取天然气估算的费用历史记录
get_chain_id 获取网络链ID
get_code 在某个地址获取字节码
get_storage_at 获取特定插槽的存储值

合同互动

工具 说明
call_contract 调用只读合约函数(视图/纯)
encode_calldata 编码用于合约交互的函数调用
decode_calldata 解码交易输入数据
estimate_gas 估算交易天然气

交易操作(需要PRIVATE_KEY)

工具 说明
send_transaction 发送ETH或调用合约函数
sign_message 对任意消息进行签名
wait_for_transaction_confirmation 等待交易收据

日志查询

工具 说明
get_contract_logs 从合同中查询事件日志
get_transaction_logs 从特定事务中获取日志

发展

# Install dependencies
pnpm install

# Build the project
pnpm build

# Run tests
pnpm test

# Watch mode for development
pnpm dev

# Format code
pnpm format

测试

该项目使用 维测试 用于测试 Prool 对于本地以太坊节点测试:

# Run all tests
pnpm test

# Run with deprecation tracing
pnpm test:trace

# Watch mode
pnpm test:watch

项目结构

src/
├── index.ts           # Main MCP server creation
├── cli.ts             # CLI entry point
├── cli-tool-generator.ts  # Dynamic CLI command generation
├── helpers.ts         # Client creation and tool registration utilities
├── types.ts           # TypeScript type definitions
└── tools/             # Individual tool implementations
    ├── index.ts       # Tool exports
    ├── get_balance.ts
    ├── send_transaction.ts
    └── ... (20 tools total)

建筑

该项目遵循基于模块化工具的架构:

  1. 工具 (src/tools/*.ts):具有模式、描述和执行功能的自包含单元
  2. MCP服务器 (src/index.ts):将所有工具聚合到兼容MCP的服务器中
  3. 命令行界面 (src/cli.ts):将工具显示为命令行命令
  4. 帮手 (src/helpers.ts):用于客户端创建和工具注册的共享实用程序

许可证

麻省理工学院 ©罗南·桑福德

贡献

欢迎投稿!请确保您的更改:

  1. 遵循现有的代码样式(运行 pnpm format)
  2. 包括适当的测试
  3. 维护TypeScript类型安全
  4. 遵循Zod模式的工具模式

资源