mcpField
H
Haiku DeFi MCP — AI agent DeFi execution across 22 chains

Haiku DeFi MCP — AI agent DeFi execution across 22 chains

本地服务
npmjs.com金融数据226 周前更新

关于 Haiku DeFi MCP — AI agent DeFi execution across 22 chains

Haiku MCP Server 通过 Haiku API 为 AI Agent 提供跨链 DeFi 资产查询、报价和交易执行能力。它可由服务器持有私钥完成执行,也可将签名与广播交给外部钱包。

主要功能

  1. 01发现代币与 DeFi 资产
  2. 02查询多链钱包余额
  3. 03获取兑换与再平衡报价
  4. 04发现收益机会并分析投资组合
  5. 05构建交易并支持外部钱包签名
  6. 06可选自行签名和广播交易

适用场景

  1. 01查询钱包在多条链上的余额
  2. 02比较收益机会并分析持仓
  3. 03获取代币兑换或组合再平衡报价
  4. 04通过外部钱包签名并广播交易

MCP 相关

该 MCP 服务向客户端提供代币、余额、报价、收益发现、投资组合分析及交易执行工具。执行可由 Haiku 使用环境变量中的私钥完成,也可返回交易供外部钱包处理。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"haiku": {
"command": "npx",
"args": [
"-y",
"haiku-mcp-server"
],
"env": {
"HAIKU_API_KEY": "<HAIKU_API_KEY>",
"WALLET_PRIVATE_KEY": "<WALLET_PRIVATE_KEY>"
}
}
}
}
启动命令npx -y haiku-mcp-server
需要配置的环境变量
HAIKU_API_KEY密钥API key for higher rate limits (optional — works without)
WALLET_PRIVATE_KEY密钥Private key (0x hex) for self-contained execution without an external wallet

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmhaiku-mcp-server0.0.8

工具

7

收录的工具列表 · 更新于 3 周前

参数类型必填说明
networknumber否按网络筛选代币。常见网络:42161 (Arbitrum)、8453 (Base)、1 (Ethereum)、137 (Polygon)、10 (Optimism)、56 (BSC)
categoryenum否按代币类别筛选:'token'(普通代币)、'collateral'(Aave aToken)、'varDebt'(Aave 债务代币)、'vault'(Yearn/Morpho 金库)、'weightedLiquidity'(Balancer LP)、'concentratedLiquidity'(Uniswap V3 LP)。省略则返回所有类别。token | collateral | varDebt | vault | weightedLiquidity | concentratedLiquidity

详细介绍

Haiku MCP 服务

一个 MCP(模型上下文协议)服务,可让 AI Agent 通过 Haiku API 执行区块链交易。

npm version GitHub

功能

  • 代币发现:列出 21 个区块链网络支持的代币和 DeFi 资产
  • 余额查询:查询所有支持链上的钱包余额
  • 交易报价:获取兑换和投资组合再平衡的报价
  • 交易构建:将报价转换为未签名的 EVM 交易
  • 钱包集成:提取 EIP-712 载荷,供外部钱包签名(Coinbase、AgentKit、Safe 等)
  • 自包含执行:可通过 WALLET_PRIVATE_KEY 环境变量选择端到端执行
  • 收益发现:跨协议和链寻找收益率最高的 DeFi 机会,并按 APY、TVL 和类别筛选
  • 投资组合分析:分析钱包持仓,并根据实际持有的资产呈现与上下文相关的收益机会

安装

npm install haiku-mcp-server

或者直接使用 npx 运行:

npx haiku-mcp-server

配置

环境变量
变量必需描述
HAIKU_API_KEY否用于提高速率限制的 Haiku API 密钥。请联系 [email protected] 申请。
HAIKU_BASE_URL否API 基础 URL。默认为 https://api.haiku.trade/v1
WALLET_PRIVATE_KEY否用于通过 haiku_execute 自包含执行的私钥(0x 十六进制格式)。
RPC_URL_{chainId}否覆盖指定链的 RPC URL(例如,Arbitrum 的 RPC_URL_42161)。

注意: 不提供密钥也可以使用 API,但提供密钥可提高生产环境的速率限制。

Claude Desktop 配置

将以下内容添加到你的 claude_desktop_config.json:

{
  "mcpServers": {
    "haiku": {
      "command": "npx",
      "args": ["haiku-mcp-server"]
    }
  }
}

使用 API 密钥以提高速率限制:

{
  "mcpServers": {
    "haiku": {
      "command": "npx",
      "args": ["haiku-mcp-server"],
      "env": {
        "HAIKU_API_KEY": "your-api-key-here"
      }
    }
  }
}

可用工具

haiku_get_tokens

获取支持交易的代币和 DeFi 资产。

参数:

  • network(可选):按链 ID 筛选(例如,Arbitrum 的 42161)
  • category(可选):按代币类别筛选:
    • token - 常规代币(ETH、USDC 等)
    • collateral - 例如,Aave aToken(已存入的抵押品)
    • varDebt - 例如,Aave 可变债务代币
    • vault - 例如,Yearn/Morpho 收益金库
    • weightedLiquidity - 例如,Balancer LP 代币
    • concentratedLiquidity - 例如,Uniswap V3 LP 仓位

示例:

{
  "network": 42161,
  "category": "token"
}
haiku_get_balances

查询所有链上某个钱包地址的代币余额。

参数:

  • walletAddress(可选):钱包地址或 ENS 名称。未设置 WALLET_PRIVATE_KEY 时必填;设置后可省略,系统会从 WALLET_PRIVATE_KEY 自动推导地址。

示例:

{
  "walletAddress": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
}

设置了 WALLET_PRIVATE_KEY 时,省略 walletAddress 即可使用推导出的地址。

haiku_get_quote

获取代币兑换或投资组合再平衡的报价。

注意: 报价有效期为 5 分钟,但请尽可能在获取报价后立即执行——等待时间越长,价格变动的可能性越大,交易也越可能在链上失败。

参数:

  • inputPositions(必需):代币 IID 到支出金额的映射
  • targetWeights(必需):输出代币 IID 到权重的映射(总和必须为 1)
  • slippage(可选):最大滑点,使用小数表示(默认值:0.003)
  • receiver:接收钱包地址。未设置 WALLET_PRIVATE_KEY 时必填——必须显式提供。设置 WALLET_PRIVATE_KEY 后,如果省略则自动推导。未设置 WALLET_PRIVATE_KEY 时(路径 B),必须显式传入 receiver。

示例:

{
  "inputPositions": {
    "arb:0x82aF49447D8a07e3bd95BD0d56f35241523fBab1": "1.0"
  },
  "targetWeights": {
    "arb:0xaf88d065e77c8cC2239327C5EDb3A432268e5831": 0.5,
    "arb:0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9": 0.5
  },
  "slippage": 0.005
}

上述示例省略了 receiver(设置了 WALLET_PRIVATE_KEY 时有效)。对于路径 B,请加入 "receiver": "0x..."。

haiku_prepare_signatures

从报价中提取并规范化 EIP-712 签名载荷,以便使用外部钱包签名(仅限路径 B)。使用 quoteId 时,报价必须是在同一会话中获取的。

当由钱包 MCP 处理签名时(Coinbase Payments MCP、wallet-agent、AgentKit、Safe 等),请使用此工具。它会返回任何钱包的 signTypedData 都能使用的标准化类型化数据,以及分步说明。

参数:

  • quoteId(首选):来自 haiku_get_quote 的报价 ID — 服务会从会话缓存中解析完整报价。只有当 quoteId 对应的报价是在同一 MCP 会话中由 haiku_get_quote 返回时才有效;否则请使用 quoteResponse。
  • quoteResponse(备用):来自 haiku_get_quote 的完整响应对象(如果没有 quoteId)

返回:

  • requiresPermit2:是否需要 Permit2 签名
  • permit2:传递给 signTypedData 的 EIP-712 载荷(如需要)
  • requiresBridgeSignature:是否需要桥接签名
  • bridgeIntent:传递给 signTypedData 的 EIP-712 载荷(如需要)
  • sourceChainId:交易的链 ID
  • instructions:完成此流程的分步说明

示例:

{
  "quoteId": "abc123..."
}
haiku_discover_yields

发现 DeFi 协议中可产生收益的机会,并按 APY 或 TVL 排序。

可使用此工具回答“Arbitrum 上收益最高的借贷机会是什么”“TVL 至少为 100 万美元的金库中,哪些 APY 最高”或“我可以用 Base 上的 USDC 做什么”等问题。结果中的 iid 字段可直接用作 haiku_get_quote 中 targetWeights 对象的键。

参数:

  • network(可选):按链 ID 筛选(例如,Arbitrum 为 42161)
  • category(可选):lending(Aave 抵押品)、vault(Yearn/Morpho)、lp(Balancer/Uniswap)、all(默认值)
  • minApy(可选):最低 APY 百分比(例如,5 表示 APY ≥5%)
  • minTvl(可选):最低 TVL(美元)(例如,1000000 表示 ≥100 万美元)。筛选出成熟的主流金库。
  • sortBy(可选):apy(默认值)或 tvl,按降序排列
  • limit(可选):结果数量上限(默认值为 20)

示例:

{
  "network": 42161,
  "category": "lending",
  "minTvl": 1000000,
  "sortBy": "apy",
  "limit": 10
}
haiku_analyze_portfolio

分析钱包的 DeFi 投资组合,并展示相关的收益机会。

返回当前持仓,并补充可用 APY 选项、抵押品健康因子,以及根据钱包实际持仓提供的具体机会。可与 haiku_discover_yields 配合使用,以了解更广泛的市场情况,然后使用 haiku_get_quote 执行操作。

参数:

  • walletAddress(必填):要分析的钱包地址(0x...)

示例:

{
  "walletAddress": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
}
haiku_execute

执行报价。根据私钥由谁持有,有两种不同路径。

路径 A — 自包含(在环境变量中设置了 WALLET_PRIVATE_KEY):Haiku 在内部为 Permit2/桥接载荷签名并广播。返回交易哈希。

参数:

  • quoteId(必填):来自 haiku_get_quote 的报价 ID
  • sourceChainId(建议填写):报价响应中的链 ID。仅当报价是在同一会话中获取时才可省略——服务可从缓存中恢复。
  • permit2SigningPayload(可选):如果 haiku_get_quote 返回此项,则直接传入
  • bridgeSigningPayload(可选):如果 haiku_get_quote 返回此项,则直接传入(仅限跨链)
  • approvals(可选):如果 haiku_get_quote 返回此项,则直接传入

示例:

{
  "quoteId": "abc123...",
  "sourceChainId": 42161,
  "permit2SigningPayload": { /* from haiku_get_quote, if present */ },
  "approvals": [ /* from haiku_get_quote, if present */ ]
}

路径 B — 外部钱包(未设置 WALLET_PRIVATE_KEY,使用钱包 MCP):由你签名并广播。必须设置 broadcast: false——没有 WALLET_PRIVATE_KEY 时,haiku 无法签名或发送最终的 EVM 交易。如果你在未设置 WALLET_PRIVATE_KEY 的情况下调用 haiku_execute 并设置 broadcast: true,服务会返回错误,指示你设置 broadcast: false,并通过钱包 MCP 广播返回的交易。

调用 haiku_execute 前:

  1. 如果报价中的 approvals 非空:通过钱包 MCP 将每项批准作为交易 { to, data, value } 广播(如果存在 value,则一并传入,例如原生代币的情况),并等待确认。
  2. 如果需要签名:调用 haiku_prepare_signatures 并传入 quoteId,通过钱包 MCP 对返回的 EIP-712 载荷签名,然后在此处传入签名。

参数:

  • quoteId(必填):来自 haiku_get_quote 的报价 ID
  • sourceChainId(建议填写):报价响应中的链 ID。仅当报价是在同一会话中获取时才可省略——服务可从缓存中恢复。
  • broadcast(必填):必须为 false——haiku 会返回未签名的交易,供你广播
  • permit2Signature(可选):通过钱包 MCP 对 Permit2 载荷签名后得到的签名
  • userSignature(可选):通过钱包 MCP 对桥接载荷签名后得到的签名(仅限跨链)

示例:

{
  "quoteId": "abc123...",
  "sourceChainId": 42161,
  "broadcast": false,
  "permit2Signature": "0x..."
}

返回 { transaction: { to, data, value, chainId } }——将 transaction 传给钱包 MCP 的 sendTransaction。

代币 IID 格式

代币使用 IID 格式标识:chainSlug:tokenAddress

示例:

  • arb:0x82aF49447D8a07e3bd95BD0d56f35241523fBab1 - Arbitrum 上的 WETH
  • arb:0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee - Arbitrum 上的原生 ETH
  • base:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 - Base 上的 USDC

支持的链

链链 IDSlug
Arbitrum42161arb
Avalanche43114avax
Base8453base
Berachain80094bera
BNB Smart Chain56bsc
Bob60808bob
Ethereum1eth
Gnosis100gnosis
Hyperliquid999hype
Katana747474katana
Lisk1135lisk
MegaETH4326megaeth
Monad143monad
Optimism10opt
Plasma9745plasma
Polygon137poly
Scroll534352scroll
Sei1329sei
Sonic146sonic
Unichain130uni
World Chain480worldchain
ApeChain33139ape

工作流示例

路径 A:自包含兑换(已设置 WALLET_PRIVATE_KEY)

Haiku 负责所有签名和广播。返回交易哈希。

