IndigoProtocol/indigo-mcp

IndigoProtocol/indigo-mcp

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.

Category
Visit Server

README

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured