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 上限
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 installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/the-wunmi/lido-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server