Indigo Mcp

io.github.IndigoProtocol由 GitHub 帳號 IndigoProtocol 發布v0.4.2更新於 Oct 24, 2026

Indigo Protocol MCP — iAsset prices, CDP analytics, stability pools, staking & governance

已驗證STDIO僅桌面資料庫金融資料與分析

概覽

AI 產生的概覽

讓助理讀取 Indigo Protocol 的 Cardano DeFi 資料,並建構 CDP、質押、穩定池與贖回訂單的未簽章交易。

可以做什麼
提供約 69 個工具,涵蓋 iAsset 以及 ADA/INDY 價格、CDP 與貸款瀏覽、依擁有者查詢、CDP 健康度與清算風險分析、穩定池狀態、INDY 質押部位、TVL 與 APR 等協議分析、治理投票,以及贖回訂單簿。寫入類工具會建構未簽章 CBOR 交易,用於開立、追加抵押、提取抵押、鑄造、銷毀、贖回、凍結、合併與清算 CDP,以及質押、穩定池請求、ROB 部位、穩定幣兌換訂單與管理員利息或價格預言機餵價。它也代理 Steelswap 兌換估價、Iris 流動性池、Blockfrost 餘額與 IPFS 儲存。
適用情境
適合助理需要查看 Cardano 上的 Indigo Protocol 部位或協議指標,或需要為使用者準備待簽章的 Cardano DeFi 交易時使用。唯讀查詢不需要 Blockfrost 金鑰,因此也可以僅為分析目的加入。
執行需求
透過 npm 安裝或使用 npx 執行的本機 Node.js 程序;setup 指令可設定 Claude Desktop、Claude Code、Cursor 或 Windsurf。選用環境變數包括 INDEXER_URL、CARDANO_NETWORK、MCP_TRANSPORT、PORT 與 HOST。建構交易的寫入操作需要 BLOCKFROST_API_KEY。選用的 X402_PRIVATE_KEY、PAYMENT_SERVER、X402_TESTNET 與 X402_FACILITATOR_URL 與付款流程相關。需要連線至 Indigo 分析 API 與 Blockfrost 的網路存取。
安裝前請注意
寫入類工具會建構轉移資金與改變鏈上部位的交易,包括清算、贖回、凍結、合併、質押與預言機餵價,這些都需要使用者簽章。BLOCKFROST_API_KEY 是憑證,應視為機密處理。X402_PRIVATE_KEY 是付款錢包的 EVM 私鑰,會啟用自動付款,因此存在支出風險。依賴價格的寫入操作在嵌入的 Pyth 價格更新後約 280 秒過期,過期交易必須重建。IPFS 儲存會將內容傳送給第三方。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Indigo Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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.

⚡ Quick Start — Full Cardano DeFi Stack

MCP Servers (75 tools)

bash
# 1. Install & Setup Indigo MCP (69 tools)npm install -g @indigoprotocol/indigo-mcpnpx @indigoprotocol/indigo-mcp setup
# 2. Install & Setup Cardano MCP (6 wallet tools)npm install -g @indigoprotocol/cardano-mcpnpx @indigoprotocol/cardano-mcp setup

AI Skills (13 skills) — Optional

bash
# 3. Install Indigo Skillsnpx @indigoprotocol/indigo-skills
# 4. Install Cardano Skillsnpx @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:

bash
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:

bash
npm install -g @indigoprotocol/indigo-mcp

Or run directly with npx (no install needed):

bash
npx @indigoprotocol/indigo-mcp

Docker

The image builds the server from source — no prior pnpm build needed, and no dependency on any external build step:

bash
docker build -t indigo-mcp .docker run -p 3000:3000 -e BLOCKFROST_API_KEY=your-key indigo-mcp

It runs the HTTP transport on port 3000 (MCP_TRANSPORT=http is baked in), which is what the Fly deployment uses.

HTTP Transport (Remote)

The server supports HTTP transport for remote/hosted deployments:

bash
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

Each client gets its own session: initialize returns an Mcp-Session-Id that subsequent requests must send back. A client that restarts can simply initialize again — existing sessions are unaffected and the server does not need restarting. Bind address and port come from HOST and PORT (MCP_PORT is accepted as an alias for PORT).

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

