IndigoProtocol/indigo-mcp

πŸ’° Finance & Fintech
0 Views
0 Installs

πŸ“‡ ☁️ 🏠 - MCP server for Indigo Protocol on Cardano β€” iAsset prices, CDP/loan analytics, stability pools, INDY staking, governance, and DEX data for LLM agents

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "indigoprotocol-indigo-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "indigoprotocol-indigo-mcp"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation 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.

⚑ Quick Start β€” Full Cardano DeFi Stack

MCP Servers (75 tools)

# 1. Install & Setup Indigo MCP (69 tools)
npm install -g @indigoprotocol/indigo-mcp
npx @indigoprotocol/indigo-mcp setup

# 2. Install & Setup Cardano MCP (6 wallet tools)
npm install -g @indigoprotocol/cardano-mcp
npx @indigoprotocol/cardano-mcp setup

AI Skills (13 skills) β€” Optional

# 3. Install Indigo Skills
npx @indigoprotocol/indigo-skills

# 4. Install Cardano Skills
npx @indigoprotocol/cardano-skills
╔═══════════════════════════════════════════════════════════════╗
β•‘                                                               β•‘
β•‘   β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—                   β•‘
β•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β• β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—                  β•‘
β•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘                  β•‘
β•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘                  β•‘
β•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•                  β•‘
β•‘   β•šβ•β•β•šβ•β•  β•šβ•β•β•β•β•šβ•β•β•β•β•β• β•šβ•β• β•šβ•β•β•β•β•β•  β•šβ•β•β•β•β•β•                   β•‘
β•‘                                                               β•‘
β•‘   β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—                                  β•‘
β•‘   β–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—                                 β•‘
β•‘   β–ˆβ–ˆβ•”β–ˆβ–ˆβ–ˆβ–ˆβ•”β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•                                 β•‘
β•‘   β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•”β•β•β•β•                                  β•‘
β•‘   β–ˆβ–ˆβ•‘ β•šβ•β• β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘                                      β•‘
β•‘   β•šβ•β•     β•šβ•β• β•šβ•β•β•β•β•β•β•šβ•β•                                      β•‘
β•‘                                                               β•‘
β•‘   75 tools β€’ 13 skills for Cardano DeFi                       β•‘
β•‘                                                               β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

The setup commands auto-configure Claude Desktop, Claude Code, Cursor, or Windsurf. No manual config editing needed.

Features

  • Real-time iAsset prices (iUSD, iBTC, iETH, iSOL, iEUR, iJPY)
  • 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 ROB positions
  • ROB (Redemption Order Book) position management
  • Oracle interest rate feeding and initialization
  • Stability pool request processing and cancellation
  • Staking reward distribution
  • Collector UTXOs, IPFS storage and retrieval

Hosted deployment

A hosted deployment is available on Fronteir AI.

Quick Start

Automatic Setup (Recommended)

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"

Standard config:

{
  "mcpServers": {
    "indigo": {
      "command": "npx",
      "args": ["-y", "@indigoprotocol/indigo-mcp"],
      "env": {
        "INDEXER_URL": "https://analytics.indigoprotocol.io/api",
        "BLOCKFROST_API_KEY": "your-blockfrost-project-id"
      }
    }
  }
}

For nvm users (multiple Node versions):

If you use nvm and have multiple Node versions, you may need to specify the full path and set PATH explicitly:

{
  "mcpServers": {
    "indigo": {
      "command": "/Users/YOUR_USERNAME/.nvm/versions/node/v22.22.0/bin/npx",
      "args": ["-y", "@indigoprotocol/indigo-mcp"],
      "env": {
        "PATH": "/Users/YOUR_USERNAME/.nvm/versions/node/v22.22.0/bin:/usr/local/bin:/usr/bin:/bin",
        "INDEXER_URL": "https://analytics.indigoprotocol.io/api",
        "BLOCKFROST_API_KEY": "your-blockfrost-project-id"
      }
    }
  }
}

Note: Replace YOUR_USERNAME and Node version with your actual values. Find your Node path with which npx.

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",
        "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",
        "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",
        "BLOCKFROST_API_KEY": "your-blockfrost-project-id"
      }
    }
  }
}

OpenClaw

Install Indigo skills for OpenClaw:

openclaw skills add IndigoProtocol/indigo-skills

Skills are automatically configured β€” start using Indigo tools immediately.

Combined with Cardano MCP

For full Cardano DeFi capabilities, use both Indigo MCP and Cardano MCP together:

{
  "mcpServers": {
    "indigo": {
      "command": "npx",
      "args": ["-y", "@indigoprotocol/indigo-mcp"],
      "env": {
        "BLOCKFROST_API_KEY": "your-blockfrost-project-id"
      }
    },
    "cardano": {
      "command": "npx",
      "args": ["-y", "@indigoprotocol/cardano-mcp"],
      "env": {
        "SEED_PHRASE": "word1,word2,word3,...",
        "BLOCKFROST_PROJECT_ID": "your-blockfrost-project-id"
      }
    }
  }
}

