Indigo Protocol Mcp について
Indigo Protocol Mcpは、Cardano上のIndigo Protocol向けMCPサーバーです。AIエージェントにiAsset価格やCDP分析、プロトコルデータを提供し、一部の操作にも対応します。
主な機能
- 01iAsset、ADA、INDY価格の取得
- 02CDPの閲覧と健全性分析
- 03安定プール、ステーキング、ガバナンスの確認
- 04TVL、APR、DEXデータの参照
- 05CDPと償還の操作
活用シーン
- 01iAsset価格と金利データの追跡
- 02保有者のCDP清算リスクの確認
- 03利回り、ガバナンス、プールの分析
- 04ツールを使ったCDPポジション管理
MCP 対応
MCPサーバーは、Indigo Protocolの資産、CDP、安定プール、ステーキング、ガバナンス、DEXデータと一部のオンチェーン操作ツールをクライアントに公開します。stdioとHTTPに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
69掲載時のツール一覧 · 3 週間前に更新
このツールにパラメーターはありません。
詳細
Indigo MCP
Indigo Protocol 用の MCP サーバーです。Model Context Protocol を介して、Indigo の iAsset データ、価格、CDP/ローン分析を LLM エージェントに提供します。
⚡ クイックスタート — 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/ローンの閲覧
- payment key hash または bech32 アドレスによる所有者の検索
- 担保率と清算リスクの状態による CDP の健全性分析
- ステーブルプールの状態およびアカウントの照会
- INDY のステーキングポジションおよびマネージャーの状態
- プロトコル分析:TVL、APR 報酬、DEX 利回り、集計統計
- ガバナンス:プロトコルパラメーター、投票、温度チェック
- 償還オーダーブックとキューの集計
- DEX プロキシ:Steelswap のスワップ、Iris の流動性プール、Blockfrost の残高
- CDP の清算、償還、凍結、統合操作
- ROB ポジションによるレバレッジ CDP の開設
- ROB(Redemption Order Book)ポジションの管理
- オラクルの金利フィードと初期化
- ステーブルプールのリクエスト処理とキャンセル
- ステーキング報酬の配布
- コレクターの 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
HTTP トランスポートをポート 3000 で実行します(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 を返し、以降のリクエストではこの ID を送り返す必要があります。再起動したクライアントは、再度 initialize を実行するだけで接続できます。既存のセッションには影響せず、サーバーを再起動する必要もありません。バインドアドレスとポートは HOST と PORT で指定します(PORT の別名として MCP_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 文字の 16 進数)または 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)は、価格、そのタイムスタンプ、submitBefore期限を含むsummary.pythブロックを返します。署名にそれ以上の時間がかかる場合(ハードウェアウォレットを使用する場合や、ブラウザーで人間が承認する場合など)は、古いトランザクションを送信せず、トランザクションを再構築してください。期限切れの価格更新は、ビルド時に再試行のヒントとともに拒否されます。
| ツール | 説明 | パラメーター |
|---|---|---|
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 を 1 つに統合します | 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 | 1 つのアドレスの 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 | 1 つ以上の 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?: 1 つ目のトークン;tokenB?: 2 つ目のトークン;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 | 1つ以上の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…)— split フローによる自動支払いを有効にします |
PAYMENT_SERVER | いいえ | https://mcp.openmm.io | 決済ワーカー/プロキシの URL |
X402_TESTNET | いいえ | false | Base Sepolia テストネットを使用します |
X402_FACILITATOR_URL | いいえ | — | フォールバックのファシリテーター(PAYMENT_SERVER が未設定の場合のみ使用) |
クエリの例
LLM エージェントに接続すると、次のような自然言語で質問できます。
- 「すべての Indigo iAssets の現在の価格を教えてください」
- 「現在の iUSD の価格はいくらですか?」
- 「ADA の米ドル換算額はいくらですか?」
- 「すべての iETH CDP を表示してください」
- 「このアドレスが所有する CDP はどれですか?」(Cardano アドレスを貼り付けてください)
- 「自分の CDP の健全性を分析してください」(アドレスまたは支払いキーのハッシュを指定してください)
- 「清算リスクのあるポジションはありますか?」
- 「現在の安定性プールの状態を表示してください」
- 「自分の安定性プールへの預け入れ額を教えてください」(アドレスを指定してください)
- 「INDY のステーキング量を教えてください」(アドレスを指定してください)
- 「Indigo の現在の TVL はいくらですか?」
- 「iUSD 安定性プールで獲得できる APR はどのくらいですか?」
- 「現在のガバナンスプロトコルのパラメーターを教えてください」
- 「iUSD の償還キューを表示してください」
- 「100 ADA を iUSD にスワップする場合の Steelswap の見積もりを取得してください」
- 「iAsset ペアの現在の DEX 利回りを教えてください」
配布
このサーバーは 3 か所で公開されていますが、公開される成果物はそれぞれ異なります。
| 対象 | ビルド元 | 出力 | 公開者 |
|---|---|---|---|
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 に公開します(レジストリはパッケージの
mcpNameフィールドで所有権を検証するため、先に npm への公開が必要です) - ワークフローではなくレジストリで確認します:
npm view @indigoprotocol/indigo-mcp version - ホストされた HTTP エンドポイントには
fly deploy、Smithery にはpnpm smithery:publishを実行します
開発
前提条件
- Node.js >= 20(バンドルされている
undiciでは、Node 20 で追加されたFileグローバルが必要です) - 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 を使った呼び出しごとのマイクロペイメントで、ツールへのアクセスを任意で制限できます。支払いはデフォルトで無効です。有効にするには、少なくとも 1 つのウォレットアドレスを設定してください。
仕組み
支払いには、openMM-MCP と同じアーキテクチャの 分割実行 モデルを使用します:
- ツールが呼び出されます(呼び出し元から支払いヘッダーを送る必要はありません)
- ゲートが呼び出しをインターセプトし、決済ワーカー(デフォルトでは
mcp.openmm.io)に問い合わせます - ワーカーは EIP-3009 の要件(金額、受取人、チェーン)とともに
402を返します - ゲートは
X402_PRIVATE_KEYを使ってローカルで署名します。このキーがこのプロセスの外に出ることはありません - ゲートは署名済みの支払い情報を付けて再試行し、ワーカーがオンチェーンで検証して JWT を発行します
- ゲートは JWT をローカルで検証し、元のツールハンドラーを実行します
- 決済トランザクションのハッシュがツールの応答に挿入されます
これにより、プロセスの分離を明確に保てます。indigo-mcp が保持するのは支払い側のキーのみで、受取人のウォレットを保持することはありません。検証と決済は openmm.io プロキシが処理します。
- 読み取りツール(
get_tvl、get_asset_price、…)は、1 回の呼び出しにつき $0.001 USDC です - 分析ツール(
analyze_cdp_health)は、1 回の呼び出しにつき $0.005 USDC です - 書き込みツール(
open_cdp、mint_cdp、…)は、1 回の呼び出しにつき $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 クライアント設定
クライアントが使用する MCP 設定ファイルに env ブロックを追加します:
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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。