Lido MCP Server
Lido MCP 服务器
Lido 的参考 MCP 服务器 — stETH 质押、头寸管理、治理和收益金库监控,所有功能均可由任何 AI 智能体原生调用。
将 Claude、Cursor 或任何兼容 MCP 的智能体指向此服务器,即可在对话中质押 ETH。无需任何自定义集成代码。
为什么存在此项目
AI 智能体需要与 DeFi 协议交互,但将自然语言桥接到链上交易非常困难——涉及私钥、Gas 估算、协议特性(stETH 重定价)和交易安全性。此 MCP 服务器为智能体提供了一个结构化、安全的 Lido 交互界面:
所有写入操作均支持试运行模拟 — 智能体在执行前可预览 Gas 成本并验证交易
思维模型文档 (
lido.skill.md) — 在智能体行动前教授其 Lido 概念,如重定价机制、wstETH 与 stETH 的权衡、安全的质押模式带有智能警报的实时金库监控 — 监控 Lido Earn 金库的收益变化、TVL 波动、份额价格异常以及协议分配转移(Aave、Morpho、Pendle、Gearbox、Maple),并通过 Telegram 或电子邮件以通俗语言发送警报
灵活的规则引擎 — 定义如
apr < 3.0或spread_vs_steth < -0.5这样可读的警报条件,并自动与 stETH 基准进行比较AI 驱动的解释 — 可选使用 Claude 将原始金库事件翻译成通俗语言消息,解释发生了什么、原因以及是否需要采取行动
安全护栏 — 提供
read-only(只读)、dry-run-only(仅试运行)和full(完全)模式,以及接收者白名单和每笔交易的 ETH 上限
Related MCP server: Lido MCP Server
MCP 服务器
70+ 个工具,涵盖质押、治理、金库监控和 L2 — 所有写入操作默认 dry_run: true。
类别 | 工具 |
查询 |
|
智能分析 |
|
质押 / 封装 / 提款 |
|
治理 | 双重治理状态 + 在否决托管中锁定/解锁 stETH,Aragon DAO 投票/分析/解码,Snapshot 提案 + 投票,Easy Track 动议 + 反对,投票权 + 否决阈值 + 时间线 |
收益金库监控 |
|
stVaults V3 | 列出、检查、注资、提款、暂停/恢复信标存款、铸造/销毁份额、再平衡、创建金库、请求验证者退出 |
协议信息 | TVL、费用结构、质押模块、节点运营商、合约地址 |
代币管理 | 代币信息、额度、批准、转账、撤销 stETH/wstETH/LDO 权限 |
提款 NFT | 所有者查询、转账、批准 |
L2 wstETH | Base/Optimism/Arbitrum 上的余额、转账、信息 + 11 个 L2 上的跨链余额 |
L2 stETH | Optimism 上的重定价 stETH 余额 + 转账 |
6 个引导式提示词 — 用于质押 (stake-eth-safely)、头寸分析 (manage-position)、提款 (withdraw-steth)、治理审查 (review-governance)、金库管理 (manage-vault) 和治理参与 (participate-governance) 的多步工作流。
4 个实时资源 — lido://position/{address}, lido://protocol/status, lido://governance/state, lido://governance/votes。
智能体思维模型 (lido.skill.md) — 见上文“为什么存在此项目”。
关键设计决策
真实 SDK,无模拟 — 所有操作均通过
@lidofinance/lido-ethereum-sdk和viem直接与以太坊合约交互默认试运行 — 每个改变状态的工具默认
dry_run: true。智能体必须显式设置dry_run: false才能执行协议感知错误 — 原始区块链错误(资金不足、回滚、Nonce 冲突、质押限制、已暂停)会被翻译成人类可读的消息
MCP 注解 — 每个工具都声明了
readOnlyHint、destructiveHint、idempotentHint和openWorldHint,以便智能体知道哪些工具可以在无需确认的情况下安全调用L2 感知 — 将
LIDO_CHAIN_ID设置为 Base、Optimism 或 Arbitrum,服务器将仅暴露 wstETH 相关工具;仅限 L1 的工具会自动排除
收益金库监控
监控 Lido Earn 金库(EarnETH, EarnUSD),并在发生值得关注的变化时通知存款人——使用通俗语言,而非原始数据。
工作原理
监控金库 — 使用金库地址调用
lido_watch_vault(使用lido_list_earn_vaults查找地址)定义警报规则 — 将条件编写为针对实时金库数据评估的可读表达式
接收警报 — 当规则触发时,通过 Telegram 或电子邮件接收通知,并附带 AI 生成的解释
监控器持续运行:
订阅每个金库的链上
Deposit(存款)/Withdraw(提款) 事件,以及 stETH 的TokenRebased事件,以实现近乎实时的反应作为后备,运行 30 秒轮询 健康检查
每次检查时将金库 APR 与来自 Lido API 的 stETH SMA APR 进行比较
检测协议分配转移 — 通过读取已知 Lido Earn 金库的链上子金库余额,监控底层协议(Aave、Morpho、Pendle、Gearbox、Maple)的分配变化
SQLite 持久化 — 所有状态(监控、快照、警报、去重)均保存在 SQLite 中,重启后依然有效
6 小时去重 — 每个金库的每条规则均有 6 小时去重窗口,防止警报疲劳
警报发送
Telegram — 格式化的警报,包含严重程度指标、金库上下文、基准比较和可操作的建议
电子邮件 — 带有相同上下文的 HTML 格式警报
AI 解释(可选) — 当设置了
ANTHROPIC_API_KEY时,每个警报都会发送给 Claude,生成包含以下内容的通俗语言解释:发生了什么 — 触发警报的具体指标
可能的原因 — 基于数据的合理推测
建议考虑事项 — 存款人应该采取行动、等待还是进一步调查
规则引擎
规则不是一组固定的预定义警报,而是你通过智能体以自然语言定义的开放式表达式。告诉 Claude “如果收益率低于 3% 就提醒我”,它会编写规则 apr < 3.0。说“如果金库表现开始落后于 stETH 超过 0.5%,且 TVL 也在下降,请通知我”,它会组合出 spread_vs_steth < -0.5 and tvl_change_pct < 0。智能体将你的意图翻译成针对实时金库指标评估的 mathjs 表达式:
变量 | 说明 |
| 当前金库 APR (%) |
| 上次快照的 APR |
| 快照间的 APR 变化(百分点) |
| 总锁定价值 |
| 上次快照的 TVL |
| TVL 变化百分比 |
| 当前份额价格(资产/份额) |
| 上次快照的份额价格 |
| 份额价格变化百分比 |
| stETH SMA APR 基准(来自 Lido API) |
| 金库 APR 减去 stETH APR(正数表示表现优于基准) |
| 快照间最大的协议分配变化(百分点) |
| 具有活跃分配的协议数量 |
| 单一协议的最大分配比例 (%) |
规则示例:
表达式 | 触发条件 |
| 收益率低于 3% — 简单的收益率下限 |
| 金库表现落后于原始 stETH 质押 |
| 金库表现落后于 stETH 超过 0.5 个百分点 |
| 检查间 TVL 下降 >10% — 资本外逃 |
| 份额价格下跌 — 可能存在漏洞或脱钩 |
| 收益率下降且资本流出 |
| APR 出现大幅波动 |
| 落后于 stETH 基准超过 1 个百分点 |
| APR 飙升至之前值的 1.5 倍 |
| 协议分配变动超过 10 个百分点 |
| 单一协议持有超过 80% 的金库资本 |
支持 and/or/not 布尔逻辑、比较运算符 (<, >, <=, >=, ==, !=)、算术运算 (+, -, *, /) 以及安全数学函数 (abs, min, max, round, floor, ceil, sqrt)。
每条规则都包含一个带有 {{variable}} 插值的消息模板:
APR dropped to {{apr}}%, below your 3% floor. stETH is at {{steth_apr}}%.如果未提供消息,则会根据表达式模式自动生成。
规则引擎是沙盒化的 — 表达式被解析为 AST,并根据变量、函数和节点类型的白名单进行验证。无任意代码执行风险。
协议分配检测
对于已知的 Lido Earn 金库(strETH/EarnETH),监控器会读取每个金库子金库的链上余额,以确定资本如何在底层协议(Aave、Morpho、Pendle、Gearbox、Maple 等)之间分配。每次健康检查都会将当前分配与上次快照进行比较并检测变化。
分配数据出现在:
健康报告 (
lido_check_vault) — 显示各协议的百分比明细警报上下文 — 当任何规则触发时,警报包含分配转移详情(协议名称、变动前后的百分比、差值)
AI 解释 — LLM 接收分配转移数据,并能以通俗语言解释再平衡事件
规则变量 —
max_alloc_shift、num_protocols和top_alloc_pct允许你编写如max_alloc_shift > 10的规则(当任何协议的份额变动超过 10 个百分点时发出警报)
MCP 可调用的金库健康状况
其他智能体可以以编程方式查询金库健康状况 — 监控器不仅是一个通知服务,还是一个构建模块:
lido_check_vault— 针对任何 ERC-4626 金库的按需健康检查(无需监控)。返回 APR、TVL、份额价格和 stETH 基准差值lido_list_earn_vaults— 从实时 API 发现可用的 Mellow 收益金库lido_get_vault_alerts— 以编程方式查询警报历史
目标用例
1. 开发者通过 Claude 质押 ETH — 无需集成代码
User: "Stake 1 ETH with Lido"
Claude: Let me walk you through this safely.
→ Checks protocol status (not paused, limits ok)
→ Checks your balance (1.5 ETH available)
→ Shows current APR (3.4%, 7-day SMA 3.3%)
→ Dry-runs the transaction (gas: 0.002 ETH)
→ "Ready to stake 1 ETH. Gas cost ~0.002 ETH. Confirm?"
User: "Yes"
Claude: → Executes stake
→ "Done. TX: 0xabc... You received 1.0 stETH."2. 存款人收到 Telegram 消息,解释 EarnETH 收益率隔夜下降的原因
User: "Watch the EarnETH vault. Alert me if yield drops below 4%
or it falls behind raw stETH staking."
Claude: → Discovers vault via lido_list_earn_vaults
→ Calls lido_watch_vault with rules:
- apr < 4.0 [warning]
- spread_vs_steth < 0 [critical]
→ "Watching EarnETH (0x...). APR: 5.2%, TVL: 12,450 ETH.
You'll get a Telegram alert if APR drops below 4%
or the vault underperforms stETH."
[Overnight, APR drops to 3.6%]
Telegram: 🚨 EarnETH — Warning
APR dropped to *3.60%*, down from 5.20%.
The vault's yield fell 1.6pp since the last check. This likely
reflects a rotation in the underlying strategy or temporary
market conditions. The vault is still outperforming direct stETH
staking (3.40%) by 0.20pp, so no immediate action is needed —
but worth monitoring if the trend continues.
• Current APR: 3.60%
• Previous APR: 5.20%
• stETH benchmark: 3.40%
• Spread vs stETH: 0.20pp above
View on Etherscan3. 智能体在决定存款前查询金库健康状况
Agent: → Calls lido_check_vault(address="0x...")
Response:
=== Vault Health: EarnETH ===
TVL: 12,450.00 ETH
Share Price: 1.034521 ETH/share
APR: 5.20%
--- Benchmark ---
stETH APR (SMA): 3.40%
Spread: 1.80pp above stETH benchmark
--- Protocol Allocations ---
Aave: 32.1%
Morpho: 28.4%
Pendle: 18.7%
Gearbox: 12.3%
Maple: 8.5%
Last checked: 2025-03-23T14:30:00.000Z
Agent: → Diversified allocation, positive spread — decides to deposit4. 自然语言规则配置
User: "I want to know if the vault starts doing worse than just
holding stETH, especially if people are also pulling money out.
And give me a heads up if the share price ever drops suddenly —
that could mean something bad happened."
Claude: I'll set up three rules for you.
→ Calls lido_add_rule: "spread_vs_steth < 0 and tvl_change_pct < -5" [warning]
Message: "Vault underperforming stETH (spread {{spread_vs_steth}}pp)
while TVL dropped {{tvl_change_pct}}%"
→ Calls lido_add_rule: "share_price_change_pct < -0.1" [critical]
Message: "Share price dropped {{share_price_change_pct}}% — investigate immediately"
→ Calls lido_add_rule: "spread_vs_steth < -1.0" [critical]
Message: "Vault is {{spread_vs_steth}}pp behind stETH — significant underperformance"
"Done. Three rules active:
1. Warning if the vault trails stETH while TVL is declining
2. Critical alert on any sudden share price drop (>0.1%)
3. Critical if the vault falls more than 1pp behind stETH
Dry-ran all three against current data — none would fire right now
(APR 5.2% vs stETH 3.4%, TVL stable). You'll get alerts the
moment any condition is met."5. DAO 贡献者查询并投票参与治理提案
User: "Show me the latest Lido DAO votes"
Claude: → Calls lido_get_aragon_vote
→ "Vote #185: Open — Yea 15.2M LDO (92%), Nay 1.3M LDO (8%)
Vote #184: Executed — passed with 98% support ..."
User: "Vote yes on #185"
Claude: → Calls lido_vote_on_proposal (dry_run=true)
→ "Dry run: Vote Yea on #185. You have 5,000 LDO. Gas: ~0.001 ETH. Confirm?"
User: "Yes"
Claude: → Executes vote
→ "Done. Voted Yea on #185. TX: 0xabc..."6. 质押者通过双重治理发出反对信号
User: "I want to signal opposition to the latest proposal."
Claude: → Calls lido_get_governance_state
→ "Governance is in Normal state. Veto signalling is at 0.12%,
well below the first seal threshold of 1%."
→ Dry-runs lock of 10 stETH in escrow
→ "Ready to lock 10 stETH for governance. Gas: ~0.003 ETH. Confirm?"
User: "Yes"
Claude: → Approves stETH for escrow + locks
→ "Done. 10 stETH locked in veto signalling escrow. TX: 0xdef..."设置
git clone <repo-url>
cd lido-mcp-server
cp .env.example .env # edit with your RPC URL, private key, chain ID
npm install && npm run build && npm start查看 .env.example 获取所有配置选项(链 ID、安全模式、Telegram、SMTP、Anthropic)。
连接到 Claude / Cursor
{
"mcpServers": {
"lido": {
"command": "bash",
"args": ["/path/to/lido-mcp-server/start.sh"],
"env": {
"LIDO_RPC_URL": "https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY",
"LIDO_PRIVATE_KEY": "0xYOUR_PRIVATE_KEY",
"LIDO_CHAIN_ID": "1"
}
}
}
}许可证
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Lido - 6 tools for staking, delegation, and rewards data
DeFi safety layer for AI agents: wallet safety, token risk, tx decode/simulate. 20 tools.
Crypto yield data for AI agents: lending, savings, staking, borrowing & stablecoin rates. 18 tools.
Native Solana staking for AI agents. 26 MCP tools, one-shot signing, webhooks.
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables AI agents to interact with any EVM-compatible blockchain through natural language, supporting token swaps, cross-chain bridges, staking, lending, governance, gas optimization, and portfolio tracking across networks like Ethereum, BSC, Polygon, Arbitrum, and more.10030 npm41-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to perform Lido staking operations (stake, unstake, wrap, unwrap, check balances/rewards) via natural language.5 npm1MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that gives any AI agent full access to Lido Finance's staking infrastructure through natural language. Stake ETH, manage positions, request withdrawals, and monitor protocol stats.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to safely interact with Ethereum by providing structured tools for reading blockchain state, simulating transactions, and drafting transactions that require human-in-the-loop approval.7 npmISC