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

Ethereum MCP Server

MCP Server

一个基于Rust构建的模型上下文协议(MCP)服务器,使AI代理能够查询以太坊地址余额并执行代币交换。

工具数

3

提示词数

0

GitHub Stars

0

资源数

0
区块链RustClaude以太坊Claude DesktopClaudeCline

安装说明

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

作者 / 组织

Joshuashen022

提供方

Joshuashen022

最后核验

2026/5/17 20:20

快速接入

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

详细介绍

以太坊MCP服务器

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

特性

  • 查询余额:获取任何以太坊地址的ETH或ERC-20代币余额
  • 代币价格:从CoinGecko API获取当前代币价格
  • 构建掉期交易:使用Uniswap V3生成和模拟掉期交易
  • JSON-RPC协议:通过stdin/stdout实现完整的MCP协议

先决条件

  • 锈1.70或更高版本 -从以下位置安装 rustup.rs
  • Node.js 16+ (可选)-仅需要 mcp-inspector 测试工具
  • 访问以太坊RPC端点 -默认为公共RPC https://eth.llamarpc.com

安装

# Clone the repository
git clone 
cd ethereum-mcp

# Install Rust dependencies
cargo build --release

# (Optional) Install MCP Inspector for testing
npm install

配置

环境变量

创建一个 .env 在项目根目录中创建文件或导出这些环境变量:

# Ethereum RPC endpoint (optional, defaults to public RPC)
export ETH_RPC_URL=https://your-rpc-endpoint.com

# Private key for signing transactions (optional, required for building swap transactions)
export ETHEREUM_PRIVATE_KEY=0x1234567890abcdef...

# For mainnet, consider using Infura, Alchemy, or your own node
export ETH_RPC_URL=https://mainnet.infura.io/v3/YOUR_PROJECT_ID

安全说明:切勿提交私钥或 .env 文件到版本控制。

用法

运行MCP服务器

# Development mode (with logging)
cargo run

# Release mode (optimized)
cargo run --release

服务器通过JSON-RPC在stdin/stdout上进行通信,遵循模型上下文协议规范。

使用MCP检查员进行测试

# Start the server for inspection
mcp-inspector --transport stdio -- cargo run --release

与AI客户端集成

配置您的AI客户端(例如Claude Desktop、Cline)以使用此服务器:

{
  "mcpServers": {
    "ethereum": {
      "command": "cargo",
      "args": ["run", "--release"],
      "cwd": "/path/to/ethereum-mcp"
    }
  }
}

MCP工具调用示例

以下是一个完整的MCP请求/响应交互示例:

请求(从AI客户端到服务器)

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "query_balance",
    "arguments": {
      "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
      "tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
    }
  },
  "id": 1
}

响应(从服务器到AI客户端)

{
  "jsonrpc": "2.0",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "ERC-20 balance: 1000000 tokens"
      }
    ],
    "isError": false
  },
  "id": 1
}

可用工具

1. query_balance

查询以太坊地址的ETH或ERC-20代币余额。

参数:

  • address (必填):要查询的以太坊地址
  • token_address (可选):ERC-20令牌地址。如果未提供,则返回ETH余额

例子:

{
  "name": "query_balance",
  "arguments": {
    "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
    "token_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
  }
}

2. get_token_price

从CoinGecko API获取当前代币价格。

参数:

  • token (必填):代币地址、符号(例如“ETH”、“USDC”)或CoinGecko ID
  • currency (可选):返回价格的货币(默认为“USD”)

例子:

{
  "name": "get_token_price",
  "arguments": {
    "token": "ETH",
    "currency": "USD"
  }
}

3. build_swap_transaction

使用Uniswap V3构建和模拟令牌交换交易。

参数:

  • fromToken (可选):要交换的令牌地址(默认为WETH)
  • toToken (可选):要交换的代币地址(默认为USDC)
  • amountIn (可选):要交换的金额(默认为0.0001)
  • slippageTolerance (可选):最大可接受滑动百分比
  • recipient (可选):接收交换令牌的地址

例子:

{
  "name": "build_swap_transaction",
  "arguments": {
    "fromToken": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
    "toToken": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    "amountIn": "0.1",
    "slippageTolerance": 0.5
  }
}

建筑与设计决策

服务器分为以下模块:

  • src/lib.rs:主库入口点和服务器初始化
  • src/mcp.rs:MCP协议实现和JSON-RPC处理
  • src/types.rs:协议类型定义
  • src/ethereum/:以太坊交互逻辑组织成子模块:

- mod.rs:主要 EthereumService 结构和公共API - balance.rs:ETH和ERC-20余额查询 - price.rs:从外部API获取代币价格 - pool.rs:Uniswap V3池操作和价格计算 - swap.rs:掉期交易构建和模拟 - utils.rs:用于编码/解码的辅助工具

  • src/main.rs:具有日志记录设置的应用程序入口点

设计决策

该实施优先考虑 安全、模块化和类型安全 通过以下设计选择:

  1. 合金框架:使用Alloy库进行以太坊交互,在原始RPC调用上提供类型安全的抽象,并消除智能合约交互中常见的编码/解码错误。
  1. 模拟优先法:所有掉期交易都使用 eth_call 用于模拟而不是执行真实事务。这使得AI代理能够理解交易结果,而无需承担资金风险或需要复杂的签名基础设施。
  1. Uniswap V3 Focus:特别针对Uniswap V3的广泛采用和集中的流动性。该实现直接从区块链读取池状态,以计算准确的掉期报价,而不依赖于外部API。
  1. 只读默认模式:默认情况下,服务器以只读模式运行。交易构建需要明确配置 ETHEREUM_PRIVATE_KEY,迫使有意识地选择可以修改区块链状态的功能。
  1. 基于Rust的MCP实现:The rmcp crate为MCP协议处理提供了坚实的基础,内置异步支持和适当的错误处理,使服务器比ad-hoc JSON-RPC实现更健壮。

已知限制和假设

此实现具有以下限制和假设:

  1. 单一收费等级:仅支持Uniswap V3的0.05%费用级别(500)。其他费用等级(0.01%、0.3%、1%)不会自动尝试,这可能会错过替代池中更好的流动性。
  1. 无路由器聚合:报价直接从Uniswap V3池计算,不考虑可能无法提供最佳交换路由的替代路径或聚合器(1inch、Paraswap等)。
  1. 仅模拟:交易是模拟的,但不是在链上执行的。实际事务提交将需要超出此MCP服务器范围的额外签名和广播逻辑。
  1. 价格Oracle依赖:代币价格来自CoinGecko的免费API,该API有费率限制,可能无法反映实时DEX价格。这对于近似值是可以接受的,但不应用于精确的套利计算。
  1. 仅限主网:以太坊主网地址的硬编码(Uniswap V3合约、令牌地址)。支持测试网或第2层需要额外的配置和合约地址。
  1. 代币余额显示:ERC-20余额以原始令牌单位返回,没有十进制格式,如果不进行额外的客户端处理,很难解释大数字。
  1. 需要池可用性:输入令牌和输出令牌地址必须在所选费用级别具有现有的Uniswap V3池;否则交换将不会执行。
  1. 模拟的批准和平衡:由于没有发送交易,如果用户的帐户未获得路由器批准或缺乏足够的令牌余额,模拟仍然可能失败。
  1. 池相关价格计算:当前价格计算取决于查询链上的池地址;这增加了延迟,并可能使模拟比使用缓存定价服务慢。
  1. 未知错误:项目未完全测试,可能会出现未知行为。

发展

运行测试:

cargo test

格式代码:

cargo fmt

运行门楣:

cargo clippy

安全考虑

⚠️ 重要:这是一个用于以太坊区块链交互的实验性MCP服务器:

  1. 环境变量:从不承诺 .env 文件或私钥到版本控制。在生产中使用安全密钥管理。
  1. 私钥存储:The ETHEREUM_PRIVATE_KEY 直接加载环境变量。对于生产,考虑使用硬件钱包或安全密钥管理服务(AWS KMS、GCP Secret Manager等)。
  1. 只读模式:为了安全起见,服务器默认为只读模式。构建事务需要显式配置。
  1. 速率限制:公共RPC终结点有速率限制。为生产工作负载使用专用RPC提供程序(Infura、Alchemy)。
  1. 交易模拟:所有掉期交易都是模拟的。除非您构建自定义广播逻辑,否则不会执行任何实际事务。
  1. 输入验证:所有用户输入都经过验证,但生产使用可能需要额外的检查。

许可证

\[在此处添加您的许可证\]

贡献

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

目录标签

目录标签

区块链RustClaude以太坊本地部署AI代理代币交换JSON-RPC

支持客户端

Claude DesktopClaudeCline

接入字段

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

未说明

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

token

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明tokenremote-capable

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP