工具以太坊
一个全面的以太坊工具包,为区块链交互提供CLI界面和MCP(模型上下文协议)服务器。
特性
- 双接口:用作命令行工具(
ecli)或作为人工智能助手的MCP服务器 - 20+以太坊工具:全面覆盖读取区块链数据、发送交易和与智能合约交互
- 类型安全:用TypeScript编写,带有Zod模式验证
- 现代堆栈:基于Viem构建,用于可靠的以太坊交互
安装
npm install tools-ethereum
# or
pnpm add tools-ethereum
# or
yarn add tools-ethereumCLI使用情况
该套餐提供 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-以太坊网络的RPC URL(如果设置了env var,则可选)
环境变量
CLI按以下优先级顺序检查环境变量:
ECLI_RPC_URL-以太坊网络的RPC URL(前缀避免冲突)RPC_URL-回退RPC URL(为方便起见的通用名称)ECLI_PRIVATE_KEY-用于签署交易的私钥(前缀可避免冲突)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测试
# 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)建筑
该项目遵循基于模块化工具的架构:
- 工具 (
src/tools/*.ts):具有模式、描述和执行功能的自包含单元 - MCP服务器 (
src/index.ts):将所有工具聚合到兼容MCP的服务器中 - 命令行界面 (
src/cli.ts):将工具显示为命令行命令 - 帮手 (
src/helpers.ts):用于客户端创建和工具注册的共享实用程序
许可证
麻省理工学院 ©罗南·桑福德
贡献
欢迎投稿!请确保您的更改:
- 遵循现有的代码样式(运行
pnpm format) - 包括适当的测试
- 维护TypeScript类型安全
- 遵循Zod模式的工具模式
