Token导航 LogoToken导航TokenDH.com
Eth Trading MCP Server logo
金融服务stdio官方级别未说明来源级核验

Eth Trading MCP Server

MCP Server

一个基于Rust实现的MCP服务器,使AI代理能够查询以太坊余额并模拟代币交换。

工具数

3

提示词数

0

GitHub Stars

0

资源数

0
区块链RustClaude金融工具Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ytwei3

提供方

ytwei3

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 client_example.py init

详细介绍

以太坊交易MCP服务器

Rust中的模型上下文协议(MCP)服务器实现,使AI代理能够查询以太坊上的余额并模拟代币交换。

AI代理的快速入门

该服务器允许像Claude这样的AI代理通过自然对话与以太坊进行交互:

  1. 构建: cargo build --release
  2. 配置Claude桌面(请参阅 使用AI代理进行配置)
  3. 与克劳德聊天: *“vitalik.ETH的ETH余额是多少?”*

就是这样! 人工智能将自动调用区块链工具。

特性

  • 余额查询:查询任何地址的ETH和ERC20代币余额
  • 价格信息:从CoinGecko和Chainlink神谕获取实时代币价格
  • 交换模拟:使用气体估算模拟Uniswap V2交换(无链上执行)
  • MCP协议:遵循MCP规范的完整JSON-RPC 2.0实现
  • 生产准备就绪:使用ethers进行以太坊交互,使用rust_decimal进行财务精确

先决条件

  • 锈蚀1.70或更高
  • 以太坊RPC端点(公共或来自Infura/Alchemy)

安装

  1. 克隆存储库:
git clone 
cd eth-trading-mcp-server
  1. 复制示例环境文件:
cp .env.example .env
  1. 编辑 .env 并配置您的以太坊RPC URL:
ETH_RPC_URL=https://eth.llamarpc.com
# Or use your own Infura/Alchemy endpoint:
# ETH_RPC_URL=https://mainnet.infura.io/v3/YOUR_API_KEY
  1. 构建项目:
cargo build --release

运行服务器

MCP服务器通过stdio(标准输入/输出)进行通信:

cargo run --release

服务器将:

  1. 连接到以太坊RPC端点
  2. 通过获取链ID来验证连接
  3. 在stdin上监听JSON-RPC请求
  4. 在stdout上发送响应

使用AI代理进行配置

此MCP服务器旨在供Claude Desktop等AI代理使用,它们可以通过自然对话调用以太坊工具。

选项1:克劳德桌面(推荐)

  1. 构建发布二进制文件:
   cargo build --release
  1. 找到二进制文件:
   # The binary will be at:
   # /Users/hikari/src/eth-trading-mcp-server/target/release/eth-trading-mcp-server
  1. 配置Claude桌面:

编辑您的Claude Desktop配置文件:

- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 窗户: %APPDATA%\Claude\claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json

添加此MCP服务器配置:

   {
     "mcpServers": {
       "ethereum-trading": {
         "command": "/Users/hikari/src/eth-trading-mcp-server/target/release/eth-trading-mcp-server",
         "env": {
           "ETH_RPC_URL": "https://eth.llamarpc.com"
         }
       }
     }
   }

注: 将路径替换为实际的项目路径。使用 pwd 在项目目录中获取完整路径。

  1. 重新启动克劳德桌面
  1. 验证安装:

打开克劳德桌面,寻找🔌 指示MCP服务器已连接的图标。

选项2:其他MCP客户端

对于其他MCP兼容客户端,请将其配置为运行:

/path/to/eth-trading-mcp-server/target/release/eth-trading-mcp-server

环境变量:

ETH_RPC_URL=https://eth.llamarpc.com

自然语言测试

一旦配置了Claude Desktop,您就可以通过自然聊天来测试这些工具:

余额查询:

  • “0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045的ETH余额是多少?”
  • “检查vitalik.eth的USDC余额”
  • “0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb有多少ETH?”

价格查询:

  • “USDC的当前价格是多少?”(然后提供地址:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)
  • “给我ETH价格”(使用0x000000000000000000000000000000000)
  • “令牌0x6B175474E89094C44Da98b954EedeAC495271d0F的价格是多少?”(DAI)

交换模拟:

  • “模拟将0.1 ETH兑换为USDC,换取0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045钱包”
  • “1个ETH能得到多少USDC?”
  • “显示将0.5 ETH兑换为DAI的天然气成本”

通用令牌地址:

  • ETH: 0x0000000000000000000000000000000000000000
  • USDC: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
  • USDT: 0xdAC17F958D2ee523a2206206994597C13D831ec7
  • 戴: 0x6B175474E89094C44Da98b954EedeAC495271d0F
  • WETH: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

人工智能代理(Claude)将:

  1. 了解您的自然语言要求
  2. 调用相应的MCP工具(get_balance、get_token_price或swap_tokes)
  3. 以人性化的格式呈现结果

可用工具

1.平衡

查询ETH或ERC20代币余额以获取钱包地址。

参数:

  • wallet_address (字符串,必填):要查询的钱包地址(0x…)
  • token_address (字符串,可选):ERC20代币合约地址。如果没有提供,则返回ETH余额。

请求示例:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_balance",
    "arguments": {
      "wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
    }
  }
}

示例响应:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Balance: 1.234567890123456789 ETH\nDecimals: 18\nWallet: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb\nRaw balance: 1234567890123456789"
      }
    ]
  }
}

2.获取价格

从价格神谕获取美元和以太坊的当前代币价格。

参数:

  • token_address (字符串,必填):令牌合约地址。使用 0x0000000000000000000000000000000000000000 ETH。

请求示例:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_token_price",
    "arguments": {
      "token_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
    }
  }
}

示例响应:

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Token: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\nPrice (USD): 1.00\nPrice (ETH): 0.0005\nSource: CoinGecko"
      }
    ]
  }
}

3.swap_tomates

在Uniswap V2上模拟令牌交换,而不执行交易。

参数:

  • from_token (字符串,必填):源令牌地址。使用 0x0000000000000000000000000000000000000000 ETH。
  • to_token (字符串,必填):目标令牌地址
  • amount (字符串,必填):以代币单位交换的金额(例如“1.5”)
  • slippage_bps (数字,可选):基点滑动公差(默认值:50=0.5%)
  • wallet_address (字符串,必填):用于模拟的钱包地址

请求示例:

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "swap_tokens",
    "arguments": {
      "from_token": "0x0000000000000000000000000000000000000000",
      "to_token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "amount": "1.0",
      "slippage_bps": 50,
      "wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
    }
  }
}

示例响应:

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Swap Simulation:\nFrom: 0x0000000000000000000000000000000000000000\nTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\nAmount In: 1.0\nEstimated Output: 2000.5\nMinimum Output (with slippage): 1990.4975\nEstimated Gas: 150000\nSlippage Tolerance: 50 bps (0.5%)\nRoute: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 -> 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
      }
    ]
  }
}

MCP协议流

  1. 初始化:客户端发送 initialize 请求
  2. 列出工具:客户要求提供可用的工具 tools/list
  3. 呼叫工具:客户端调用工具 tools/call

初始化示例:

{
  "jsonrpc": "2.0",
  "id": 0,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {},
    "clientInfo": {
      "name": "example-client",
      "version": "1.0.0"
    }
  }
}

设计决策

建筑

  1. 模块化设计:为了可维护性和可测试性,将关注点分为不同的模块(ethereum/、tools/、types.rs、mcp.rs)。
  1. 异步优先:基于Tokio构建,用于高效处理并发RPC调用和未来的可扩展性。
  1. 仅模拟:The swap_tokens 工具用途 eth_estimateGasgetAmountsOut 在不执行交易的情况下模拟掉期,确保人工智能代理的安全。
  1. 金融精准度:用途 rust_decimal 以避免财务计算中的浮点错误。
  1. Oracle定价策略:实现回退链(CoinGecko→ 链环→ Uniswap池),以最大限度地提高价格数据的可用性。

实现细节

  • Uniswap集成:由于其简单性和广泛采用,使用Uniswap V2路由器进行交换模拟
  • ABI生成:利用醚类 abigen! 类型安全合约交互的宏
  • 错误处理:对内部错误和客户端响应的JSON-RPC错误代码进行全面的错误处理
  • 日志记录:带跟踪的结构化日志记录,输出到stderr以避免干扰stdio协议

已知限制

  1. 仅限主网:当前配置为以太坊主网。需要对L2或测试网进行修改。
  1. 价格信息:CoinGecko API有利率限制。对于生产,实现缓存或使用付费的API层。
  1. 交换路由:使用简单的直接路径(标记A→ 令牌B)或通过WETH单跳。生产系统应实施多跳路由,以获得更好的价格。
  1. 天然气估算:对于复杂的场景可能不准确。这 eth_estimateGas 如果钱包余额不足,通话可能会失败。
  1. 无交易执行:此服务器仅模拟交换。要执行真实交易,您需要:

- 添加适当的钱包管理和安全的密钥存储 - 执行交易签名和广播 - 添加确认跟踪 - 处理随机数管理

  1. 仅限Uniswap V2:不支持Uniswap V3或其他DEX。V3的集中流动性将提供更好的定价,但需要更复杂的整合。

测试

推荐:使用AI Agent进行测试

测试此服务器的最佳方法是通过像Claude Desktop这样的AI代理(请参阅 使用AI代理进行配置 上文)。只需使用自然语言与Claude聊天,例如:

  • “vitalik.ETH的ETH余额是多少?”
  • “获取USDC的价格”
  • “模拟将1 ETH兑换为USDC”

替代方案:手动测试

如果你想在没有人工智能代理的情况下直接测试服务器:

Python测试客户端

Python测试客户端(client_example.py)用于对所有MCP服务器功能进行简单的端到端测试:

# Make the script executable
chmod +x client_example.py

# Initialize the server
python3 client_example.py init

# List available tools
python3 client_example.py list

# Test balance query (example: Vitalik's address)
python3 client_example.py balance 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045

# Test token price (example: USDC)
python3 client_example.py price 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48

# Test swap simulation (ETH -> USDC)
python3 client_example.py swap 0x0000000000000000000000000000000000000000 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 0.1 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045

可用命令:

  • init -初始化MCP服务器连接
  • list -列出所有可用工具
  • balance -查询钱包余额
  • price -获取代币价格(使用 0x0000000000000000000000000000000000000000 ETH)
  • swap -模拟代币交换

Bash测试脚本

一个简单的bash脚本(test_mcp.sh)还提供了快速测试:

chmod +x test_mcp.sh
./test_mcp.sh

此脚本显示可以发送到服务器的JSON-RPC请求示例。

锈蚀试验

运行测试套件:

cargo test

使用日志记录运行:

RUST_LOG=debug cargo test -- --nocapture

发展

启用调试日志记录:

RUST_LOG=debug cargo run

格式代码:

cargo fmt

运行门楣:

cargo clippy

安全考虑

  • 永不承诺 .env 包含私钥的文件
  • 此服务器仅模拟事务,基本操作不需要私钥
  • 对于生产使用,实施适当的秘密管理(例如HashiCorp Vault、AWS Secrets Manager)
  • 始终验证和净化输入,特别是地址和金额

许可证

麻省理工学院

贡献

欢迎投稿!请随时提交拉取请求。

目录标签

目录标签

区块链RustClaude金融工具本地部署AI代理以太坊代币交换

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP