关于 Indigo Protocol Mcp
Indigo Protocol Mcp 是面向 Cardano Indigo Protocol 的 MCP 服务,为 AI Agent 提供 iAsset 价格、CDP 借贷分析及协议数据,并支持多种操作。
主要功能
- 01查询 iAsset、ADA 和 INDY 价格
- 02浏览并分析 CDP 健康状况
- 03查询稳定池、质押与治理数据
- 04查看 TVL、APR 和 DEX 数据
- 05执行 CDP 与赎回操作
适用场景
- 01追踪 iAsset 价格与利息数据
- 02检查持有者的 CDP 清算风险
- 03分析协议收益、治理和稳定池
- 04通过工具管理 CDP 头寸
MCP 相关
该 MCP 服务向客户端提供 Indigo Protocol 的资产、CDP、稳定池、质押、治理和 DEX 数据工具,也包含部分链上操作工具。支持 stdio 与 HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
69收录的工具列表 · 更新于 3 周前
此工具无需参数。
详细介绍
Indigo MCP
面向 Indigo Protocol 的 MCP 服务——通过 Model Context Protocol,向大模型 Agent 提供 Indigo iAsset 数据、价格和 CDP/贷款分析。
⚡ 快速开始 — 完整的 Cardano DeFi 技术栈
MCP 服务(75 个工具)
# 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 技能(13 项)— 可选
# 3. Install Indigo Skills
npx @indigoprotocol/indigo-skills
# 4. Install Cardano Skills
npx @indigoprotocol/cardano-skills
╔═══════════════════════════════════════════════════════════════╗
║ ║
║ ██╗███╗ ██╗██████╗ ██╗ ██████╗ ██████╗ ║
║ ██║████╗ ██║██╔══██╗██║██╔════╝ ██╔═══██╗ ║
║ ██║██╔██╗ ██║██║ ██║██║██║ ███╗██║ ██║ ║
║ ██║██║╚██╗██║██║ ██║██║██║ ██║██║ ██║ ║
║ ██║██║ ╚████║██████╔╝██║╚██████╔╝╚██████╔╝ ║
║ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ║
║ ║
║ ███╗ ███╗ ██████╗██████╗ ║
║ ████╗ ████║██╔════╝██╔══██╗ ║
║ ██╔████╔██║██║ ██████╔╝ ║
║ ██║╚██╔╝██║██║ ██╔═══╝ ║
║ ██║ ╚═╝ ██║╚██████╗██║ ║
║ ╚═╝ ╚═╝ ╚═════╝╚═╝ ║
║ ║
║ 75 tools • 13 skills for Cardano DeFi ║
║ ║
╚═══════════════════════════════════════════════════════════════╝
这些设置命令会自动配置 Claude Desktop、Claude Code、Cursor 或 Windsurf。无需手动编辑配置。
功能
- 实时 iAsset 价格(iUSD、iBTC、iETH、iSOL、iEUR、iJPY)
- ADA 和 INDY 代币价格数据
- 支持分页和筛选的 CDP/贷款浏览
- 通过支付密钥哈希或 bech32 地址查找所有者
- CDP 健康状况分析,包括抵押率和清算风险状态
- 稳定池状态和账户查询
- INDY 质押仓位和管理器状态
- 协议分析:TVL、APR 奖励、DEX 收益、汇总统计数据
- 治理:协议参数、投票、温度检查
- 赎回订单簿和队列汇总
- DEX 代理:Steelswap 兑换、Iris 流动性池、Blockfrost 余额
- CDP 清算、赎回、冻结和合并操作
- 通过 ROB 仓位开设杠杆 CDP
- ROB(赎回订单簿)仓位管理
- 预言机利率馈送和初始化
- 稳定池请求处理和取消
- 质押奖励分发
- Collector UTXO、IPFS 存储和检索
托管部署
可通过 Fronteir AI 使用托管部署。
快速开始
自动设置(推荐)
运行交互式设置,自动配置 MCP 客户端:
npx @indigoprotocol/indigo-mcp setup
此操作将:
- 询问你使用的客户端(Claude Desktop、Claude Code、Cursor、Windsurf)
- 提示输入 Blockfrost API 密钥
- 自动更新配置文件
手动安装
全局安装:
npm install -g @indigoprotocol/indigo-mcp
或通过 npx 直接运行(无需安装):
npx @indigoprotocol/indigo-mcp
Docker
该镜像会从源代码构建服务——无需预先运行 pnpm build,也不依赖任何外部构建步骤:
docker build -t indigo-mcp .
docker run -p 3000:3000 -e BLOCKFROST_API_KEY=your-key indigo-mcp
它会在端口 3000 上运行 HTTP 传输(已内置 MCP_TRANSPORT=http),Fly 部署也使用此配置。
HTTP 传输(远程)
该服务支持用于远程/托管部署的 HTTP 传输:
MCP_TRANSPORT=http PORT=3000 npx @indigoprotocol/indigo-mcp
这会启动一个 HTTP 服务,其中包含:
POST /mcp— MCP 端点(带 SSE 的 Streamable HTTP)GET /health— 健康检查
每个客户端都有自己的会话:initialize 会返回一个 Mcp-Session-Id,后续请求必须将其传回。重启后的客户端只需再次运行 initialize 即可——现有会话不会受到影响,服务也无需重启。绑定地址和端口取自 HOST 和 PORT(MCP_PORT 可用作 PORT 的别名)。
配置
注意: 写入操作(构建交易)需要
BLOCKFROST_API_KEY。只读工具无需此密钥即可使用。可在 blockfrost.io 免费获取密钥。
Claude Desktop
将配置添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %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"
标准配置:
{
"mcpServers": {
"indigo": {
"command": "npx",
"args": ["-y", "@indigoprotocol/indigo-mcp"],
"env": {
"INDEXER_URL": "https://analytics.indigoprotocol.io/api",
"BLOCKFROST_API_KEY": "your-blockfrost-project-id"
}
}
}
}
适用于 nvm 用户(多个 Node 版本):
如果你使用 nvm 且安装了多个 Node 版本,可能需要指定完整路径并显式设置 PATH:
{
"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"
}
}
}
}
注意: 请将
YOUR_USERNAME和 Node 版本替换为实际值。运行which npx可查找 Node 路径。
Claude Code(CLI)
将配置添加到 ~/.claude/settings.json 或项目中的 .claude/settings.json:
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
添加到 ~/.cursor/mcp.json(全局)或 .cursor/mcp.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
添加到 ~/.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
为 OpenClaw 安装 Indigo 技能:
openclaw skills add IndigoProtocol/indigo-skills
技能会自动配置,立即开始使用 Indigo 工具。
与 Cardano MCP 一起使用
如需完整的 Cardano DeFi 功能,请同时使用 Indigo MCP 和 Cardano MCP:
{
"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"
}
}
}
}
任意兼容 MCP 的客户端
通过 stdio 直接运行服务:
INDEXER_URL=https://analytics.indigoprotocol.io/api \
BLOCKFROST_API_KEY=your-blockfrost-project-id \
npx @indigoprotocol/indigo-mcp
或者全局安装并引用二进制文件:
npm install -g @indigoprotocol/indigo-mcp
indigo-mcp
对于任何支持通过 stdio 使用 MCP 的客户端,将其指向带有上述环境变量的 npx @indigoprotocol/indigo-mcp 命令。
可用工具
资产工具
| 工具 | 描述 | 参数 |
|---|---|---|
get_assets | 获取所有 Indigo iAssets 的价格和利息数据 | 无 |
get_asset | 获取特定 iAsset 的详情 | asset:iUSD、iBTC、iETH、iSOL、iEUR、iJPY 或 iADA |
get_asset_price | 获取特定 iAsset 的当前价格 | asset:iUSD、iBTC、iETH、iSOL、iEUR、iJPY 或 iADA |
get_ada_price | 获取当前 ADA 对 USD 的价格 | 无 |
get_indy_price | 获取当前 INDY 代币对 ADA 和 USD 的价格 | 无 |
CDP / 贷款工具
| 工具 | 描述 | 参数 |
|---|---|---|
get_all_cdps | 获取所有 CDP/贷款,可按 iAsset 筛选 | asset?:iAsset 筛选条件;limit?:1-500(默认 50);offset?:分页偏移量 |
get_cdps_by_owner | 获取特定所有者的 CDP | owner:付款密钥哈希(56 位十六进制)或 bech32 地址 |
get_cdps_by_address | 获取特定 Cardano 地址的 CDP | address:bech32 地址(addr1... 或 addr_test1...) |
analyze_cdp_health | 分析抵押率和清算风险 | owner:付款密钥哈希或 bech32 地址 |
CDP 写入工具
以 Pyth 定价的 iAssets 有提交时限。 目前,每种 iAsset 都通过 Pyth 定价,链上喂价验证器仅接受价格更新后 280 秒 内提交的交易。依赖价格的写入工具(
open_cdp、withdraw_cdp、mint_cdp、redeem_cdp、freeze_cdp、leverage_cdp、redeem_rob)因此会返回一个summary.pyth区块,其中包含价格、时间戳和submitBefore截止时间。如果签名耗时超过该时间(例如使用硬件钱包,或由人工在浏览器中批准),请重新构建交易,而不是提交已过期的交易。价格更新过期后,构建时会被拒绝,并提供重试提示。
| 工具 | 描述 | 参数 |
|---|---|---|
open_cdp | 开启新的 CDP 仓位(返回未签名的 CBOR 交易) | address:bech32 地址;asset:iUSD、iBTC、iETH、iSOL、iEUR、iJPY 或 iADA;collateralAmount:lovelace;mintAmount:最小单位的 iAsset 数量 |
deposit_cdp | 向 CDP 存入额外抵押品 | address:bech32 地址;asset:iAsset;cdpTxHash:CDP UTxO 交易哈希;cdpOutputIndex:输出索引;amount:lovelace |
withdraw_cdp | 从 CDP 提取抵押品 | address:bech32 地址;asset:iAsset;cdpTxHash:CDP UTxO 交易哈希;cdpOutputIndex:输出索引;amount:lovelace |
close_cdp | 关闭 CDP 并收回抵押品 | address:bech32 地址;asset:iAsset;cdpTxHash:CDP UTxO 交易哈希;cdpOutputIndex:输出索引 |
CDP 铸造/销毁工具
| 工具 | 描述 | 参数 |
|---|---|---|
mint_cdp | 从现有 CDP 铸造额外 iAssets(增加债务) | address:bech32 地址;asset:iUSD、iBTC、iETH、iSOL、iEUR、iJPY 或 iADA;cdpTxHash:CDP UTxO 交易哈希;cdpOutputIndex:CDP UTxO 输出索引;amount:最小单位的 iAsset 数量 |
burn_cdp | 销毁 iAssets 以减少 CDP 债务 | address:bech32 地址;asset:iUSD、iBTC、iETH、iSOL、iEUR、iJPY 或 iADA;cdpTxHash:CDP UTxO 交易哈希;cdpOutputIndex:CDP UTxO 输出索引;amount:最小单位的 iAsset 数量 |
CDP 清算与赎回工具
| 工具 | 描述 | 参数 |
|---|---|---|
liquidate_cdp | 通过稳定池清算抵押不足的 CDP | address:bech32 地址;asset:iAsset;cdpTxHash:CDP UTxO 交易哈希;cdpOutputIndex:输出索引 |
redeem_cdp | 从 CDP 赎回 iAsset | address:bech32 地址;asset:iAsset;cdpTxHash:CDP UTxO 交易哈希;cdpOutputIndex:输出索引;amount:以最小单位表示的 iAsset 数量 |
freeze_cdp | 冻结 CDP 以阻止后续操作 | address:bech32 地址;asset:iAsset;cdpTxHash:CDP UTxO 交易哈希;cdpOutputIndex:输出索引 |
merge_cdps | 将多个 CDP 合并为一个 | address:bech32 地址;cdpOutRefs:{txHash, outputIndex} 数组(至少 2 个) |
杠杆 CDP 工具
| 工具 | 描述 | 参数 |
|---|---|---|
leverage_cdp | 通过针对 ROB 仓位进行赎回来开立杠杆 CDP | address:bech32 地址;asset:iAsset;leverage:杠杆倍数(例如 2.0);baseCollateral:lovelace 数量 |
稳定池工具
| 工具 | 描述 | 参数 |
|---|---|---|
get_stability_pools | 获取每种 iAsset 的最新稳定池状态 | 无 |
get_stability_pool_accounts | 获取所有已开启的稳定池账户,可按 iAsset 筛选 | asset?:iUSD、iBTC、iETH、iSOL、iEUR、iJPY 或 iADA |
get_sp_account_by_owner | 获取特定所有者的稳定池账户 | owners:付款密钥哈希或 bech32 地址数组 |
质押工具
| 工具 | 描述 | 参数 |
|---|---|---|
get_staking_info | 获取当前 INDY 质押管理器状态 | 无 |
get_staking_positions | 获取所有已开启的 INDY 质押仓位 | 无 |
get_staking_positions_by_owner | 获取特定所有者的 INDY 质押仓位 | owners:付款密钥哈希或 bech32 地址数组 |
get_staking_position_by_address | 获取单个地址的 INDY 质押仓位 | address:Cardano bech32 地址 |
稳定池请求工具
| 工具 | 描述 | 参数 |
|---|---|---|
process_sp_request | 处理待处理的稳定池请求(协议维护) | address:bech32 地址;asset:iAsset;accountTxHash:账户 UTxO 交易哈希;accountOutputIndex:输出索引 |
annul_sp_request | 取消待处理的稳定池请求 | address:bech32 地址;accountTxHash:账户 UTxO 交易哈希;accountOutputIndex:输出索引 |
质押写入工具
| 工具 | 描述 | 参数 |
|---|---|---|
open_staking_position | 创建新的质押头寸以质押 INDY 代币 | address:bech32 地址;amount:以最小单位表示的 INDY 数量 |
adjust_staking_position | 调整现有质押头寸(增加或移除 INDY) | address:bech32 地址;amount:正数表示增加质押,负数表示解除质押;positionTxHash:UTxO 交易哈希;positionOutputIndex:UTxO 输出索引 |
close_staking_position | 关闭质押头寸并解除所有 INDY 质押 | address:bech32 地址;positionTxHash:UTxO 交易哈希;positionOutputIndex:UTxO 输出索引 |
质押奖励工具
| 工具 | 描述 | 参数 |
|---|---|---|
distribute_staking_rewards | 将收集器 UTxO 中收集的 ADA 奖励分发给质押者 | address:bech32 地址;collectorTxHashes:{txHash, outputIndex} 数组 |
分析与 APR 工具
| 工具 | 描述 | 参数 |
|---|---|---|
get_tvl | 从 DefiLlama 获取历史 TVL 数据 | 无 |
get_apr_rewards | 获取所有 APR 奖励记录 | 无 |
get_apr_by_key | 获取指定键的 APR | key:APR 键(例如 sp_iUSD_indy、stake_ada) |
get_dex_yields | 获取 iAsset 交易对的 DEX 农场收益 | 无 |
get_protocol_stats | 获取汇总的协议统计数据 | 无 |
治理工具
| 工具 | 描述 | 参数 |
|---|---|---|
get_protocol_params | 获取最新的治理协议参数 | 无 |
get_temperature_checks | 获取温度检查投票 | 无 |
get_polls | 获取所有治理投票 | 无 |
赎回与订单簿工具
| 工具 | 描述 | 参数 |
|---|---|---|
get_order_book | 获取未结清的 ROB(赎回订单簿)头寸 | asset?:iAsset 筛选条件;owners?:支付密钥哈希数组 |
get_redemption_orders | 获取已执行的赎回订单 | asset?:iAsset 筛选条件;limit?:最大记录数(默认 100) |
get_redemption_queue | 获取某个 iAsset 的未结清 ROB 订单簿条目 | asset:iUSD、iBTC、iETH、iSOL、iEUR、iJPY 或 iADA |
ROB 写入工具
| 工具 | 描述 | 参数 |
|---|---|---|
open_rob | 使用 ADA 和最高价格限制开立新的 ROB 头寸 | address:bech32 地址;asset:iAsset;lovelacesAmount:存入的 lovelace 数量;maxPriceNumerator + maxPriceDenominator:有理数形式的最高价格 |
cancel_rob | 取消现有的 ROB 头寸 | address:bech32 地址;robTxHash:ROB UTxO 交易哈希;robOutputIndex:输出索引 |
adjust_rob | 调整 ROB 中的 ADA(正数表示增加,负数表示减少) | address:bech32 地址;robTxHash:ROB UTxO 交易哈希;robOutputIndex:输出索引;lovelacesAdjustAmount:调整量;newMaxPriceNumerator? + newMaxPriceDenominator?:可选的新有理数形式最高价格 |
claim_rob | 领取从 ROB 头寸中收到的 iAssets | address:bech32 地址;robTxHash:ROB UTxO 交易哈希;robOutputIndex:输出索引 |
redeem_rob | 使用一个或多个 ROB 头寸赎回 iAssets | address:bech32 地址;asset:iAsset;redemptionRobs:{txHash, outputIndex, amount} 数组 |
DEX 代理工具
| 工具 | 描述 | 参数 |
|---|---|---|
get_steelswap_tokens | 获取 Steelswap DEX 上的所有可用代币 | 无 |
get_steelswap_estimate | 获取 Steelswap 的兑换估算 | tokenIn:输入代币;tokenOut:输出代币;amountIn:数量 |
get_iris_liquidity_pools | 获取 Iris 的流动性池 | tokenA?:第一个代币;tokenB?:第二个代币;dex?:DEX 筛选条件 |
get_blockfrost_balances | 获取 Cardano 地址的代币余额 | address:Cardano bech32 地址 |
收集器与 IPFS 工具
| 工具 | 描述 | 参数 |
|---|---|---|
get_collector_utxos | 获取用于费用分配的收集器 UTXO | length?:要返回的最大 UTXO 数 |
store_on_ipfs | 在 IPFS 上存储文本内容 | text:要存储的内容 |
retrieve_from_ipfs | 根据 CID 从 IPFS 检索内容 | cid:IPFS 内容标识符 |
利息工具(v3)
| 工具 | 描述 | 参数 |
|---|---|---|
collect_interest | 构建交易,为一个或多个 CDP 收取应计利息 | asset、cdps[] |
distribute_interest | 构建交易,分配已收取的利息(管理员) | address |
feed_interest_oracle | 向利息预言机提供新的利率(管理员) | address、预言机参数 |
get_interest_oracle | 读取 iAsset 当前的利息预言机状态 | asset |
预言机 / Pyth 工具(v3)
| 工具 | 描述 | 参数 |
|---|---|---|
get_oracle_price | 获取 iAsset 的链上价格(OracleNft / Delisted / Pyth) | asset |
get_pyth_price | 获取 iAsset 当前的 Pyth 价格及其链上馈送配置 | asset |
feed_price_oracle | 向由 OracleNft 支持的价格预言机提供新价格(管理员) | address、oracleTxHash、价格 |
稳定币互换工具(v3)
| 工具 | 描述 | 参数 |
|---|---|---|
get_stableswap_pool | 获取 (iAsset, 抵押品) 的稳定币互换池状态 | asset |
create_stableswap_order | 构建交易,通过稳定币互换池交换抵押品↔iAsset | address、asset、amount、minting |
cancel_stableswap_order | 构建交易,取消稳定币互换订单 | address、orderTxHash、orderOutputIndex |
环境变量
| 变量 | 必需 | 默认值 | 说明 |
|---|---|---|---|
INDEXER_URL | 否 | https://analytics.indigoprotocol.io/api | Indigo 分析 API 基础 URL |
BLOCKFROST_API_KEY | 写入操作必需 | — | 用于构建交易的 Blockfrost 项目 ID |
CARDANO_NETWORK | 否 | mainnet | Cardano 网络:mainnet、preprod 或 preview |
MCP_TRANSPORT | 否 | stdio | 传输模式:stdio 或 http |
PORT | 否 | 3000 | HTTP 服务端口(仅在 MCP_TRANSPORT=http 时使用);MCP_PORT 也可作为别名 |
HOST | 否 | 0.0.0.0 | HTTP 绑定地址(仅在 MCP_TRANSPORT=http 时使用);设为 127.0.0.1 可仅绑定到本地 |
X402_PRIVATE_KEY | 否 | — | 付款方钱包的 EVM 私钥(0x…)——启用通过拆分流程自动付款 |
PAYMENT_SERVER | 否 | https://mcp.openmm.io | 结算工作进程/代理 URL |
X402_TESTNET | 否 | false | 使用 Base Sepolia 测试网 |
X402_FACILITATOR_URL | 否 | — | 备用 Facilitator(仅在未设置 PAYMENT_SERVER 时使用) |
示例查询
连接到 LLM Agent 后,你可以用自然语言提问,例如:
- “所有 Indigo iAssets 当前的价格是多少?”
- “iUSD 现在的价格是多少?”
- “ADA 值多少美元?”
- “显示所有 iETH CDP”
- “这个地址拥有哪些 CDP?”(粘贴 Cardano 地址)
- “分析我的 CDP 健康状况”(提供你的地址或付款密钥哈希)
- “我的持仓是否有被清算的风险?”
- “显示当前稳定池状态”
- “我的稳定池存款是多少?”(提供你的地址)
- “我质押了多少 INDY?”(提供你的地址)
- “Indigo 当前的 TVL 是多少?”
- “我在 iUSD 稳定池中能获得多少 APR?”
- “当前治理协议参数是什么?”
- “显示 iUSD 赎回队列”
- “获取将 100 ADA 兑换为 iUSD 的 Steelswap 估算”
- “iAsset 交易对当前的 DEX 收益率是多少?”
分发
该服务发布在三个地方,它们并非同一构建产物。
| 目标 | 构建方式 | 输出 | 发布方式 |
|---|---|---|---|
npm — @indigoprotocol/indigo-mcp | scripts/build.sh | dist/ | CI,在 v* 标签上触发 |
MCP Registry — io.github.IndigoProtocol/indigo-mcp | server.json | 仅元数据 | CI,在 v* 标签上触发(GitHub OIDC——无需令牌) |
| Smithery | scripts/smithery-build.sh | .smithery/stdio/server.mcpb | 手动运行 pnpm smithery:publish |
容器镜像(Dockerfile)从源代码构建,由 Fly 和其他容器托管平台使用。它不会使用 .smithery/ 输出——该路径仅供 Smithery 使用。
发布版本
- 合并版本号更新(
package.json;SERVER_VERSION从中读取) git tag vX.Y.Z && git push origin vX.Y.Z- CI 会先发布到 npm,然后发布到 MCP Registry(Registry 通过软件包的
mcpName字段验证所有权,因此必须先发布到 npm) - 对照 Registry 验证,而不是查看工作流:
npm view @indigoprotocol/indigo-mcp version - 为托管的 HTTP 端点运行
fly deploy,并为 Smithery 运行pnpm smithery:publish
开发
先决条件
- Node.js >= 20(捆绑的
undici需要全局File,该全局对象从 Node 20 开始提供) - npm
设置
git clone https://github.com/IndigoProtocol/indigo-mcp.git
cd indigo-mcp
npm install
npm run dev # run with tsx (hot reload)
脚本
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
项目结构
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
通过 stdin 测试
服务通过 stdio 使用 JSON-RPC 进行通信。你可以直接测试工具:
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 付费门控
Indigo MCP 可选择使用 x402 protocol,按次调用收取微额费用,以限制工具的使用。默认禁用付费功能——至少设置一个钱包地址即可启用。
工作原理
付费采用拆分执行模式,与 openMM-MCP 使用的架构相同:
- 调用工具(调用方无需提供付费标头)
- 门控会拦截调用并联系结算工作进程(默认位于
mcp.openmm.io) - 工作进程返回带有 EIP-3009 要求(金额、接收方、链)的
402响应 - 门控使用
X402_PRIVATE_KEY在本地签名——密钥不会离开此进程 - 门控携带已签名的付费信息重试 → 工作进程在链上验证并签发 JWT
- 门控在本地验证 JWT,并执行原始工具处理程序
- 结算交易哈希会注入工具响应
这样可以保持清晰的进程隔离:indigo-mcp 不会持有接收方钱包,只持有付款方密钥。验证和结算由 openmm.io 代理处理。
- 读取工具(
get_tvl、get_asset_price等)每次调用收费 $0.001 USDC - 分析工具(
analyze_cdp_health)每次调用收费 $0.005 USDC - 写入工具(
open_cdp、mint_cdp等)每次调用收费 $0.01 USDC
环境变量
| 变量 | 必需条件 | 默认值 | 描述 |
|---|---|---|---|
X402_PRIVATE_KEY | 启用所需 | — | 付款方钱包的 EVM 私钥(0x…)——启用拆分付费 |
PAYMENT_SERVER | 可选 | https://mcp.openmm.io | 结算工作进程 / 代理 URL |
X402_TESTNET | 可选 | false | 使用 Base Sepolia 测试网 |
X402_FACILITATOR_URL | 可选 | — | 备用协调器 URL(仅在未设置 PAYMENT_SERVER 时使用) |
拆分执行流程
设置 X402_PRIVATE_KEY 后,每次付费工具调用都会透明地按以下方式处理:
- 门控联系
PAYMENT_SERVER(默认为https://mcp.openmm.io) - 在本地签署 EIP-3009——私钥不会离开此进程
- 代理在链上验证并签发短时有效的 JWT
- 门控验证 JWT、执行工具,并将结算交易哈希注入响应
如果未设置 X402_PRIVATE_KEY,门控将处于禁用状态,所有工具都会在无需付费的情况下执行。
# 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
本地开发
# 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
配置带 x402 的 MCP 客户端
将 env 块添加到客户端使用的 MCP 配置文件中:
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——同一 env 块也适用于 ~/.cursor/mcp.json 或 ~/.codeium/windsurf/mcp_config.json。
在 Base 主网上,将
X402_TESTNET设为false(或省略该变量)。
许可证
ISC
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。