关于 Haiku DeFi MCP — AI agent DeFi execution across 22 chains
Haiku MCP Server 通过 Haiku API 为 AI Agent 提供跨链 DeFi 资产查询、报价和交易执行能力。它可由服务器持有私钥完成执行,也可将签名与广播交给外部钱包。
主要功能
- 01发现代币与 DeFi 资产
- 02查询多链钱包余额
- 03获取兑换与再平衡报价
- 04发现收益机会并分析投资组合
- 05构建交易并支持外部钱包签名
- 06可选自行签名和广播交易
适用场景
- 01查询钱包在多条链上的余额
- 02比较收益机会并分析持仓
- 03获取代币兑换或组合再平衡报价
- 04通过外部钱包签名并广播交易
MCP 相关
该 MCP 服务向客户端提供代币、余额、报价、收益发现、投资组合分析及交易执行工具。执行可由 Haiku 使用环境变量中的私钥完成,也可返回交易供外部钱包处理。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y haiku-mcp-serverHAIKU_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+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
7收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| network | number | 否 | 按网络筛选代币。常见网络:42161 (Arbitrum)、8453 (Base)、1 (Ethereum)、137 (Polygon)、10 (Optimism)、56 (BSC) |
| category | enum | 否 | 按代币类别筛选:'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 执行区块链交易。
功能
- 代币发现:列出 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:交易的链 IDinstructions:完成此流程的分步说明
示例:
{
"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的报价 IDsourceChainId(建议填写):报价响应中的链 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 前:
- 如果报价中的
approvals非空:通过钱包 MCP 将每项批准作为交易{ to, data, value }广播(如果存在value,则一并传入,例如原生代币的情况),并等待确认。 - 如果需要签名:调用
haiku_prepare_signatures并传入 quoteId,通过钱包 MCP 对返回的 EIP-712 载荷签名,然后在此处传入签名。
参数:
quoteId(必填):来自haiku_get_quote的报价 IDsourceChainId(建议填写):报价响应中的链 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 上的 WETHarb:0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee- Arbitrum 上的原生 ETHbase:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913- Base 上的 USDC
支持的链
| 链 | 链 ID | Slug |
|---|---|---|
| Arbitrum | 42161 | arb |
| Avalanche | 43114 | avax |
| Base | 8453 | base |
| Berachain | 80094 | bera |
| BNB Smart Chain | 56 | bsc |
| Bob | 60808 | bob |
| Ethereum | 1 | eth |
| Gnosis | 100 | gnosis |
| Hyperliquid | 999 | hype |
| Katana | 747474 | katana |
| Lisk | 1135 | lisk |
| MegaETH | 4326 | megaeth |
| Monad | 143 | monad |
| Optimism | 10 | opt |
| Plasma | 9745 | plasma |
| Polygon | 137 | poly |
| Scroll | 534352 | scroll |
| Sei | 1329 | sei |
| Sonic | 146 | sonic |
| Unichain | 130 | uni |
| World Chain | 480 | worldchain |
| ApeChain | 33139 | ape |
工作流示例
路径 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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。