Indigo Protocol Mcp

Created By
IndigoProtocol3 months ago
MCP server for Indigo Protocol on Cardano — exposes iAsset prices (iUSD, iBTC, iETH, iSOL), CDP/loan analytics, stability pools, INDY staking, governance, and DEX data to LLM agents.
Overview

Indigo MCP

Smithery npm downloads Ask DeepWiki

MCP server for Indigo Protocol — exposes Indigo iAsset data, prices, and CDP/loan analytics to LLM agents via the Model Context Protocol.

⚡ 2 Commands to Get Started

# Install
npm install -g @indigoprotocol/indigo-mcp

# Setup (interactive)
npx @indigoprotocol/indigo-mcp setup
╔═══════════════════════════════════════════════════════════════╗
║                                                               ║
║   ██╗███╗   ██╗██████╗ ██╗ ██████╗  ██████╗                   ║
║   ██║████╗  ██║██╔══██╗██║██╔════╝ ██╔═══██╗                  ║
║   ██║██╔██╗ ██║██║  ██║██║██║  ███╗██║   ██║                  ║
║   ██║██║╚██╗██║██║  ██║██║██║   ██║██║   ██║                  ║
║   ██║██║ ╚████║██████╔╝██║╚██████╔╝╚██████╔╝                  ║
║   ╚═╝╚═╝  ╚═══╝╚═════╝ ╚═╝ ╚═════╝  ╚═════╝                   ║
║                                                               ║
║   ███╗   ███╗ ██████╗██████╗                                  ║
║   ████╗ ████║██╔════╝██╔══██╗                                 ║
║   ██╔████╔██║██║     ██████╔╝                                 ║
║   ██║╚██╔╝██║██║     ██╔═══╝                                  ║
║   ██║ ╚═╝ ██║╚██████╗██║                                      ║
║   ╚═╝     ╚═╝ ╚═════╝╚═╝                                      ║
║                                                               ║
║   60 tools for Cardano DeFi                                   ║
║                                                               ║
╚═══════════════════════════════════════════════════════════════╝

That's it — 60 tools configured for Claude Desktop, Claude Code, Cursor, or Windsurf.

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

Run the interactive setup to automatically configure your MCP client:

npx @indigoprotocol/indigo-mcp setup

This will:

  1. Ask which client you're using (Claude Desktop, Claude Code, Cursor, Windsurf)
  2. Prompt for your Blockfrost API key
  3. Automatically update your config file

Manual Installation

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_KEY is 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):

# macOS
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json

# Windows (PowerShell)
notepad "$env:APPDATA\Claude\claude_desktop_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"
      }
    }
  }
}

Claude Code (CLI)

Add to ~/.claude/settings.json or .claude/settings.json in your project:

nano ~/.claude/settings.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"
      }
    }
  }
}

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.

Available Tools

Asset Tools

ToolDescriptionParameters
get_assetsGet all Indigo iAssets with prices and interest dataNone
get_assetGet details for a specific iAssetasset: iUSD, iBTC, iETH, or iSOL
get_asset_priceGet the current price for a specific iAssetasset: iUSD, iBTC, iETH, or iSOL
get_ada_priceGet the current ADA price in USDNone
get_indy_priceGet the current INDY token price in ADA and USDNone

CDP / Loan Tools

ToolDescriptionParameters
get_all_cdpsGet all CDPs/loans, optionally filtered by iAssetasset?: iAsset filter; limit?: 1-500 (default 50); offset?: pagination offset
get_cdps_by_ownerGet CDPs for a specific ownerowner: payment key hash (56-char hex) or bech32 address
get_cdps_by_addressGet CDPs for a specific Cardano addressaddress: bech32 address (addr1... or addr_test1...)
analyze_cdp_healthAnalyze collateral ratios and liquidation riskowner: payment key hash or bech32 address

CDP Write Tools

