graph-lido-mcp

Tango86/graph-lido-mcp
0 starsCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

MCP server for querying Lido liquid staking protocol data via The Graph's decentralized network, providing tools for staking stats, APR, withdrawals, node operators, and governance.

README.md

graph-lido-mcp

MCP server for querying Lido liquid staking protocol data via The Graph's decentralized network.

16 tools, 5 guided prompts. Staking stats, APR history, withdrawals, node operators, governance, and more.

Setup (30 seconds)

  1. Get a free API key from Subgraph Studio
  1. Add to your MCP client config:
{
  "mcpServers": {
    "graph-lido": {
      "command": "npx",
      "args": ["-y", "graph-lido-mcp"],
      "env": {
        "GRAPH_API_KEY": "your-api-key"
      }
    }
  }
}

Works with Claude Desktop, Cursor, Cline, and any MCP-compatible client.

Tools

Protocol Stats

  • get_lido_stats - Total pooled ETH, shares, unique holders, fee structure, staking status, withdrawal queue status
  • get_staking_apr - APR history from oracle reports with fee breakdown and MEV fees

Staking Activity

  • get_recent_submissions - Recent stETH deposits with amounts, shares received, referrals
  • get_recent_transfers - stETH token transfers with optional address and minimum value filters
  • get_holder_shares - Look up any address's current stETH share balance and computed ETH value

Withdrawals

  • get_withdrawal_requests - Pending withdrawal requests (unstaking)
  • get_withdrawal_claims - Completed withdrawals (ETH received)
  • get_withdrawals_finalized - Finalization batches (ETH locked, shares burned)
  • get_shares_burns - Share burn events from withdrawal processing

Node Operators

  • get_node_operators - Professional validator operators: names, staking limits, stopped validators

Oracle

  • get_oracle_reports - Beacon chain balance and validator count per epoch

Governance

  • get_governance_votes - Lido DAO Aragon votes with proposal metadata
  • get_vote_details - Individual voter records for a specific proposal
  • get_easytrack_motions - Lightweight governance motions for routine operations

Escape Hatch

  • get_lido_schema - Introspect the full GraphQL schema
  • query_lido_subgraph - Run any raw GraphQL query

Guided Prompts

| Prompt | Description | |--------|-------------| | staking_overview | Total ETH staked, current APR trend, recent deposits, holder count | | withdrawal_monitor | Queue health, pending requests, recent claims, net flow direction | | governance_digest | Recent DAO votes, EasyTrack motions, contentious decisions | | node_operator_analysis | Operator set diversity, stopped validators, staking limits | | whale_tracker | Large deposits, big transfers, whale withdrawal patterns |

Example Prompts

"What is the current Lido staking APR?"
"How much total ETH is staked with Lido?"
"Show me whale deposits over 100 ETH"
"Who are Lido's node operators?"
"What's the withdrawal queue status?"
"Show me recent DAO governance votes"
"Look up the stETH balance for 0x..."
"What EasyTrack motions were enacted this month?"

Known Limitations

shares_collection vs shares

The Lido subgraph uses _collection suffix for plural entity queries (e.g., shares_collection, totals_collection). Standard GraphQL plural naming (shares) refers to the singular lookup requiring an id argument. If writing raw queries via query_lido_subgraph, use the _collection suffix to query multiple entities.

totals(id: "") convention

The Lido subgraph stores singleton entities (like protocol-wide totals) using an empty string as their ID. This is unusual but intentional. Raw queries for totals should use totals(id: "").

Data Source

All data is queried from Lido's official subgraph deployed on The Graph's decentralized network. Every query generates fees for Indexers on the network. 13 active Indexers serve this subgraph.

License

MIT

Related MCP servers

Browse all →