Indigo Protocol MCP
Indigo MCP MCP server for Indigo Protocol — exposes Indigo iAsset data, prices, and CDP/loan analytics to LLM agents via the Model Context Protocol.
What it can do
- Get Tvl: Get historical TVL data from DefiLlama
- Get Apr Rewards: Get all APR reward records
- Get Apr By Key: Get APR for a specific key
What data it sees
Do you need an account
No: the server works without sign-in
Indigo MCP
MCP server for Indigo Protocol — exposes Indigo iAsset data, prices, and CDP/loan analytics to LLM agents via the Model Context Protocol.
Features
- Real-time iAsset prices (iUSD, iBTC, iETH, iSOL)
- ADA and INDY token price feeds
- CDP/loan browsing with pagination and filtering
- Owner lookup by payment key hash or bech32 address
- CDP health analysis with collateral ratio and liquidation risk status
- Stability pool state and account queries
- INDY staking positions and manager state
- Protocol analytics: TVL, APR rewards, DEX yields, aggregated stats
- Governance: protocol parameters, polls, temperature checks
- Redemption order book and queue aggregation
- DEX proxy: Steelswap swaps, Iris liquidity pools, Blockfrost balances
- CDP liquidation, redemption, freeze, and merge operations
- Leveraged CDP opening via LRP positions
- LRP (Limit Redemption Protocol) position management
- Oracle interest rate feeding and initialization
- Stability pool request processing and cancellation
- Staking reward distribution
- Collector UTXOs, IPFS storage and retrieval
Quick Start
Install globally:
npm install -g @indigoprotocol/indigo-mcp
Or run directly with npx (no install needed):
npx @indigoprotocol/indigo-mcp
Docker
docker build -t indigo-mcp .
docker run -i indigo-mcp
HTTP Transport (Remote)
The server supports HTTP transport for remote/hosted deployments:
MCP_TRANSPORT=http PORT=3000 npx @indigoprotocol/indigo-mcp
This starts an HTTP server with:
POST /mcp— MCP endpoint (Streamable HTTP with SSE)GET /health— Health check
Configuration
Note:
BLOCKFROST_API_KEYis required for write operations (transaction building). Read-only tools work without it. Get a free key at blockfrost.io.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"indigo": {
"command": "npx",
"args": ["-y", "@indigoprotocol/indigo-mcp"],
"env": {
"INDEXER_URL": "https://analytics.indigoprotocol.io/api/v1",
"BLOCKFROST_API_KEY": "your-blockfrost-project-id"
}
}
}
}
Claude Code (CLI)
Add to ~/.claude/settings.json or .claude/settings.json in your project:
{
"mcpServers": {
"indigo": {
"command": "npx",
"args": ["-y", "@indigoprotocol/indigo-mcp"],
"env": {
"INDEXER_URL": "https://analytics.indigoprotocol.io/api/v1",
"BLOCKFROST_API_KEY": "your-blockfrost-project-id"
}
}
}
}
Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project-level):
{
"mcpServers": {
"indigo": {
"command": "npx",
"args": ["-y", "@indigoprotocol/indigo-mcp"],
"env": {
"INDEXER_URL": "https://analytics.indigoprotocol.io/api/v1",
"BLOCKFROST_API_KEY": "your-blockfrost-project-id"
}
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"indigo": {
"command": "npx",
"args": ["-y", "@indigoprotocol/indigo-mcp"],
"env": {
"INDEXER_URL": "https://analytics.indigoprotocol.io/api/v1",
"BLOCKFROST_API_KEY": "your-blockfrost-project-id"
}
}
}
}
Any MCP-Compatible Client
Run the server directly via stdio:
INDEXER_URL=https://analytics.indigoprotocol.io/api/v1 \
BLOCKFROST_API_KEY=your-blockfrost-project-id \
npx @indigoprotocol/indigo-mcp
Or install globally and reference the binary:
npm install -g @indigoprotocol/indigo-mcp
indigo-mcp
For any client that supports MCP over stdio, point it to the npx @indigoprotocol/indigo-mcp command with the environment variables above.
Environment Variables
INDEXER_URL— Indigo analytics API base URL (default:https://analytics.indigoprotocol.io/api/v1)BLOCKFROST_API_KEY— Blockfrost project ID for transaction building (required for write ops)CARDANO_NETWORK— Cardano network:mainnet,preprod, orpreview(default:mainnet)MCP_TRANSPORT— Transport mode:stdioorhttp(default:stdio)PORT— HTTP server port whenMCP_TRANSPORT=http(default:3000)
Example Queries
When connected to an LLM agent, you can ask natural language questions like:
- "What are the current prices of all Indigo iAssets?"
- "What is the price of iUSD right now?"
- "How much is ADA worth in USD?"
- "Show me all iETH CDPs"
- "What CDPs does this address own?" (paste a Cardano address)
- "Analyze the health of my CDPs" (with your address or payment key hash)
- "Are any of my positions at risk of liquidation?"
- "Show me the current stability pool state"
- "What are my stability pool deposits?" (with your address)
- "How much INDY am I staking?" (with your address)
- "What's the current TVL of Indigo?"
- "What APR can I earn on iUSD stability pool?"
- "What are the current governance protocol parameters?"
- "Show me the iUSD redemption queue"
- "Get a Steelswap estimate for swapping 100 ADA to iUSD"
- "What are the current DEX yields for iAsset pairs?"
Server tool list (60)
Raw names from tools/list. Only developers need these.
| get_tvl | Get historical TVL data from DefiLlama |
| get_apr_rewards | Get all APR reward records |
| get_apr_by_key | Get APR for a specific key |
| get_dex_yields | Get DEX farm yields for iAsset pairs |
| get_protocol_stats | Get aggregated protocol statistics |
| get_assets | Get all Indigo iAssets with prices and interest data |
| get_asset | Get details for a specific Indigo iAsset |
| get_asset_price | Get the current price for a specific Indigo iAsset |
| get_ada_price | Get the current ADA price in USD |
| get_indy_price | Get the current INDY token price in ADA and USD |
| get_all_cdps | Get all CDPs/loans, optionally filtered by iAsset |
| get_cdps_by_owner | Get all CDPs/loans for a specific owner (accepts payment key hash or bech32 address) |
| get_cdps_by_address | Get all CDPs/loans for a specific Cardano address |
| analyze_cdp_health | Analyze health and collateral ratios of CDPs for an owner |
| mint_cdp | Mint additional iAssets from an existing CDP (increases debt) — builds an unsigned transaction (CBOR hex) for client-side signing |
| burn_cdp | Burn iAssets to reduce CDP debt — builds an unsigned transaction (CBOR hex) for client-side signing |
| open_cdp | Open a new CDP position — builds an unsigned transaction (CBOR hex) for client-side signing |
| deposit_cdp | Deposit additional collateral into a CDP — builds an unsigned transaction (CBOR hex) for client-side signing |
| withdraw_cdp | Withdraw collateral from a CDP — builds an unsigned transaction (CBOR hex) for client-side signing |
| close_cdp | Close a CDP and reclaim collateral — builds an unsigned transaction (CBOR hex) for client-side signing |
| liquidate_cdp | Liquidate an undercollateralized CDP through the stability pool — builds an unsigned transaction (CBOR hex) for client-side signing |
| redeem_cdp | Redeem iAssets from a CDP — builds an unsigned transaction (CBOR hex) for client-side signing. To redeem the maximum possible, pass the total minted amount. |
| freeze_cdp | Freeze a CDP to prevent further operations until unfrozen — builds an unsigned transaction (CBOR hex) for client-side signing |
| merge_cdps | Merge multiple CDPs into one — builds an unsigned transaction (CBOR hex) for client-side signing |
| get_collector_utxos | Get collector UTXOs for fee distribution |
| store_on_ipfs | Store text content on IPFS |
| retrieve_from_ipfs | Retrieve content from IPFS by CID |
| get_steelswap_tokens | Get all tokens available on Steelswap DEX |
| get_steelswap_estimate | Get a swap estimate from Steelswap DEX |
| get_iris_liquidity_pools | Get liquidity pools from Iris, optionally filtered by tokens or DEX |
| get_blockfrost_balances | Get token balances for a Cardano address via Blockfrost |
| get_protocol_params | Get latest governance protocol parameters |
| get_temperature_checks | Get temperature check polls |
| get_sync_status | Get indexer sync status |
| get_polls | Get all governance polls |
| leverage_cdp | Open a leveraged CDP by redeeming against LRP positions — builds an unsigned transaction (CBOR hex) for client-side signing |
| open_lrp | Open a new LRP (Limit Redemption Protocol) position with ADA and a max price limit. Returns an unsigned transaction (CBOR hex) for client-side signing. |
| cancel_lrp | Cancel an existing LRP position. Returns an unsigned transaction (CBOR hex) for client-side signing. |
| adjust_lrp | Adjust ADA amount in an LRP position (positive to increase, negative to decrease). Optionally update the max price. Returns an unsigned transaction (CBOR hex) for client-side signing. |
| claim_lrp | Claim received iAssets from an LRP position. Returns an unsigned transaction (CBOR hex) for client-side signing. |
| redeem_lrp | Redeem iAssets against one or more LRP positions. Returns an unsigned transaction (CBOR hex) for client-side signing. |
| feed_interest_oracle | Feed a new interest rate to the interest oracle for a given iAsset. Returns an unsigned transaction (CBOR hex) for client-side signing. Only callable by the oracle operator. |
| start_interest_oracle | Initialize a new interest oracle (one-time admin setup). Returns an unsigned transaction (CBOR hex) and the minted oracle asset class. Only callable by protocol administrators. |
| get_order_book | Get open limited redemption positions from the order book, optionally filtered by asset or owners |
| get_redemption_orders | Get redemption orders, optionally filtered by timestamp or price range |
| get_redemption_queue | Get aggregated redemption queue for a specific iAsset, sorted by max price ascending |
| process_sp_request | Process a pending stability pool request (protocol maintenance operation). Returns an unsigned transaction (CBOR hex) for client-side signing. |
| annul_sp_request | Cancel a pending stability pool request. Returns an unsigned transaction (CBOR hex) for client-side signing. |
| get_stability_pools | Get the latest stability pool state for each iAsset (snapshotP, snapshotD, snapshotS, epoch, scale) |
| get_stability_pool_accounts | Get all open stability pool accounts, optionally filtered by iAsset |
| get_sp_account_by_owner | Get stability pool accounts for specific owners (accepts payment key hashes or bech32 addresses) |
| create_sp_account | Create a new stability pool account by depositing iAssets. Returns an unsigned transaction (CBOR hex) for client-side signing. |
| adjust_sp_account | Deposit to or withdraw from an existing stability pool account. Positive amount deposits, negative withdraws. Returns an unsigned transaction (CBOR hex) for client-side signing. |
| close_sp_account | Close a stability pool account and withdraw all deposited iAssets. Returns an unsigned transaction (CBOR hex) for client-side signing. |
| get_staking_info | Get the current INDY staking manager state (slot, outputHash, totalStake, snapshotAda) |
| get_staking_positions | Get all open INDY staking positions |
| get_staking_positions_by_owner | Get INDY staking positions for specific owners (accepts payment key hashes or bech32 addresses) |
| get_staking_position_by_address | Get INDY staking positions for a single Cardano address |
| distribute_staking_rewards | Distribute collected ADA rewards from collector UTxOs to staking positions. This is a protocol maintenance operation that anyone can call. Returns an unsigned transaction (CBOR hex) for client-side signing. |
| open_staking_position | Stake INDY tokens by creating a new staking position. Returns an unsigned transaction (CBOR hex) for client-side signing. |