ToolDescriptionParameters
open_cdpOpen a new CDP position (returns unsigned CBOR tx)address: bech32 address; asset: iUSD, iBTC, iETH, or iSOL; collateralAmount: lovelace; mintAmount: iAsset smallest unit
deposit_cdpDeposit additional collateral into a CDPaddress: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index; amount: lovelace
withdraw_cdpWithdraw collateral from a CDPaddress: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index; amount: lovelace
close_cdpClose a CDP and reclaim collateraladdress: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index

CDP Mint/Burn Tools

ToolDescriptionParameters
mint_cdpMint additional iAssets from an existing CDP (increases debt)address: bech32 address; asset: iUSD, iBTC, iETH, or iSOL; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: CDP UTxO output index; amount: iAsset amount in smallest unit
burn_cdpBurn iAssets to reduce CDP debtaddress: bech32 address; asset: iUSD, iBTC, iETH, or iSOL; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: CDP UTxO output index; amount: iAsset amount in smallest unit

CDP Liquidation & Redemption Tools

ToolDescriptionParameters
liquidate_cdpLiquidate an undercollateralized CDP through the stability pooladdress: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index
redeem_cdpRedeem iAssets from a CDPaddress: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index; amount: iAsset amount in smallest unit
freeze_cdpFreeze a CDP to prevent further operationsaddress: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index
merge_cdpsMerge multiple CDPs into oneaddress: bech32 address; cdpOutRefs: array of {txHash, outputIndex} (min 2)

Leverage CDP Tools

ToolDescriptionParameters
leverage_cdpOpen a leveraged CDP by redeeming against LRP positionsaddress: bech32 address; asset: iAsset; leverage: multiplier (e.g. 2.0); baseCollateral: lovelace amount

Stability Pool Tools

ToolDescriptionParameters
get_stability_poolsGet the latest stability pool state for each iAssetNone
get_stability_pool_accountsGet all open stability pool accounts, optionally filtered by iAssetasset?: iUSD, iBTC, iETH, or iSOL
get_sp_account_by_ownerGet stability pool accounts for specific ownersowners: array of payment key hashes or bech32 addresses

Staking Tools

ToolDescriptionParameters
get_staking_infoGet the current INDY staking manager stateNone
get_staking_positionsGet all open INDY staking positionsNone
get_staking_positions_by_ownerGet INDY staking positions for specific ownersowners: array of payment key hashes or bech32 addresses
get_staking_position_by_addressGet INDY staking positions for a single addressaddress: Cardano bech32 address

Stability Pool Request Tools

ToolDescriptionParameters
process_sp_requestProcess a pending stability pool request (protocol maintenance)address: bech32 address; asset: iAsset; accountTxHash: account UTxO tx hash; accountOutputIndex: output index
annul_sp_requestCancel a pending stability pool requestaddress: bech32 address; accountTxHash: account UTxO tx hash; accountOutputIndex: output index

Staking Write Tools

ToolDescriptionParameters
open_staking_positionStake INDY tokens by creating a new staking positionaddress: bech32 address; amount: INDY amount in smallest unit
adjust_staking_positionAdjust an existing staking position (add or remove INDY)address: bech32 address; amount: positive=stake more, negative=unstake; positionTxHash: UTxO tx hash; positionOutputIndex: UTxO output index
close_staking_positionClose a staking position and unstake all INDYaddress: bech32 address; positionTxHash: UTxO tx hash; positionOutputIndex: UTxO output index

Staking Reward Tools

ToolDescriptionParameters
distribute_staking_rewardsDistribute collected ADA rewards from collector UTxOs to stakersaddress: bech32 address; collectorTxHashes: array of {txHash, outputIndex}

Analytics & APR Tools

ToolDescriptionParameters
get_tvlGet historical TVL data from DefiLlamaNone
get_apr_rewardsGet all APR reward recordsNone
get_apr_by_keyGet APR for a specific keykey: APR key (e.g. sp_iUSD_indy, stake_ada)
get_dex_yieldsGet DEX farm yields for iAsset pairsNone
get_protocol_statsGet aggregated protocol statisticsNone

