mcpField
M
morpho-cli

morpho-cli

github.com/morpho-orgその他483 回インストール今日更新
リポジトリ

morpho-cli について

morpho-cli は、Morpho プロトコルのデータ照会と未署名トランザクションの準備を行う実験的なコマンドラインスキルです。複数の EVM チェーンに対応し、シミュレーションと安全上の指針を提供します。署名やブロードキャストは行いません。

主な機能

  1. 01ボールト、マーケット、ポジション、残高の照会
  2. 02ボールトとマーケットの未署名トランザクション準備
  3. 03準備した操作のシミュレーション
  4. 04警告付きの構造化 JSON 出力

活用シーン

  1. 01ボールトの利回りと市場状況の確認
  2. 02署名前の操作内容の確認
  3. 03借入の健全性と出金流動性の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/morpho-org/morpho-skills --skill morpho-cli

インストール後、Claude Code で/morpho-cliを入力して読み込まれたか確認します。

同梱ファイルreferences/read.mdreferences/write.md

詳細

morpho-cli

実験的(v1.0 未満) — コマンド構文、レスポンススキーマ、利用可能な操作は変更される場合があります。重要な出力は必ず個別に検証してください。

Morpho プロトコルのデータを照会し、署名されていないトランザクションを作成します。すべてのコマンドは JSON を標準出力に出力します。秘密鍵は不要です。

npx @morpho-org/cli@latest <command> [options]

対応チェーン:ethereum、base、arbitrum、optimism、polygon、unichain、worldchain、katana、hyperevm、monad、stable。すべてのコマンドで --chain が必要です。

レスポンススキーマ

  • 読み取りコマンド — すべての読み取りツールの正確な JSON 形式。すべてのレスポンスに適用される読み取り時の規則も含まれます
  • 書き込みコマンド — PreparedOperation の形式、outcome のサブスキーマ、および各 prepare-* ツールの入力形式

クイックリファレンス

# Read — query protocol state
npx @morpho-org/cli@latest query-vaults    --chain base [--asset-symbol USDC] [--asset-address 0x...] [--sort apy_desc|apy_asc|tvl_desc|tvl_asc] [--limit 5] [--skip 0] [--fields address,name,symbol,apyPct,tvl,tvlUsd,feePct]
npx @morpho-org/cli@latest get-vault       --chain base --address 0x...
npx @morpho-org/cli@latest query-markets   --chain base [--loan-asset 0x...] [--collateral-asset 0x...] [--sort-by supplyApy|borrowApy|netSupplyApy|netBorrowApy|supplyAssetsUsd|borrowAssetsUsd|totalLiquidityUsd] [--sort-direction asc|desc] [--limit 10] [--skip 0] [--fields supplyApy,borrowApy,totalSupply,totalBorrow,totalCollateral,totalLiquidity,supplyAssetsUsd,borrowAssetsUsd,collateralAssetsUsd,liquidityAssetsUsd]
npx @morpho-org/cli@latest get-market      --chain base --id 0x...
npx @morpho-org/cli@latest get-positions   --chain base --user-address 0x...
npx @morpho-org/cli@latest get-token-balance --chain base --user-address 0x... --token-address 0x...

# Write — prepare unsigned transactions (simulation runs automatically via @morpho-org/evm-simulation)
npx @morpho-org/cli@latest prepare-deposit              --chain base --vault-address 0x... --user-address 0x... --amount 1000
npx @morpho-org/cli@latest prepare-withdraw             --chain base --vault-address 0x... --user-address 0x... --amount max
npx @morpho-org/cli@latest prepare-supply               --chain base --market-id 0x... --user-address 0x... --amount 5000
npx @morpho-org/cli@latest prepare-borrow               --chain base --market-id 0x... --user-address 0x... --borrow-amount 1
npx @morpho-org/cli@latest prepare-repay                --chain base --market-id 0x... --user-address 0x... --amount max
npx @morpho-org/cli@latest prepare-supply-collateral    --chain base --market-id 0x... --user-address 0x... --amount 5000
npx @morpho-org/cli@latest prepare-withdraw-collateral  --chain base --market-id 0x... --user-address 0x... --amount max


# Utility
npx @morpho-org/cli@latest health-check
npx @morpho-org/cli@latest get-supported-chains

書き込みワークフロー:準備 → 提示

すべての書き込み操作は 2 つのステップで行います。シミュレーションは prepare-* 内で自動的に実行されます。

  1. 準備 — prepare-* コマンドを実行します。CLI がトークンの小数桁数、許可、承認、シミュレーションを自動的に処理します。transactions、summary、warnings、outcome(実行後の状態プレビュー)、および任意の simulation ブロックを含む PreparedOperation が返されます。
  2. シミュレーションを検証: レスポンスの任意の simulation.transfers には、EVM シミュレーションで確認された実際の送金が一覧表示されます。Tenderly が設定され(TENDERLY_* 環境変数が設定された MCP パス)、正常に実行された場合は、simulation.assetChanges[] も含まれます。各エントリには { type, from, to, amount, rawAmount, dollarValue, tokenInfo: { address, symbol, decimals, name } } が格納されます。よりわかりやすい要約には、(存在する場合)assetChanges を使用してください。transfers はエージェント側で確認する際の正規の情報源です。simulation がなく、error レベルの警告(SIMULATION_REVERTED、BUNDLER_RETAINS_FUNDS、SANCTIONED_ADDRESS)がある場合、そのバンドルは問題があると判明しています。署名用にトランザクションを提示しないでください。
  3. 提示 — 要約、署名されていないトランザクションの一覧、outcome、および警告(ヘルスファクターの低下、流動性不足)を表形式で提示します。

シミュレーションはすべての prepare-* 呼び出しの一部としてインラインで実行されます。個別のシミュレーションコマンドはありません。

操作outcome の形式表示すべき主なフィールド
deposit、withdraw(ボールト)outcome.vaultsharesReceived、assetsReceived、positionAssets、positionShares
supply、borrow、repay、supply_collateral、withdraw_collateral(マーケット)outcome.markethealthFactor、isHealthy、maxBorrowable、utilizationBeforePct → utilizationAfterPct、borrowApyBeforePct → borrowApyAfterPct、および操作後の supplied / borrowed / collateral(生の整数文字列 — 10^decimals で割ります)

シミュレーションの失敗

リバート原因対処方法
ERC20: insufficient allowance承認が不足しています再準備してください。CLI が自動的に承認を含めるはずです
ERC4626ExceededMaxWithdrawボールトの流動性が不足しています金額を減らしてください(下記参照)
insufficient balanceユーザーのトークン残高が不足していますユーザーに伝えてください
カスタムエラーの 16 進数値プロトコル固有ですget-market または get-vault で状態を照会して原因を調べてください

一部引き出し

prepare-withdraw --amount max で残高全額を引き出せない場合、CLI は warnings[] で流動性不足を示す PreparedOperation を返します。応答は引き続き有効で、現時点で引き出し可能な最大額を表しています。

  1. 警告をそのままユーザーに伝えてください。より少ない額での引き出しを黙って受け入れてはいけません。
  2. 次の2つの選択肢を提示してください。
    • CLI が準備した一部の額を受け入れる(具体的な額は outcome.vault.assetsReceived を確認してください。必要に応じて、準備から実行までに利息が発生することへの安全余裕として、その額のおよそ99%を使って --amount <value> を指定し、prepare-withdraw を再実行してください)。
    • 流動性が増えるまで待つ。ロック中の資産は、原資産市場の借り手が返済するか、キュレーターが再配分するとロックが解除されます。
  3. summary 文字列を解析して、額を決して推測しないでください。これは人間向けの文であり、機械可読なフィールドではありません。

安全ルール

  1. 提示する前にシミュレーションを確認する — 応答に simulation.transfers があるか確認してください。これがなく、warnings に error レベルの項目が含まれている場合は、提示する前に処理を停止して原因を調査してください。
  2. 署名またはブロードキャストを決して行わない — 未署名のペイロードのみ扱ってください。
  3. 借入時はヘルスファクターに注意する — 1.1未満の場合は警告してください。
  4. 一部引き出しに伴う流動性の制約を明確に伝える。

CLI エラー

npx @morpho-org/cli@latest コマンドが失敗した場合は、処理を停止してエラーをユーザーに報告してください。次のことは行わないでください。

  • 自分で考えた別のパラメーターで再試行する
  • 代替ツールや API に切り替える
  • 必須オプションの不足を回避しようとする
  • jq やその他のフィルターに出力をパイプする — 応答の整形には、CLI 組み込みのフラグ(--fields、--sort-by、--limit など)を使用する

よくある間違い

  • --chain を指定し忘れる — すべてのコマンドで指定が必要で、デフォルト値はありません
  • チェーン名(ethereum、base)ではなく、チェーン ID(1、8453)を使う
  • TokenAmount.value を 10^decimals で割る — TokenAmount の値にはすでに小数点が適用されています(USDC の値が "1000" の場合、1,000マイクロUSDCではなく1,000ドルです)。*Pct フィールドはすでにパーセントに換算されており、*Usd フィールドはすでにドル単位です。生の整数文字列が含まれるのは outcome.market.{supplied,borrowed,collateral} と outcome.vault.{sharesReceived,assetsReceived,positionShares} のみで、表示するには /10^decimals が必要です。
  • 小数点以下の桁数を18と決めつける — USDC/USDT は6桁、WBTC/cbBTC は8桁です。応答メタデータから小数点以下の桁数を読み取り、決して推測しないでください。
  • --amount に生の単位を渡す — CLI が受け取るのは人間が読める値です(1000000000 ではなく 1000)。
  • simulation フィールドがなく、error レベルの警告がある場合に無視する — 提示する前に原因を調査してください。
  • TokenAmount.value から額を再計算する — 値にはすでに小数点が適用されています。ユーザーにはそのまま提示してください。

コメント