mcpField
G
grimoire-morpho-blue

grimoire-morpho-blue

github.com/franalgaba其他61.1k 次安装25 周前更新
代码仓库

关于 grimoire-morpho-blue

grimoire-morpho-blue 是查询 Morpho Blue 部署信息、市场与金库数据的技能,供策略构建和 Agent 工作流使用。它支持 APY 与流动性指标查询,并可生成带来源信息的 spell 参数快照。

主要功能

  1. 01查询部署信息与合约地址
  2. 02筛选和排序金库
  3. 03生成金库参数快照
  4. 04查询 Vault V2 可提取流动性
  5. 05比较 APY、利用率及金库指标

适用场景

  1. 01按链、资产和收益条件筛选金库
  2. 02检查金库的可提取流动性
  3. 03比较市场 APY 或利用率
  4. 04为 spell 生成金库数据参数

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/franalgaba/grimoire --skill grimoire-morpho-blue

安装后在 Claude Code 中输入/grimoire-morpho-blue确认已加载。

详细介绍

Grimoire Morpho Blue 技能

使用此技能查询 Morpho Blue 部署元数据和金库快照,以获取 spell 参数。

首选调用方式:

  • grimoire venue morpho-blue ...
  • npx -y @grimoirelabs/cli venue morpho-blue ...(无需安装)
  • bun run packages/cli/src/index.ts venue morpho-blue ...(在仓库本地运行)
  • grimoire-morpho-blue ...(来自 @grimoirelabs/venues 的直接二进制文件)

建议预检:

  • grimoire venue doctor --adapter morpho-blue --chain 8453 --rpc-url <rpc> --json

使用 --format spell 输出 params: 快照块。

快照包含来源字段(snapshot_at、snapshot_source)和 APY 数据。

使用 vault-liquidity 查询 Morpho Vault V2 的全金库可提取流动性。它会读取链上的 Vault V2 字段,将 Morpho Market V1 流动性适配器资产限制在市场可用底层资产现金范围内,并且不使用 ERC-4626 maxWithdraw / maxRedeem,因为 Vault V2 会有意将其返回为 0。

APY 语义:

  • apy / net_apy 是十进制利率(例如,0.0408 = 4.08%)。
  • 报告时,尽可能同时提供十进制值和百分比显示。

命令

  • grimoire venue morpho-blue info — 适配器元数据
  • grimoire venue morpho-blue addresses [--chain <id>] — 各链上的合约地址
  • grimoire venue morpho-blue vaults [--chain <id>] [--asset <symbol>] [--min-tvl <usd>] [--min-apy <decimal>] [--min-net-apy <decimal>] [--sort <netApy|apy|tvl|totalAssetsUsd|name>] [--order <asc|desc>] [--limit <n>] — 列出并筛选金库
  • grimoire venue morpho-blue vaults-snapshot [--chain <id>] [--asset <symbol>] [--min-tvl <usd>] [--min-apy <decimal>] [--min-net-apy <decimal>] [--sort <netApy|apy|tvl|totalAssetsUsd|name>] [--order <asc|desc>] [--limit <n>] — 为金库生成 spell params: 块(仅限 Agent)
  • grimoire venue morpho-blue vault-liquidity [--chain <id>] --vault <address> [--rpc-url <url>] [--format json|table|spell] — 读取 Morpho Vault V2 以资产单位和整数 bps 表示的可提取流动性

示例

grimoire venue morpho-blue info --format table
grimoire venue morpho-blue addresses --chain 1
grimoire venue morpho-blue addresses --chain 8453
grimoire venue morpho-blue vaults --chain 8453 --asset USDC --min-tvl 5000000 --format table
grimoire venue morpho-blue vaults --chain 8453 --asset USDC --min-tvl 5000000 --format spell
grimoire venue morpho-blue vaults-snapshot --chain 8453 --asset USDC --min-tvl 5000000
grimoire venue morpho-blue vault-liquidity --chain 8453 --vault 0xbeef0e0834849aCC03f0089F01f4F1Eeb06873C9 --format json
grimoire venue morpho-blue vault-liquidity --chain 8453 --vault 0xbeef0e0834849aCC03f0089F01f4F1Eeb06873C9 --format spell

使用 vaults-snapshot 为 spell 输入输出 params: 块。此命令仅供 Agent 使用(交互模式下会隐藏输出)。

vault-liquidity --format spell 会输出可直接用于载荷的 JSON 参数,包括 protocol: morpho-vault-v2、metric: withdrawable_liquidity_bps、withdrawable_liquidity_assets、total_assets、idle_assets、liquidity_adapter 和 liquidity_adapter_assets。

需要保留的来源输出字段示例:

  • snapshot_at
  • snapshot_source
  • units(例如 net_apy=decimal、net_apy_pct=percent、tvl_usd=usd)

指标范围(Spell 比较)

Morpho 提供 apy 指标范围,并支持基于选择器的市场定位:

morpho_apy_default = apy(morpho, USDC)
morpho_apy_market = apy(morpho, USDC, "weth-usdc-86")
morpho_apy_market_id = apy(morpho, USDC, "0x...")
morpho_apy_generic = metric("apy", morpho, USDC, "wbtc-usdc-86")
morpho_utilization_bps = metric("utilization_bps", morpho, USDC, "wbtc-usdc-86")
vault_apy = metric("vault_apy", morpho, USDC, "vault=0xVaultAddress")
vault_net_apy = metric("vault_net_apy", morpho, USDC, "vault=0xVaultAddress")
vault_withdrawable_liquidity_bps = metric("withdrawable_liquidity_bps", morpho, USDC, "vault=0xVaultAddress")

使用 apy(morpho, asset[, selector]) 比较 Morpho Blue 市场 APY。 使用 metric("utilization_bps", morpho, asset[, selector]) 检查 Morpho Blue 市场利用率。 使用 metric("vault_apy", morpho, asset, selector) 或 metric("vault_net_apy", morpho, asset, selector) 比较 MetaMorpho 金库。 使用 metric("withdrawable_liquidity_bps", morpho, asset, selector) 检查 Morpho Vault V2 的实时可提取流动性。

选择器行为:

  • 市场未指定选择器(apy):按当前链上的 asset 解析,并选择 TVL 最高的匹配项
  • 配置中的市场选择器:使用适配器配置中的已知市场 ID(例如 weth-usdc-86)
  • 链上市场 ID 选择器:使用原始市场 ID(0x...)
  • 金库选择器(vault_apy / vault_net_apy):vault=<address|name|symbol> 或直接填写金库地址/名称/符号
  • vault_apy / vault_net_apy 必须明确指定选择器(不会隐式回退)

同一资产对应多个金库/市场时,请传入明确的选择器,以确保比较结果确定。

Spell 约束

Morpho Blue 操作不支持运行时约束(max_slippage 等)。涉及价值转移的操作需要显式指定 market_id。

morpho_blue.lend(USDC, params.amount, "cbbtc-usdc-86")
morpho_blue.withdraw(USDC, params.amount, "cbbtc-usdc-86")
morpho_blue.borrow(USDC, params.amount) with (
  market_id="cbbtc-usdc-86",
)
morpho_blue.supply_collateral(cbBTC, params.amount, "cbbtc-usdc-86")
morpho_blue.withdraw_collateral(cbBTC, params.amount, "cbbtc-usdc-86")

位置参数不便使用时,请使用 with (market_id=...):

morpho_blue.lend(USDC, params.amount) with (
  market_id="0x1234...abcd",
)

使用 grimoire venue morpho-blue vaults 查找可用的市场 ID。

操作选择指南

根据策略意图选择操作:

  • 仅供给策略(不计划借款):优先使用 vault_deposit / vault_withdraw。
  • 借款策略(或未来需要借款、还款或管理抵押品):使用显式指定 market_id 的市场操作。

硬性规则:

  • vault_deposit / vault_withdraw 需要显式指定金库地址,且不使用 market_id。
  • lend、withdraw、borrow、repay、supply_collateral、withdraw_collateral 需要显式指定 market_id。
  • 如果金库操作缺少金库地址,不要猜测:列出候选金库,并要求用户选择后再编写或执行。

操作语义

  • lend(asset, amount, market_id):借出市场的贷款资产(贷方一侧)。
  • withdraw(asset, amount, market_id):提取此前借出的贷款资产。
  • supply_collateral(asset, amount, market_id):提供抵押品以进行借款(借款方一侧)。
  • withdraw_collateral(asset, amount, market_id):取回已提供的抵押品。
  • borrow(asset, amount, collateral?, market_id):借入市场的贷款资产。
  • repay(asset, amount, market_id):偿还借入的贷款资产。
  • vault_deposit(asset, amount, vault_address):存入 MetaMorpho 金库。
  • vault_withdraw(asset, amount, vault_address):从 MetaMorpho 金库提取资产。

lend 和 supply_collateral 不能互换:

  • lend 的目标是获取贷款资产的贷方收益。
  • supply_collateral 用于管理借款额度所需的抵押品。
  • 抵押品代币可能有自身的原生收益机制(例如 wstETH),这与 Morpho 供给 APY 不同。

APY 预期:

  • lend 可累积市场供给 APY(以及可能的激励收益)。
  • supply_collateral 不会获得市场贷方 APY;它是借款的风险缓冲。
  • 抵押品代币可能有自身的原生收益机制(例如 wstETH),这与 Morpho 供给 APY 不同。

工作流模式

通过金库进行仅供给操作:

morpho_blue.vault_deposit(USDC, params.amount, "0xVaultAddress")

如果未提供金库,请先执行发现操作并询问用户选择:

grimoire venue morpho-blue vaults --chain <id> --asset <symbol> --sort netApy --order desc --limit 5 --format table

然后在 vault_deposit / vault_withdraw 中使用选定的金库地址。

借款工作流(市场):

morpho_blue.supply_collateral(WETH, params.collateral_amount, "weth-usdc-86")
morpho_blue.borrow(USDC, params.borrow_amount, WETH, "weth-usdc-86")

解除借款工作流:

morpho_blue.repay(USDC, params.repay_amount, "weth-usdc-86")
morpho_blue.withdraw_collateral(WETH, params.collateral_out, "weth-usdc-86")

通过市场进行仅借出操作(需要显式控制市场时):

morpho_blue.lend(USDC, params.amount, "cbbtc-usdc-86")

默认市场

该适配器预配置了 Ethereum(链 1)和 Base(链 8453)的市场:

Ethereum(链 1)
市场贷款资产抵押品LLTV
cbbtc-usdc-1USDCcbBTC86%
wbtc-usdc-1USDCWBTC86%
wsteth-weth-1WETHwstETH96.5%
Base(链 8453)
市场贷款资产抵押品LLTV
cbbtc-usdc-86USDCcbBTC86%
weth-usdc-86USDCWETH86%

说明

  • 输出为 JSON 或表格;vaults 也支持 --format spell。
  • 使用 SDK 的链地址注册表。
  • 自动化场景优先使用 --format json,快速排查时使用 --format table。

评论

支持 Markdown