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?"
How to connect
How to connect Indigo Protocol MCP to Claude
The server address to paste into Claude settings:
https://indigo-mcp--indigoprotocol.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Indigo Protocol MCP to ChatGPT
The server address to paste into ChatGPT settings:
https://indigo-mcp--indigoprotocol.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Indigo Protocol MCP to Cursor
The server address to paste into Cursor settings:
https://indigo-mcp--indigoprotocol.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
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. |