npx @moly-mcp/lido

Zero-config Lido MCP Server you can run instantly with npx — no local setup required.

What is it?

@moly-mcp/lido is a standalone npm package that runs a full Lido MCP server on your machine. Any MCP-compatible AI client (Claude Desktop, Cursor, Windsurf) can connect to it and interact with Lido staking, withdrawals, wrapping, and governance — without you writing a single line of code.

💡
The private key and API keys are stored locally in ~/.moly/config.json (chmod 600). They never leave your machine.

Quick start

Terminal
# Run once — wizard launches on first use
npx @moly-mcp/lido

The interactive wizard walks you through network, mode, optional private key, and AI provider selection. When done it prints the exact config snippet to paste into your AI client.

Commands

CommandDescription
npx @moly-mcp/lidoFirst run: wizard → MCP server. Subsequent runs: start server directly
moly setupRe-run the full setup wizard
moly configPrint current configuration (keys redacted)
moly resetDelete ~/.moly/config.json and start fresh
npx @moly-mcp/lido --serverForce-start MCP server (use this in AI client configs)

Add to your AI client

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "moly": {
      "command": "npx",
      "args": ["@moly-mcp/lido", "--server"]
    }
  }
}

Cursor

~/.cursor/mcp.json
{
  "mcpServers": {
    "moly": {
      "command": "npx",
      "args": ["@moly-mcp/lido", "--server"]
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "moly": {
      "command": "npx",
      "args": ["@moly-mcp/lido", "--server"]
    }
  }
}

Available tools

Once connected, your AI client has access to all 28 tools:

ToolTypeDescription
get_balanceReadETH, stETH, wstETH balances
get_rewardsReadStaking reward history over N days
get_conversion_rateReadstETH ↔ wstETH exchange rate
get_withdrawal_requestsReadPending withdrawal NFT IDs
get_withdrawal_statusReadFinalization status per request
get_proposalsReadRecent Lido DAO proposals
get_proposalReadSingle proposal details
get_total_positionReadCross-chain aggregated position (ETH + Base + Arbitrum)
get_boundsReadCurrent policy bounds
get_trade_historyReadQuery activity ledger with filters
get_staking_summaryReadAggregate ledger stats
get_settingsReadCurrent mode, network, RPC
stake_ethWriteStake ETH → receive stETH
request_withdrawalWriteEnter Lido withdrawal queue
claim_withdrawalsWriteClaim finalized withdrawals
wrap_stethWritestETH → wstETH
unwrap_wstethWritewstETH → stETH
cast_voteWriteVote on Lido DAO proposal
set_boundsWriteUpdate policy bounds
update_settingsWriteChange mode/network/RPC mid-conversation
get_l2_balanceBridgeL2 balances on Base or Arbitrum (mainnet only)
get_bridge_quoteBridgeQuote for bridging to Ethereum L1
bridge_to_ethereumBridgeBridge ETH/wstETH from L2 to L1
get_bridge_statusBridgeTrack in-progress bridge transaction
set_alertAlertCreate alert rule
list_alertsAlertList all configured alerts
remove_alertAlertRemove alert by ID
configure_alert_channelsAlertSet Telegram/webhook notification config
All write tools support dry_run. In simulation mode, dry_run defaults to true — nothing is ever broadcast unless you explicitly set it to false and switch to live mode. Bridge tools only work on mainnet.