Any MCP-Compatible Client

Run the server directly via stdio:

INDEXER_URL=https://analytics.indigoprotocol.io/api \
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, iSOL, iEUR, or iJPY
get_asset_priceGet the current price for a specific iAssetasset: iUSD, iBTC, iETH, iSOL, iEUR, or iJPY
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, iSOL, iEUR, or iJPY; 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, iSOL, iEUR, or iJPY; 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, iSOL, iEUR, or iJPY; 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 ROB 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, iSOL, iEUR, or iJPY
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_pollsGet all governance pollsNone

Redemption & Order Book Tools

ToolDescriptionParameters
get_order_bookGet open ROB (redemption order book) positionsasset?: iAsset filter; owners?: array of payment key hashes
get_redemption_ordersGet executed redemption ordersasset?: iAsset filter; limit?: max records (default 100)
get_redemption_queueGet open ROB order-book entries for an iAssetasset: iUSD, iBTC, iETH, iSOL, iEUR, or iJPY

ROB Write Tools

ToolDescriptionParameters
open_robOpen a new ROB position with ADA and a max price limitaddress: bech32 address; asset: iAsset; lovelacesAmount: lovelace to deposit; maxPriceNumerator + maxPriceDenominator: rational max price
cancel_robCancel an existing ROB positionaddress: bech32 address; robTxHash: ROB UTxO tx hash; robOutputIndex: output index
adjust_robAdjust ADA in a ROB (positive to add, negative to remove)address: bech32 address; robTxHash: ROB UTxO tx hash; robOutputIndex: output index; lovelacesAdjustAmount: adjustment; newMaxPriceNumerator? + newMaxPriceDenominator?: optional new rational max price
claim_robClaim received iAssets from an ROB positionaddress: bech32 address; robTxHash: ROB UTxO tx hash; robOutputIndex: output index
redeem_robRedeem iAssets against one or more ROB positionsaddress: bech32 address; asset: iAsset; redemptionRobs: array of {txHash, outputIndex, amount}

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

Interest Tools (v3)

ToolDescriptionParameters
collect_interestBuild a tx to collect accrued interest for one or more CDPsasset, cdps[]
distribute_interestBuild a tx to distribute collected interest (admin)address
feed_interest_oracleFeed a new interest rate to the interest oracle (admin)address, oracle params
get_interest_oracleRead the current interest oracle state for an iAssetasset

Oracle / Pyth Tools (v3)

ToolDescriptionParameters
get_oracle_priceOn-chain price for an iAsset (OracleNft / Delisted / Pyth)asset
get_pyth_priceRead the Pyth price-feed config for an iAssetasset
feed_price_oracleFeed a new price to an OracleNft-backed price oracle (admin)address, oracleTxHash, price

Stableswap Tools (v3)

ToolDescriptionParameters
get_stableswap_poolGet the stableswap pool state for an (iAsset, collateral)asset
create_stableswap_orderBuild a tx to swap collateral↔iAsset via the stableswap pooladdress, asset, amount, minting
cancel_stableswap_orderBuild a tx to cancel a stableswap orderaddress, orderTxHash, orderOutputIndex

Environment Variables

VariableRequiredDefaultDescription
INDEXER_URLNohttps://analytics.indigoprotocol.io/apiIndigo analytics API base URL
BLOCKFROST_API_KEYFor write opsβ€”Blockfrost 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)
X402_PRIVATE_KEYNoβ€”EVM private key (0x…) of the payer wallet β€” enables auto-payment via split flow
PAYMENT_SERVERNohttps://mcp.openmm.ioSettlement worker / proxy URL
X402_TESTNETNofalseUse Base Sepolia testnet
X402_FACILITATOR_URLNoβ€”Fallback facilitator (used only when PAYMENT_SERVER unset)

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)
β”œβ”€β”€ payment.ts                     # x402 configuration: chain addresses + tool price tiers
β”œβ”€β”€ payment-client.ts              # withAutoPayment: client-side auto-pay on 402 responses
β”œβ”€β”€ 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
β”‚   β”œβ”€β”€ rob-write-tools.ts         # 5 ROB write tools

β”‚   β”œβ”€β”€ sp-request-tools.ts        # 2 SP request processing tools
β”‚   β”œβ”€β”€ analytics-tools.ts         # 5 analytics/APR tools
β”‚   β”œβ”€β”€ governance-tools.ts        # 3 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

x402 Payment Gating

Indigo MCP optionally gates tools behind per-call micropayments using the x402 protocol. Payment is disabled by default β€” set at least one wallet address to enable it.

How it works

Payment uses the split execution model β€” the same architecture as openMM-MCP:

  1. A tool is called (no payment header needed from the caller)
  2. The gate intercepts and contacts the settlement worker (mcp.openmm.io by default)
  3. Worker responds 402 with EIP-3009 requirements (amount, recipient, chain)
  4. Gate signs locally using X402_PRIVATE_KEY β€” the key never leaves this process
  5. Gate retries with the signed payment β†’ worker verifies on-chain, issues a JWT
  6. Gate verifies JWT locally, executes the original tool handler
  7. Settlement tx hash is injected into the tool response

This keeps process isolation clean: indigo-mcp never holds the recipient wallet β€” only the payer key. Verification and settlement are handled by the openmm.io proxy.

  • Read tools (get_tvl, get_asset_price, …) cost $0.001 USDC per call
  • Analysis tools (analyze_cdp_health) cost $0.005 USDC per call
  • Write tools (open_cdp, mint_cdp, …) cost $0.01 USDC per call

Environment variables

VariableRequiredDefaultDescription
X402_PRIVATE_KEYto enableβ€”EVM private key (0x…) of the payer wallet β€” enables split payment
PAYMENT_SERVERoptionalhttps://mcp.openmm.ioSettlement worker / proxy URL
X402_TESTNEToptionalfalseUse Base Sepolia testnet
X402_FACILITATOR_URLoptionalβ€”Fallback facilitator URL (used only when PAYMENT_SERVER is not set)

Split execution flow

When X402_PRIVATE_KEY is set, every paid tool call is handled transparently:

  1. Gate contacts PAYMENT_SERVER (https://mcp.openmm.io by default)
  2. Signs EIP-3009 locally β€” the private key never leaves this process
  3. Proxy verifies on-chain, issues a short-lived JWT
  4. Gate verifies JWT, executes tool, injects settlement tx hash into response

If X402_PRIVATE_KEY is not set the gate is disabled and all tools execute without payment.

# Minimal: just set the payer key (proxy defaults to mcp.openmm.io)
X402_PRIVATE_KEY=0xYourPayerPrivateKey npx @indigoprotocol/indigo-mcp

# Self-hosted proxy
X402_PRIVATE_KEY=0xYourPayerPrivateKey \
PAYMENT_SERVER=https://your-own-proxy \
npx @indigoprotocol/indigo-mcp

Local development

# 1. Copy example env
cp .env.example .env
# Edit .env and set X402_PRIVATE_KEY to a funded Base Sepolia wallet

# 2. Start the HTTP server
MCP_TRANSPORT=http PORT=3000 npm run dev

# 3. Run the payment e2e tests
X402_TESTNET=true npm test -- x402-payment

MCP client config with x402

Add the env block to whichever MCP config file your client uses:

Claude Code (~/.claude/settings.json):

{
  "mcpServers": {
    "indigo": {
      "command": "npx",
      "args": ["-y", "@indigoprotocol/indigo-mcp"],
      "env": {
        "INDEXER_URL": "https://analytics.indigoprotocol.io/api",
        "BLOCKFROST_API_KEY": "your-blockfrost-project-id",
        "X402_PRIVATE_KEY": "0xYourPayerPrivateKey",
        "X402_TESTNET": "true"
      }
    }
  }
}

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "indigo": {
      "command": "npx",
      "args": ["-y", "@indigoprotocol/indigo-mcp"],
      "env": {
        "INDEXER_URL": "https://analytics.indigoprotocol.io/api",
        "BLOCKFROST_API_KEY": "your-blockfrost-project-id",
        "X402_PRIVATE_KEY": "0xYourPayerPrivateKey",
        "X402_TESTNET": "true"
      }
    }
  }
}

Cursor / Windsurf β€” same env block applies to ~/.cursor/mcp.json or ~/.codeium/windsurf/mcp_config.json.

Set X402_TESTNET to false (or omit it) for Base mainnet.

License

ISC

Related MCP Servers

@agentfund/mcp

πŸ“‡ ☁️ - Fundraising infrastructure for AI agents on Solana β€” campaigns, x402 donations, and on-chain reputation. MCP tools for registering agents, creating campaigns, and donating via the x402 pay-to-call flow, backed by Anchor programs (agentregistry, escrow, reputation). npx -y @agentfund/mcp

πŸ’° Finance & Fintech1 views
@asterpay/mcp-server

πŸ“‡ ☁️ - EUR settlement for AI agents via x402 protocol. Market data, AI tools, crypto analytics β€” pay-per-call in USDC on Base. SEPA Instant EUR off-ramp.

πŸ’° Finance & Fintech1 views
@czagents/cnb

πŸ“‡ ☁️ 🏠 🍎 πŸͺŸ 🐧 - Czech National Bank (ČNB) daily FX rates: fetch official CZK exchange rates, convert between currencies, fetch historical rates. Cached 10 min to ease upstream load. npm @czagents/cnb or HTTP at cnb.cz-agents.dev/mcp.

πŸ’° Finance & Fintech1 views
@arbitova/mcp-server

πŸ“‡ ☁️ - Non-custodial on-chain escrow + AI dispute arbitration for agent-to-agent USDC payments on Base. Seven tools covering the full EscrowV1 contract surface: create escrow, mark delivered with on-chain content hash, confirm or dispute, arbiter resolves with signed verdict, cancel/escalate on timeout. npx @arbitova/mcp-server

πŸ’° Finance & Fintech0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

No check timestamp yet.

Unclaimed listing (imported or pending owner verification). Claim it β†’
β˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.