使用说明
Haiku MCP服务器
MCP(模型上下文协议)服务器,使AI代理能够通过 Haiku API.
特性
- 令牌发现:列出21个区块链网络中支持的代币和DeFi资产
- 余额检查:获取所有支持链的钱包余额
- 交易报价:获取掉期和投资组合再平衡的报价
- 交易大楼:将报价转换为未签名的EVM交易
- 钱包集成:提取EIP-712有效载荷用于外部钱包签名(Coinbase、AgentKit、Safe等)
- 独立执行:使用WALLET_PRIVATE_KEY环境变量进行可选的端到端执行
- 产量发现:按APY、TVL和类别筛选,找到跨协议和链的最高收益DeFi机会
- 投资组合分析:根据钱包的实际持有量分析钱包的持有量和特定背景的收益机会
安装
npm install haiku-mcp-server
或者直接使用npx运行:
npx haiku-mcp-server
配置
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
HAIKU_API_KEY |
否 | 您的Haiku API键用于更高的费率限制。联系contact@haiku.trade请求一个。 |
HAIKU_BASE_URL |
没有 | API基URL。默认为 https://api.haiku.trade/v1 |
WALLET_PRIVATE_KEY |
否 | 通过自包含执行的私钥(0x十六进制) haiku_execute. |
RPC_URL_{chainId} |
否 | 覆盖特定链的RPC URL(例如。, RPC_URL_42161 Arbitrum)。 |
注: API在没有密钥的情况下工作,但提供密钥可以解锁更高的生产使用速率限制。
Claude桌面配置
添加到您的 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 a代币(存款抵押品)varDebt-例如,五种可变债务代币vault-例如,Yearn/Morpho收益库weightedLiquidity-例如,平衡器LP令牌concentratedLiquidity-例如,Uniswap V3 LP头寸
例子:
{
"network": 42161,
"category": "token"
}
haiku_get_balances
获取所有链上钱包地址的代币余额。
参数:
walletAddress(可选):钱包地址或ENS名称。需要时WALLET_PRIVATE_KEY未设置;省略自动推导WALLET_PRIVATE_KEY当它被设置时。
例子:
{
"walletAddress": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
}
省略 walletAddress 当 WALLET_PRIVATE_KEY 设置为使用导出的地址。
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、钱包代理、AgentKit、Safe等)。返回任何钱包的标准化键入数据 signTypedData 可以消费,加上分步说明。
参数:
quoteId(首选):报价ID来自haiku_get_quote--服务器解析会话缓存中的完整报价。QuoteId仅在以下人员返回报价时有效haiku_get_quote在同一MCP会话中;否则使用quoteResponse.quoteResponse(回退):来自的完整响应对象haiku_get_quote,如果quoteId不可用
退货:
requiresPermit2:是否需要Permit2签名permit2:要传递的EIP-712有效载荷signTypedData(如果需要)requiresBridgeSignature:是否需要桥接签名bridgeIntent:要传递的EIP-712有效载荷signTypedData(如果需要)sourceChainId:交易的链IDinstructions:完成流程的分步说明
例子:
{
"quoteId": "abc123..."
}
haiku_discover_yields
发现跨DeFi协议的收益机会,按APY或TVL排名。
用它来回答诸如“Arbitrum的最佳贷款收益率”、“最高APY金库”等问题
至少有100万美元的TVL”,或者“我能在基础上用USDC做什么” iid 结果中的字段
可以直接用作 targetWeights 对象在 haiku_get_quote.
参数:
network(可选):按链ID筛选(例如,Arbitrum为42161)category(可选):lending(有抵押品),vault(Yearn/Morpho),lp(平衡器/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 在env中设置):Haiku在内部签署Permit2/bridge有效载荷并广播。返回一个tx哈希值。
参数:
quoteId(必填):报价ID来自haiku_get_quotesourceChainId(推荐):报价响应中的链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,俳句无法签署或发送最终的EVM交易。如果你打电话 haiku_execute 和 broadcast: true 而没有 WALLET_PRIVATE_KEY,服务器返回一个错误,指示您进行设置 broadcast: false 并通过您的钱包MCP广播返回的交易。
打电话之前 haiku_execute:
- 如果
approvals报价中非空:将每个审批作为交易进行广播{ to, data, value }(包括value当存在时,例如用于本地令牌)通过您的钱包MCP并等待确认。 - 如果需要签名:致电
haiku_prepare_signatures使用quoteId,通过您的钱包MCP对返回的EIP-712有效载荷进行签名,然后在此处传递签名。
参数:
quoteId(必填):报价ID来自haiku_get_quotesourceChainId(推荐):报价响应中的链ID。仅当报价是在同一会话中获得时才省略——服务器可以从缓存中恢复。broadcast(必填):必须false--俳句返回未签名的tx供您播放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-韦思在Arbitrumarb:0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-Arbitrum上的原生ETHbase:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913-USDC基准
支撑链
| 链 | 链ID | 蛞蝓 |
|---|---|---|
| 仲裁 | 42161 | 仲裁 |
| 雪崩 | 43114 | avax |
| 基数 | 8453 | 基数 |
| 贝拉钦 | 80094 | 贝拉 |
| BNB智能链 | 56 | bsc |
| 鲍勃 | 60808 | 鲍勃 |
| 以太坊 | 1 | eth |
| 灵知 | 100 | 灵知 |
| 超级液体 | 999 | 炒作 |
| 卡塔纳 | 747474 | 卡塔纳 |
| 利斯克 | 1135 | 尖塔 |
| MegaETH | 4326 | megaeth |
| 蒙纳德 | 143 | 蒙纳德 |
| 乐观主义 | 10 | opt |
| 血浆 | 9745 | 血浆 |
| 多边形 | 137 | 多边形 |
| 滚动 | 534352 | 滚动 |
| 西 | 1329 | 西 |
| 音速 | 146 | 音速 |
| 单链 | 130 | uni |
| 世界链 | 480 | 世界链 |
| 猿链 | 33139 | 猿 |
工作流示例
路径A:自包含交换(WALLET_PRIVATE_KEY集)
俳句负责所有的签约和转播。返回一个tx哈希值。
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 在内部签署所有内容并广播。返回一个tx哈希值。无需外部签名。
外部钱包 (没有 WALLET_PRIVATE_KEY):使用 haiku_execute 和 broadcast: false (必填——没有私钥,俳句无法签名或广播)。如果你打电话 haiku_execute 和 broadcast: true 而没有 WALLET_PRIVATE_KEY,服务器返回一个错误,指示您进行设置 broadcast: false 并通过您的钱包MCP广播返回的交易。退货 { transaction: { to, data, value, chainId } } 让您的钱包MCP进行广播。如果需要Permit2或网桥签名,请致电 haiku_prepare_signatures 第一。如果报价中有批准,则广播每个批准 { to, data, value } (包括 value 当存在时,例如用于本地令牌),在调用之前通过您的钱包MCP haiku_execute.
外部钱包设计允许代理使用任何签名基础设施(钱包MCP、硬件钱包、托管服务、MPC等)。
跨链桥梁签名
对于跨链掉期,报价可能会返回 isComplexBridge: true,表示除了(或代替)许可2外,还需要桥梁意图签名。
自给自足(路径A): 通过 bridgeSigningPayload 从引用到 haiku_execute --它在内部处理桥签名。
外部钱包(路径B): 呼叫 haiku_prepare_signatures 对于quoteId,它返回一个归一化的 bridgeIntent EIP-712有效载荷。通过您的钱包MCP签名,并将结果作为 userSignature 到 haiku_execute.
运输方式
标准(默认)
标准MCP stdio传输——由Claude Desktop、Cursor等使用。
npx haiku-mcp-server
可流式传输的HTTP
用于远程托管、Smithery和基于web的MCP客户端的HTTP传输。
npx haiku-mcp-server --http
npx haiku-mcp-server --http --port=8080
终点:
POST /mcp--MCP可流式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
许可证
麻省理工学院