aerialccc/Ethereum-Trading-MCP-Server
3.1
If you are the rightful owner of Ethereum-Trading-MCP-Server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Ethereum-Trading-MCP-Server is a specialized server designed to facilitate trading activities on the Ethereum blockchain using the Model Context Protocol (MCP).
Ethereum Trading MCP Server
一个基于 MCP (Model Context Protocol) 的以太坊交易服务器,提供查询余额、获取代币价格和执行代币交换等功能。
功能特性
- ✅ 查询余额 - 支持查询 ETH 和 ERC20 代币余额
- ✅ 获取价格 - 通过 Uniswap V2 获取代币实时价格
- ✅ 代币交换 - 执行 ERC20 代币之间的交换操作
- ✅ 滑点保护 - 支持自定义滑点容忍度
- ✅ 完整测试 - 包含 59 个单元测试和集成测试
前置要求
- Rust 1.70+
- 以太坊 RPC 节点访问权限(如 Infura、Alchemy 等)
- (可选)用于交易的以太坊私钥
快速开始
1. 克隆项目
git clone <repository-url>
cd Ethereum-Trading-MCP-Server
2. 配置环境变量
创建 .env 文件,详细配置细节请查看.env.example文件。
3. 构建项目
# 开发构建
cargo build
# 发布构建
cargo build --release
4. 运行测试
# 运行所有测试
cargo test
# 运行单元测试
cargo test --lib
# 运行集成测试
cargo test --test integration_tests
5. 运行服务器
# 使用 stdio 传输
cargo run
6. 运行示例
我们提供了完整的客户端示例,展示如何与服务器交互:
# 运行完整示例
cargo run --example full_example
示例包含:
- ✅ 连接和初始化 MCP 服务器
- ✅ 查询 ETH 和 ERC20 代币余额
- ✅ 获取代币价格
- ✅ 错误处理演示
- ✅ 并发查询示例
详细文档请查看
可用工具
1. get_balance
查询以太坊地址的 ETH 或 ERC20 代币余额。
参数:
address(string): 以太坊地址token_address(string, 可选): ERC20 代币合约地址,不提供则查询 ETH 余额
示例:
{
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"token_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
}
2. get_token_price
获取代币的当前价格(相对于另一个代币)。
参数:
token_in(string): 输入代币地址token_out(string): 输出代币地址amount_in(string): 输入金额(以 wei 为单位)
示例:
{
"token_in": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"token_out": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"amount_in": "1000000000"
}
3. swap_tokens
执行代币交换操作。
参数:
token_in(string): 输入代币地址token_out(string): 输出代币地址amount_in(string): 输入金额(以 wei 为单位)slippage(number): 滑点容忍度(百分比,如 0.5 表示 0.5%)recipient(string, 可选): 接收地址,默认为发送者
示例:
{
"token_in": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"token_out": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"amount_in": "1000000000",
"slippage": 0.5
}
项目结构
src/
├── ethereum/ # 以太坊相关功能
│ ├── balance.rs # 余额查询
│ ├── price.rs # 价格查询
│ ├── swap.rs # 代币交换
│ ├── wallet.rs # 钱包管理
│ ├── config.rs # 配置管理
│ └── error.rs # 错误处理
├── server/ # MCP 服务器
│ └── handler.rs # 请求处理器
├── utils.rs # 工具函数
├── error.rs # 全局错误
└── main.rs # 入口文件
tests/
└── integration_tests.rs # 集成测试
测试覆盖
项目包含全面的测试套件:
-
单元测试 (27 个): 测试各个模块的功能
- 余额查询测试
- 价格查询测试
- 代币交换测试
- 钱包功能测试
- 工具函数测试
-
集成测试 (32 个): 测试完整的服务器功能
- 服务器初始化测试
- 工具注册和发现测试
- 参数验证测试
- 并发访问测试
- 序列化测试
运行测试:
cargo test -- --nocapture
安全注意事项
⚠️ 重要提示:
- 私钥安全: 永远不要将私钥提交到版本控制系统
- 环境变量: 使用
.env文件存储敏感信息,并将其添加到.gitignore - 测试网络: 在主网使用前,先在测试网络(如 Goerli、Sepolia)上测试
- 滑点设置: 合理设置滑点以避免交易失败或价格损失
- Gas 费用: 确保账户有足够的 ETH 支付 gas 费用
贡献
欢迎提交 Issue 和 Pull Request!
联系方式
如有问题或建议,请通过 GitHub Issues 联系。