Lido MCP Server
Provides tools for staking ETH, managing Lido positions, requesting withdrawals, and monitoring protocol stats on the Ethereum blockchain.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Lido MCP ServerStake 0.5 ETH for me"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Lido MCP Server
Synthesis Hackathon submission — Lido Finance bounty ($5,000 track)
An MCP (Model Context Protocol) 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 — all without writing a single line of smart contract code.
What Is This?
Think of this like a universal control interface between AI agents and Lido's staking contracts. Like a PLC that speaks plain English instead of ladder logic — the complexity of ABI encoding, gas estimation, and checkpoint hints is abstracted behind simple tool calls.
Any MCP-compatible AI (Claude, GPT-4, etc.) can now say:
"Stake 0.5 ETH for me"
"What's my current staking position?"
"Request a withdrawal of 1 stETH"
"What's the current APY?"
"Wrap my stETH into wstETH for use in Aave"
Related MCP server: Stacks AI MCP Server
Architecture
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...)Available Tools
Tool | Description | Requires Wallet |
| Full position: ETH, stETH, wstETH balances | No |
| Deposit ETH → receive stETH | Yes |
| stETH → withdrawal NFT | Yes |
| List all pending/finalized requests | No |
| Claim finalized withdrawal → ETH | Yes |
| stETH → wstETH (for DeFi protocols) | Yes |
| Current staking APY (SMA + last epoch) | No |
| Total staked, stakers, market cap | No |
| stETH amount → ETH value at live rate | No |
| Connected network and contract addresses | No |
Setup
Prerequisites
Install
git clone <this-repo>
cd lido-mcp-server
npm install
npm run buildEnvironment Variables
# 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⚠️ Security: Never expose your private key. Use a dedicated wallet for the agent with only the ETH you're comfortable having it manage. This is like giving someone a company card with a spending limit — not your main account.
Run
# Production
npm start
# Development
npm run devConnect to Claude Desktop
Add to your 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..."
}
}
}
}Connect to Claude Code / Any MCP Client
ETH_RPC_URL=<rpc> LIDO_NETWORK=holesky PRIVATE_KEY=0x... node dist/index.jsExample Conversations
Checking a position
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."Staking 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..."Monitoring 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%"Security Model
Read-only by default: Without
PRIVATE_KEY, all write operations return a clear error message. No accidental transactions.No key exposure: The private key is only used to sign transactions — it's never logged or returned in tool responses.
Testnet first: Default network is Holesky testnet. Explicitly set
LIDO_NETWORK=mainnetto use real funds.Balance checks: All stake/withdraw tools verify sufficient balance before broadcasting.
Withdrawal limits: Enforced at contract level + validated before submission to prevent failed transactions.
On-Chain Addresses
Mainnet
stETH:
0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84wstETH:
0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0WithdrawalQueue:
0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B4
Holesky (testnet)
stETH:
0x3F1c547b21f65e10480dE3ad8E19fAAE172E1fBfwstETH:
0x8d09a4502Cc8Cf1547aD300E066060D043f6982DWithdrawalQueue:
0xc7cc160b58F8Bb0baC94b80847E2CF2800565C50
Bounty Context (Lido Finance — $5,000)
This submission targets the reference MCP server sub-bounty:
"A reference MCP server so any AI can stake funds and manage positions through a natural language conversation ($5,000)"
What makes this more than a basic integration:
Full lifecycle coverage: stake → hold → wrap for DeFi → unwrap → withdraw → claim
Testnet-first design: Safe defaults, real credentials optional
Production error handling: Balance checks, finalization guards, chunk splitting for large withdrawals
Zero-setup read mode: APY, stats, and position queries work without any wallet
Composable: Designed so other agents can use this as a building block
License
MIT
This server cannot be installed
Maintenance
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Fitz8210/lido-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server