Skip to main content
Glama
IndigoProtocol

IndigoProtocol/indigo-mcp

Official

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.

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_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):

{
  "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.

Available Tools

Asset Tools

Tool

Description

Parameters

get_assets

Get all Indigo iAssets with prices and interest data

None

get_asset

Get details for a specific iAsset

asset: iUSD, iBTC, iETH, or iSOL

get_asset_price

Get the current price for a specific iAsset

asset: iUSD, iBTC, iETH, or iSOL

get_ada_price

Get the current ADA price in USD

None

get_indy_price

Get the current INDY token price in ADA and USD

None

CDP / Loan Tools

Tool

Description

Parameters

get_all_cdps

Get all CDPs/loans, optionally filtered by iAsset

asset?: iAsset filter; limit?: 1-500 (default 50); offset?: pagination offset

get_cdps_by_owner

Get CDPs for a specific owner

owner: payment key hash (56-char hex) or bech32 address

get_cdps_by_address

Get CDPs for a specific Cardano address

address: bech32 address (addr1... or addr_test1...)

analyze_cdp_health

Analyze collateral ratios and liquidation risk

owner: payment key hash or bech32 address

CDP Write Tools

Tool

Description

Parameters

open_cdp

Open a new CDP position (returns unsigned CBOR tx)

address: bech32 address; asset: iUSD, iBTC, iETH, or iSOL; collateralAmount: lovelace; mintAmount: iAsset smallest unit

deposit_cdp

Deposit additional collateral into a CDP

address: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index; amount: lovelace

withdraw_cdp

Withdraw collateral from a CDP

address: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index; amount: lovelace

close_cdp

Close a CDP and reclaim collateral

address: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index

CDP Mint/Burn Tools

Tool

Description

Parameters

mint_cdp

Mint 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_cdp

Burn iAssets to reduce CDP 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

CDP Liquidation & Redemption Tools

Tool

Description

Parameters

liquidate_cdp

Liquidate an undercollateralized CDP through the stability pool

address: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index

redeem_cdp

Redeem iAssets from a CDP

address: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index; amount: iAsset amount in smallest unit

freeze_cdp

Freeze a CDP to prevent further operations

address: bech32 address; asset: iAsset; cdpTxHash: CDP UTxO tx hash; cdpOutputIndex: output index

merge_cdps

Merge multiple CDPs into one

address: bech32 address; cdpOutRefs: array of {txHash, outputIndex} (min 2)

Leverage CDP Tools

Tool

Description

Parameters

leverage_cdp

Open a leveraged CDP by redeeming against LRP positions

address: bech32 address; asset: iAsset; leverage: multiplier (e.g. 2.0); baseCollateral: lovelace amount

Stability Pool Tools

Tool

Description

Parameters

get_stability_pools

Get the latest stability pool state for each iAsset

None

get_stability_pool_accounts

Get all open stability pool accounts, optionally filtered by iAsset

asset?: iUSD, iBTC, iETH, or iSOL

get_sp_account_by_owner

Get stability pool accounts for specific owners

owners: array of payment key hashes or bech32 addresses

Staking Tools

Tool

Description

Parameters

get_staking_info

Get the current INDY staking manager state

None

get_staking_positions

Get all open INDY staking positions

None

get_staking_positions_by_owner

Get INDY staking positions for specific owners

owners: array of payment key hashes or bech32 addresses

get_staking_position_by_address

Get INDY staking positions for a single address

address: Cardano bech32 address

Stability Pool Request Tools

Tool

Description

Parameters

process_sp_request

Process a pending stability pool request (protocol maintenance)

address: bech32 address; asset: iAsset; accountTxHash: account UTxO tx hash; accountOutputIndex: output index

annul_sp_request

Cancel a pending stability pool request

address: bech32 address; accountTxHash: account UTxO tx hash; accountOutputIndex: output index

Staking Write Tools

Tool

Description

Parameters

open_staking_position

Stake INDY tokens by creating a new staking position

address: bech32 address; amount: INDY amount in smallest unit

adjust_staking_position

Adjust 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_position

Close a staking position and unstake all INDY

address: bech32 address; positionTxHash: UTxO tx hash; positionOutputIndex: UTxO output index

Staking Reward Tools

Tool

Description

Parameters

distribute_staking_rewards

Distribute collected ADA rewards from collector UTxOs to stakers

address: bech32 address; collectorTxHashes: array of {txHash, outputIndex}

Analytics & APR Tools

Tool

Description

Parameters

get_tvl

Get historical TVL data from DefiLlama

None

get_apr_rewards

Get all APR reward records

None

get_apr_by_key

Get APR for a specific key

key: APR key (e.g. sp_iUSD_indy, stake_ada)

get_dex_yields

Get DEX farm yields for iAsset pairs

None

get_protocol_stats

Get aggregated protocol statistics

None

Governance Tools

Tool

Description

Parameters

get_protocol_params

Get latest governance protocol parameters

None

get_temperature_checks

Get temperature check polls

None

get_sync_status

Get indexer sync status

None

get_polls

Get all governance polls

None

Redemption & Order Book Tools

Tool

Description

Parameters

get_order_book

Get open limited redemption positions

asset?: iAsset filter; owners?: array of payment key hashes

get_redemption_orders

Get redemption orders with optional filters

timestamp?: Unix ms; in_range?: filter by price range

get_redemption_queue

Get aggregated redemption queue for an iAsset

asset: iUSD, iBTC, iETH, or iSOL

LRP Write Tools

Tool

Description

Parameters

open_lrp

Open a new LRP position with ADA and a max price limit

address: bech32 address; asset: iAsset; lovelacesAmount: lovelace to deposit; maxPrice: on-chain integer string

cancel_lrp

Cancel an existing LRP position

address: bech32 address; lrpTxHash: LRP UTxO tx hash; lrpOutputIndex: output index

adjust_lrp

Adjust 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_lrp

Claim received iAssets from an LRP position

address: bech32 address; lrpTxHash: LRP UTxO tx hash; lrpOutputIndex: output index

redeem_lrp

Redeem iAssets against one or more LRP positions

address: bech32 address; redemptionLrps: array of {txHash, outputIndex, iAssetAmount}; priceOracleTxHash; priceOracleOutputIndex; iassetTxHash; iassetOutputIndex

Oracle Write Tools

Tool

Description

Parameters

feed_interest_oracle

Feed 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_oracle

Initialize a new interest oracle (admin one-time setup)

address: admin bech32 address; initialUnitaryInterest; initialInterestRate; initialLastInterestUpdate; biasTime; owner: operator pub key hash

DEX Proxy Tools

Tool

Description

Parameters

get_steelswap_tokens

Get all tokens available on Steelswap DEX

None

get_steelswap_estimate

Get a swap estimate from Steelswap

tokenIn: input token; tokenOut: output token; amountIn: amount

get_iris_liquidity_pools

Get liquidity pools from Iris

tokenA?: first token; tokenB?: second token; dex?: DEX filter

get_blockfrost_balances

Get token balances for a Cardano address

address: Cardano bech32 address

Collector & IPFS Tools

Tool

Description

Parameters

get_collector_utxos

Get collector UTXOs for fee distribution

length?: max UTXOs to return

store_on_ipfs

Store text content on IPFS

text: content to store

retrieve_from_ipfs

Retrieve content from IPFS by CID

cid: IPFS content identifier

Environment Variables

Variable

Required

Default

Description

INDEXER_URL

No

https://analytics.indigoprotocol.io/api/v1

Indigo analytics API base URL

BLOCKFROST_API_KEY

For write ops

Blockfrost project ID for transaction building

CARDANO_NETWORK

No

mainnet

Cardano network: mainnet, preprod, or preview

MCP_TRANSPORT

No

stdio

Transport mode: stdio or http

PORT

No

3000

HTTP 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

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/IndigoProtocol/indigo-protocolindigo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server