Governance Tools

ToolDescriptionParameters
get_protocol_paramsGet latest governance protocol parametersNone
get_temperature_checksGet temperature check pollsNone
get_sync_statusGet indexer sync statusNone
get_pollsGet all governance pollsNone

Redemption & Order Book Tools

ToolDescriptionParameters
get_order_bookGet open limited redemption positionsasset?: iAsset filter; owners?: array of payment key hashes
get_redemption_ordersGet redemption orders with optional filterstimestamp?: Unix ms; in_range?: filter by price range
get_redemption_queueGet aggregated redemption queue for an iAssetasset: iUSD, iBTC, iETH, or iSOL

LRP Write Tools

ToolDescriptionParameters
open_lrpOpen a new LRP position with ADA and a max price limitaddress: bech32 address; asset: iAsset; lovelacesAmount: lovelace to deposit; maxPrice: on-chain integer string
cancel_lrpCancel an existing LRP positionaddress: bech32 address; lrpTxHash: LRP UTxO tx hash; lrpOutputIndex: output index
adjust_lrpAdjust ADA in an LRP (positive to add, negative to remove)address: bech32 address; lrpTxHash: LRP UTxO tx hash; lrpOutputIndex: output index; lovelacesAdjustAmount: adjustment; newMaxPrice?: optional new max price
claim_lrpClaim received iAssets from an LRP positionaddress: bech32 address; lrpTxHash: LRP UTxO tx hash; lrpOutputIndex: output index
redeem_lrpRedeem iAssets against one or more LRP positionsaddress: bech32 address; redemptionLrps: array of {txHash, outputIndex, iAssetAmount}; priceOracleTxHash; priceOracleOutputIndex; iassetTxHash; iassetOutputIndex

Oracle Write Tools

ToolDescriptionParameters
feed_interest_oracleFeed a new interest rate to the interest oracle (oracle operator only)address: operator bech32 address; asset: iAsset; newInterestRate: bigint string; biasTime: ms bigint string; owner: operator pub key hash
start_interest_oracleInitialize a new interest oracle (admin one-time setup)address: admin bech32 address; initialUnitaryInterest; initialInterestRate; initialLastInterestUpdate; biasTime; owner: operator pub key hash

DEX Proxy Tools

ToolDescriptionParameters
get_steelswap_tokensGet all tokens available on Steelswap DEXNone
get_steelswap_estimateGet a swap estimate from SteelswaptokenIn: input token; tokenOut: output token; amountIn: amount
get_iris_liquidity_poolsGet liquidity pools from IristokenA?: first token; tokenB?: second token; dex?: DEX filter
get_blockfrost_balancesGet token balances for a Cardano addressaddress: Cardano bech32 address

Collector & IPFS Tools

ToolDescriptionParameters
get_collector_utxosGet collector UTXOs for fee distributionlength?: max UTXOs to return
store_on_ipfsStore text content on IPFStext: content to store
retrieve_from_ipfsRetrieve content from IPFS by CIDcid: IPFS content identifier

Environment Variables

VariableRequiredDefaultDescription
INDEXER_URLNohttps://analytics.indigoprotocol.io/api/v1Indigo analytics API base URL
BLOCKFROST_API_KEYFor write opsBlockfrost project ID for transaction building
CARDANO_NETWORKNomainnetCardano network: mainnet, preprod, or preview
MCP_TRANSPORTNostdioTransport mode: stdio or http
PORTNo3000HTTP server port (only used when MCP_TRANSPORT=http)

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 mode

Project 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 CBOR

Testing 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.js

License

ISC

Server Config

{
  "mcpServers": {
    "indigo-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@indigoprotocol/indigo-mcp"
      ]
    }
  }
}
Project Info
Created At
3 months ago
Updated At
3 months ago
Author Name
IndigoProtocol
Star
-
Language
-
License
-
Category

Recommend Servers

View All
Tavily Mcp
@tavily-ai

JavaScript
a year ago
Crevio

2 days ago