Lido MCP服务器

一个通过自然语言让AI代理完全访问Lido Finance质押基础设施的模型上下文协议服务器。

  • by Fitz8210
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Fitz8210/lido-mcp-server

使用说明

丽都MCP服务器

合成黑客马拉松提交——丽都金融赏金(5000美元曲目)

一个MCP(模型上下文协议)服务器,允许任何AI代理通过自然语言完全访问丽都金融的质押基础设施。质押ETH、管理头寸、请求提款和监控协议统计数据——所有这些都不需要编写一行智能合约代码。


这是什么?

将其视为AI代理和Lido质押合约之间的通用控制接口。就像一个讲简单英语而不是梯形逻辑的PLC一样,ABI编码、气体估计和检查点提示的复杂性被抽象到简单的工具调用后面。

任何兼容MCP的AI(Claude、GPT-4等)现在都可以说:

  • “为我下注0.5 ETH”
  • “我目前的赌注是多少?”
  • “请求提取1 stETH”
  • “当前的APY是什么?”
  • “将我的stETH打包到wstETH中,以便在Aave中使用”

建筑

AI Agent (Claude/GPT)
       │  MCP Protocol (stdio)
       ▼
┌─────────────────────────┐
│   Lido MCP Server       │
│  ┌───────────────────┐  │
│  │  Tool Registry    │  │  ← 10 tools exposed
│  │  (index.ts)       │  │
│  └────────┬──────────┘  │
│           │              │
│  ┌────────▼──────────┐  │
│  │   Lido Client     │  │  ← ethers.js blockchain calls
│  │  (lido-client.ts) │  │
│  └────────┬──────────┘  │
└───────────┼─────────────┘
            │  JSON-RPC
            ▼
    Ethereum Node (RPC)
            │
            ▼
    Lido Smart Contracts
    ├── stETH (0xae7ab96...)
    ├── wstETH (0x7f39C5...)
    └── WithdrawalQueue (0x889ed...)

可用工具

工具 描述 需要钱包
get_staking_position 完整头寸:ETH、stETH、wstETH余额 否
stake_eth 存入ETH→ 接收stETH 是
request_withdrawal stETH→ 提款NFT 是
get_withdrawal_requests 列出所有待处理/已完成的请求 否
claim_withdrawal 索赔最终撤回→ ETH 是
wrap_to_wsteth stETH→ wstETH(用于DeFi协议) 是
get_lido_apy 当前质押APY(SMA+最后一个纪元) 否
get_protocol_stats 总赌注、赌注者、市值 否
convert_steth_to_eth stETH金额→ 按实时汇率计算的ETH值 否
get_network_info 已连接的网络和合同地址 否

设置

先决条件

安装

git clone <this-repo>
cd lido-mcp-server
npm install
npm run build

环境变量

# Required
ETH_RPC_URL=https://eth-holesky.g.alchemy.com/v2/YOUR_KEY

# Network (mainnet | holesky | goerli) — default: holesky
LIDO_NETWORK=holesky

# Optional — enables staking/withdrawal transactions
PRIVATE_KEY=0xYOUR_PRIVATE_KEY

# Optional — referral address for Lido (get a cut of fees)
LIDO_REFERRAL=0xYOUR_REFERRAL_ADDRESS

⚠️ 安全:永远不要暴露你的私钥。为代理人使用专用钱包,只使用您可以放心管理的ETH。这就像给某人一张有消费限额的公司卡,而不是你的主账户。

跑

# Production
npm start

# Development
npm run dev

连接到克劳德桌面

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "lido": {
      "command": "node",
      "args": ["/path/to/lido-mcp-server/dist/index.js"],
      "env": {
        "ETH_RPC_URL": "https://eth-holesky.g.alchemy.com/v2/YOUR_KEY",
        "LIDO_NETWORK": "holesky",
        "PRIVATE_KEY": "0x..."
      }
    }
  }
}

连接到克劳德代码/任何MCP客户端

ETH_RPC_URL=<rpc> LIDO_NETWORK=holesky PRIVATE_KEY=0x... node dist/index.js

对话示例

检查位置

User: How much have I staked on Lido?
Claude: [calls get_staking_position with your address]
→ "You have 2.4731 stETH (worth ~2.4819 ETH) and 0 wstETH on holesky."

抵押ETH

User: Stake 0.1 ETH for me
Claude: [calls stake_eth with eth_amount: "0.1"]
→ "Successfully staked 0.1 ETH and received 0.0997 stETH.
   Transaction: https://holesky.etherscan.io/tx/0x..."

监控APY

User: What's the current Lido yield?
Claude: [calls get_lido_apy]
→ "Current Lido staking APY: 3.82% (7-day SMA). Most recent epoch: 3.91%"

安全模型

  • 默认情况下为只读:没有 PRIVATE_KEY,所有写入操作都会返回一条明确的错误消息。没有意外交易。
  • 无关键风险:私钥仅用于对交易进行签名,它从不记录或在工具响应中返回。
  • 先测试网:默认网络是Holesky测试网。明确设置 LIDO_NETWORK=mainnet 使用实际资金。
  • 余额检查:所有投注/提款工具在播放前都会验证是否有足够的余额。
  • 提款限额:在合同层面强制执行+在提交前进行验证,以防止交易失败。

链上地址

主网

  • stETH: 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84
  • wstETH: 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0
  • 提款队列: 0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B4

Holesky(测试网)

  • stETH: 0x3F1c547b21f65e10480dE3ad8E19fAAE172E1fBf
  • wstETH: 0x8d09a4502Cc8Cf1547aD300E066060D043f6982D
  • 提款队列: 0xc7cc160b58F8Bb0baC94b80847E2CF2800565C50

赏金背景(丽都金融——5000美元)

本次提交针对的是 参考MCP服务器 子赏金:

“一个参考MCP服务器,因此任何人工智能都可以通过自然语言对话来下注和管理头寸(5000美元)”

是什么让这不仅仅是一个基本的整合:

  1. 全生命周期覆盖:股份→ hold → DeFi包装→ 解包→ 撤回→ claim
  2. 测试网优先设计:安全默认值,真实凭据可选
  3. 生产错误处理:余额检查、定稿保护、大额提款的区块分割
  4. 零设置读取模式:APY、统计数据和位置查询无需任何钱包即可使用
  5. 可组合:设计为其他代理可以将其用作构建块

许可证

麻省理工学院