1. haiku_get_quote(inputPositions, targetWeights) → returns quoteId, sourceChainId, permit2SigningPayload?, bridgeSigningPayload?, approvals
2. haiku_execute(quoteId, sourceChainId, permit2SigningPayload?, bridgeSigningPayload?, approvals)
   → Haiku broadcasts approvals, signs Permit2/bridge internally, broadcasts swap, returns tx hash
路径 B:外部钱包(钱包 MCP 负责签名和广播)

未设置 WALLET_PRIVATE_KEY 且密钥由单独的钱包 MCP 持有时使用。

简单兑换(无需 Permit2 或桥接签名,例如输入原生 ETH):

1. haiku_get_quote(inputPositions, targetWeights, receiver) → returns quoteId, sourceChainId, approvals
2. For each item in approvals: broadcast as transaction { to, data, value } (include value when present) via wallet MCP and wait for confirmation
3. haiku_execute(quoteId, sourceChainId, broadcast: false)
   → returns { transaction: { to, data, value, chainId } }
4. Broadcast transaction via wallet MCP

需要 Permit2 或桥接签名时(例如输入 ERC-20 或跨链兑换):

1. haiku_get_quote(inputPositions, targetWeights, receiver) → returns quoteId, sourceChainId, approvals, permit2SigningPayload?, bridgeSigningPayload?
2. For each item in approvals: broadcast as transaction { to, data, value } (include value when present) via wallet MCP and wait for confirmation
3. haiku_prepare_signatures(quoteId) → returns normalized EIP-712 payloads + step-by-step instructions
4. Sign payloads via wallet MCP (e.g. coinbase_sign_typed_data) → get permit2Signature?, userSignature?
5. haiku_execute(quoteId, sourceChainId, permit2Signature?, userSignature?, broadcast: false)
   → returns { transaction: { to, data, value, chainId } }
6. Broadcast transaction via wallet MCP (e.g. coinbase_send_transaction)
收益发现
1. haiku_discover_yields with category/network/minTvl filters → find opportunities, note iid
2. haiku_get_quote with the chosen iid as a key in targetWeights
3. Execute via Path A or Path B above
投资组合分析与优化
1. haiku_analyze_portfolio with wallet address → review positions and opportunities
2. Optionally haiku_discover_yields for broader market context
3. haiku_get_quote to rebalance into higher-yielding positions
4. Execute via Path A or Path B above

交易签名

根据你的设置,有两种模式:

自包含模式(已设置 WALLET_PRIVATE_KEY):haiku_execute 会在内部完成所有签名并广播。返回交易哈希。无需外部签名。

外部钱包模式(未设置 WALLET_PRIVATE_KEY):使用 haiku_execute 时设置 broadcast: false(必需——没有私钥时,haiku 无法签名或广播)。如果在未设置 WALLET_PRIVATE_KEY 的情况下使用 broadcast: true 调用 haiku_execute,服务会返回错误,提示你设置 broadcast: false,并通过你的钱包 MCP 广播返回的交易。返回 { transaction: { to, data, value, chainId } },供你的钱包 MCP 广播。如果需要 Permit2 或桥接签名,请先调用 haiku_prepare_signatures。如果报价中包含授权,请在调用 haiku_execute 之前,通过你的钱包 MCP 广播每笔授权 { to, data, value }(如果存在 value,例如原生代币的 value,请一并包含)。

外部钱包设计允许 Agent 使用任何签名基础设施(钱包 MCP、硬件钱包、托管服务、MPC 等)。

跨链桥接签名

对于跨链兑换,报价可能会返回 isComplexBridge: true,表示除了 Permit2 之外(或作为替代),还需要桥接意图签名。

自包含模式(路径 A): 将报价中的 bridgeSigningPayload 传给 haiku_execute——它会在内部处理桥接签名。

外部钱包模式(路径 B): 使用 quoteId 调用 haiku_prepare_signatures——它会返回规范化的 bridgeIntent EIP-712 载荷。通过你的钱包 MCP 对其签名,然后将结果作为 userSignature 传给 haiku_execute。

传输模式

Stdio(默认)

标准 MCP stdio 传输——Claude Desktop、Cursor 等使用此模式。

npx haiku-mcp-server
Streamable HTTP

适用于远程托管、Smithery 和基于 Web 的 MCP 客户端的 HTTP 传输。

npx haiku-mcp-server --http
npx haiku-mcp-server --http --port=8080

端点:

  • POST /mcp — MCP Streamable HTTP 端点
  • GET /health — 健康检查

开发

# Install dependencies
npm install

# Build
npm run build

# Run locally (stdio, works without API key)
npm start

# Run locally (HTTP)
npm run start:http

# Run with API key for higher rate limits
HAIKU_API_KEY=your-key npm start

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。