Provides tools for interacting with the Cardano blockchain, enabling management of Indigo Protocol positions, tracking of ADA and INDY token prices, and execution of on-chain operations like staking and liquidations.
Enables storage and retrieval of data through the IPFS protocol as part of the server's protocol maintenance features.
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-mcpOr run directly with npx (no install needed):
npx @indigoprotocol/indigo-mcpDocker
docker build -t indigo-mcp .
docker run -i indigo-mcpHTTP Transport (Remote)
The server supports HTTP transport for remote/hosted deployments:
MCP_TRANSPORT=http PORT=3000 npx @indigoprotocol/indigo-mcpThis 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-mcpOr install globally and reference the binary:
npm install -g @indigoprotocol/indigo-mcp
indigo-mcpFor any client that supports MCP over stdio, point it to the npx @indigoprotocol/indigo-mcp command with the environment variables above.
Available Tools
Asset Tools
Tool | Description | Parameters |
| Get all Indigo iAssets with prices and interest data | None |
| Get details for a specific iAsset |
|
| Get the current price for a specific iAsset |
|
| Get the current ADA price in USD | None |
| Get the current INDY token price in ADA and USD | None |
CDP / Loan Tools
Tool | Description | Parameters |
| Get all CDPs/loans, optionally filtered by iAsset |
|
| Get CDPs for a specific owner |
|
| Get CDPs for a specific Cardano address |
|
| Analyze collateral ratios and liquidation risk |
|
CDP Write Tools
Tool | Description | Parameters |
| Open a new CDP position (returns unsigned CBOR tx) |
|
| Deposit additional collateral into a CDP |
|
| Withdraw collateral from a CDP |
|
| Close a CDP and reclaim collateral |
|
CDP Mint/Burn Tools
Tool | Description | Parameters |
| Mint additional iAssets from an existing CDP (increases debt) |
|
| Burn iAssets to reduce CDP debt |
|
CDP Liquidation & Redemption Tools
Tool | Description | Parameters |
| Liquidate an undercollateralized CDP through the stability pool |
|
| Redeem iAssets from a CDP |
|
| Freeze a CDP to prevent further operations |
|
| Merge multiple CDPs into one |
|
Leverage CDP Tools
Tool | Description | Parameters |
| Open a leveraged CDP by redeeming against LRP positions |
|
Stability Pool Tools
Tool | Description | Parameters |
| Get the latest stability pool state for each iAsset | None |
| Get all open stability pool accounts, optionally filtered by iAsset |
|
| Get stability pool accounts for specific owners |
|
Staking Tools
Tool | Description | Parameters |
| Get the current INDY staking manager state | None |
| Get all open INDY staking positions | None |
| Get INDY staking positions for specific owners |
|
| Get INDY staking positions for a single address |
|
Stability Pool Request Tools
Tool | Description | Parameters |
| Process a pending stability pool request (protocol maintenance) |
|
| Cancel a pending stability pool request |
|
Staking Write Tools
Tool | Description | Parameters |
| Stake INDY tokens by creating a new staking position |
|
| Adjust an existing staking position (add or remove INDY) |
|
| Close a staking position and unstake all INDY |
|
Staking Reward Tools
Tool | Description | Parameters |
| Distribute collected ADA rewards from collector UTxOs to stakers |
|
Analytics & APR Tools
Tool | Description | Parameters |
| Get historical TVL data from DefiLlama | None |
| Get all APR reward records | None |
| Get APR for a specific key |
|
| Get DEX farm yields for iAsset pairs | None |
| Get aggregated protocol statistics | None |
Governance Tools
Tool | Description | Parameters |
| Get latest governance protocol parameters | None |
| Get temperature check polls | None |
| Get indexer sync status | None |
| Get all governance polls | None |
Redemption & Order Book Tools
Tool | Description | Parameters |
| Get open limited redemption positions |
|
| Get redemption orders with optional filters |
|
| Get aggregated redemption queue for an iAsset |
|
LRP Write Tools
Tool | Description | Parameters |
| Open a new LRP position with ADA and a max price limit |
|
| Cancel an existing LRP position |
|
| Adjust ADA in an LRP (positive to add, negative to remove) |
|
| Claim received iAssets from an LRP position |
|
| Redeem iAssets against one or more LRP positions |
|
Oracle Write Tools
Tool | Description | Parameters |
| Feed a new interest rate to the interest oracle (oracle operator only) |
|
| Initialize a new interest oracle (admin one-time setup) |
|
DEX Proxy Tools
Tool | Description | Parameters |
| Get all tokens available on Steelswap DEX | None |
| Get a swap estimate from Steelswap |
|
| Get liquidity pools from Iris |
|
| Get token balances for a Cardano address |
|
Collector & IPFS Tools
Tool | Description | Parameters |
| Get collector UTXOs for fee distribution |
|
| Store text content on IPFS |
|
| Retrieve content from IPFS by CID |
|
Environment Variables
Variable | Required | Default | Description |
| No |
| Indigo analytics API base URL |
| For write ops | — | Blockfrost project ID for transaction building |
| No |
| Cardano network: |
| No |
| Transport mode: |
| No |
| HTTP server port (only used when |
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?"
Development
Prerequisites
Node.js >= 18
npm
Setup
git clone https://github.com/IndigoProtocol/indigo-mcp.git
cd indigo-mcp
npm install
npm run dev # run with tsx (hot reload)Scripts
npm run build # compile TypeScript
npm run start # run compiled server
npm run dev # run with tsx (hot reload)
npm run typecheck # type-check without emitting
npm run lint # eslint
npm run lint:fix # eslint --fix
npm run format # prettier
npm run format:check # prettier --check
npm run test # run tests
npm run test:watch # run tests in watch modeProject Structure
src/
├── index.ts # Server entry point (stdio transport)
├── types/
│ └── tx-types.ts # UnsignedTxResult, TxSummary types
├── tools/
│ ├── index.ts # Tool registration hub
│ ├── asset-tools.ts # 5 asset/price tools
│ ├── cdp-tools.ts # 4 CDP/loan tools
│ ├── stability-pool-tools.ts # 3 stability pool tools
│ ├── staking-tools.ts # 4 INDY staking tools
│ ├── staking-write-tools.ts # 3 INDY staking write tools
│ ├── staking-reward-tools.ts # 1 staking reward distribution tool
│ ├── cdp-liquidation-tools.ts # 4 CDP liquidation/redemption/freeze/merge tools
│ ├── leverage-cdp-tools.ts # 1 leveraged CDP tool
│ ├── lrp-write-tools.ts # 5 LRP write tools
│ ├── oracle-write-tools.ts # 2 oracle write tools
│ ├── sp-request-tools.ts # 2 SP request processing tools
│ ├── analytics-tools.ts # 5 analytics/APR tools
│ ├── governance-tools.ts # 4 governance tools
│ ├── redemption-tools.ts # 3 redemption/order book tools
│ ├── dex-tools.ts # 4 DEX proxy tools
│ └── collector-tools.ts # 3 collector/IPFS tools
├── resources/
│ └── index.ts # MCP resource definitions
├── tests/
│ ├── unit/
│ │ ├── tools/ # Unit tests for each tool module
│ │ └── utils/ # Unit tests for validators, address
│ └── integration/
│ └── indexer-client.test.ts # Integration test for HTTP client
└── utils/
├── index.ts # Re-exports
├── indexer-client.ts # Axios client for Indigo analytics API
├── validators.ts # Zod validators (AssetParam enum)
├── address.ts # Bech32 address → payment credential
├── lucid-provider.ts # Lucid + Blockfrost singleton provider
├── sdk-config.ts # SystemParams loader with cache
└── tx-builder.ts # Transaction builder → unsigned CBORTesting via stdin
The server communicates over stdio using JSON-RPC. You can test tools directly:
npm run build
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.1.0"}}}' | node dist/index.jsLicense
ISC