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 分