bash
# macOSnano ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Windows (PowerShell)notepad "$env:APPDATA\Claude\claude_desktop_config.json"

Standard 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"      }    }  }}

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:

json
{  "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:

bash
nano ~/.claude/settings.json
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):

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"      }    }  }}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

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:

bash
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:

json
{  "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:

bash
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:

bash
npm install -g @indigoprotocol/indigo-mcpindigo-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, iJPY, or iADA
get_asset_priceGet the current price for a specific iAssetasset: iUSD, iBTC, iETH, iSOL, iEUR, iJPY, or iADA
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

Pyth-priced iAssets have a submission deadline. Every iAsset is currently priced through Pyth, and the on-chain feed validator only accepts a transaction for 280 seconds after the price update it embeds. Price-dependent write tools (open_cdp, withdraw_cdp, mint_cdp, redeem_cdp, freeze_cdp, leverage_cdp, redeem_rob) therefore return a summary.pyth block with the price, its timestamp and a submitBefore deadline. If signing takes longer than that — a hardware wallet, or a human approving in a browser — rebuild the transaction rather than submitting a stale one. A price update that has already expired is rejected at build time with a retry hint.

ToolDescriptionParameters
open_cdpOpen a new CDP position (returns unsigned CBOR tx)address: bech32 address; asset: iUSD, iBTC, iETH, iSOL, iEUR, iJPY, or iADA; 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, iJPY, or iADA; 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, iJPY, or iADA; 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, iJPY, or iADA
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, iJPY, or iADA

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_priceCurrent Pyth price for an iAsset, plus its on-chain feed configasset
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); MCP_PORT is accepted as an alias
HOSTNo0.0.0.0HTTP bind address (only used when MCP_TRANSPORT=http); set 127.0.0.1 to bind locally only
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?"

Distribution

The server is published to three places, and they are not the same artifact.

TargetBuilt byOutputPublished by
npm — @indigoprotocol/indigo-mcpscripts/build.shdist/CI, on a v* tag
MCP Registry — io.github.IndigoProtocol/indigo-mcpserver.jsonmetadata onlyCI, on a v* tag (GitHub OIDC — no token)
Smitheryscripts/smithery-build.sh.smithery/stdio/server.mcpbpnpm smithery:publish, manually

The container image (Dockerfile) builds from source and is used by Fly and any other container host. It does not consume .smithery/ output — that path is Smithery-specific.

Cutting a release

  1. Merge the version bump (package.json; SERVER_VERSION is read from it)
  2. git tag vX.Y.Z && git push origin vX.Y.Z
  3. CI publishes to npm, then to the MCP Registry (the registry verifies ownership via the package's mcpName field, so npm has to go first)
  4. Verify against the registry, not the workflow: npm view @indigoprotocol/indigo-mcp version
  5. fly deploy for the hosted HTTP endpoint, and pnpm smithery:publish for Smithery

Development

Prerequisites

  • Node.js >= 20 (the bundled undici requires the File global, added in Node 20)
  • npm

Setup

bash
git clone https://github.com/IndigoProtocol/indigo-mcp.gitcd indigo-mcpnpm installnpm run dev      # run with tsx (hot reload)

Scripts

bash
npm run build          # compile TypeScriptnpm run start          # run compiled servernpm run dev            # run with tsx (hot reload)npm run typecheck      # type-check without emittingnpm run lint           # eslintnpm run lint:fix       # eslint --fixnpm run format         # prettiernpm run format:check   # prettier --checknpm run test           # run testsnpm 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:

bash
npm run buildecho '{"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.

bash
# Minimal: just set the payer key (proxy defaults to mcp.openmm.io)X402_PRIVATE_KEY=0xYourPayerPrivateKey npx @indigoprotocol/indigo-mcp
# Self-hosted proxyX402_PRIVATE_KEY=0xYourPayerPrivateKey \PAYMENT_SERVER=https://your-own-proxy \npx @indigoprotocol/indigo-mcp

Local development

bash
# 1. Copy example envcp .env.example .env# Edit .env and set X402_PRIVATE_KEY to a funded Base Sepolia wallet
# 2. Start the HTTP serverMCP_TRANSPORT=http PORT=3000 npm run dev
# 3. Run the payment e2e testsX402_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):

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

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

來源:README.md,提交 de00632

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.4.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分