Haiku DeFi MCP — AI agent DeFi execution across 22 chains について
Haiku MCP Serverは、Haiku APIを通じてAIエージェントにマルチチェーンのDeFi資産、見積もり、取引実行機能を提供します。サーバー側の秘密鍵で実行する方法と、外部ウォレットに署名と送信を任せる方法があります。
主な機能
- 01トークンとDeFi資産の検索
- 02複数チェーンのウォレット残高確認
- 03スワップやリバランスの見積もり
- 04利回り機会の検索とポートフォリオ分析
- 05外部ウォレット署名用の取引構築
- 06取引の署名と送信にも対応
活用シーン
- 01複数チェーンのウォレット残高を確認
- 02利回り機会の比較と保有資産の分析
- 03トークンスワップやリバランスの見積もり取得
- 04外部ウォレットで取引に署名して送信
MCP 対応
MCPサーバーは、トークン検索、残高確認、見積もり、利回り検索、ポートフォリオ分析、取引実行のツールをクライアントに公開します。環境変数の秘密鍵で実行するか、外部ウォレット向けに取引を返せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの 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 サーバー
AI エージェントがHaiku APIを通じてブロックチェーン取引を実行できるようにする、MCP(Model Context Protocol)サーバーです。
機能
- トークンの検索: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 キーです。取得するには [email protected] までお問い合わせください。 |
HAIKU_BASE_URL | いいえ | API のベース URL です。デフォルトは https://api.haiku.trade/v1 です |
WALLET_PRIVATE_KEY | いいえ | haiku_execute による単体実行に使用する秘密鍵(0x 形式の 16 進数)です。 |
RPC_URL_{chainId} | いいえ | 特定のチェーンの RPC URL を上書きします(例:Arbitrum の場合は RPC_URL_42161)。 |
注: API キーがなくても 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 署名ペイロードを抽出して正規化します(Path B のみ)。quoteId を使用する場合、クオートは同じセッションで取得されている必要があります。
ウォレット MCP が署名を処理する場合(Coinbase Payments MCP、wallet-agent、AgentKit、Safe など)に使用します。あらゆるウォレットの signTypedData で使用できる、標準化された型付きデータと、手順ごとの説明を返します。
パラメーター:
quoteId(推奨):haiku_get_quoteから取得したクオート ID。サーバーがセッションキャッシュからクオート全体を解決します。quoteId は、同じ MCP セッション内でhaiku_get_quoteが返したクオートにのみ使用できます。それ以外の場合はquoteResponseを使用してください。quoteResponse(代替):quoteId が使用できない場合に指定する、haiku_get_quoteからのレスポンスオブジェクト全体
戻り値:
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
クォートを実行します。秘密鍵の保有者に応じて、異なる2つのパスがあります。
パス 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 を使用する場合):署名とブロードキャストはユーザーが行います。WALLET_PRIVATE_KEY がない場合、Haiku は最終的な EVM トランザクションに署名したり送信したりできないため、broadcast: false が必須です。broadcast: true を指定して haiku_execute を呼び出し、WALLET_PRIVATE_KEY が設定されていない場合、サーバーは broadcast: false を設定し、返されたトランザクションをウォレット MCP 経由でブロードキャストするよう案内するエラーを返します。
haiku_execute を呼び出す前に:
- クォートの
approvalsが空でない場合は、各承認を{ to, data, value }形式のトランザクションとしてウォレット MCP 経由でブロードキャストし、確認を待ちます(ネイティブトークンの場合など、valueがある場合は含めます)。 - 署名が必要な場合は、
quoteIdを指定してhaiku_prepare_signaturesを呼び出し、返された EIP-712 ペイロードにウォレット MCP 経由で署名してから、ここに署名を渡します。
パラメーター:
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 | スラッグ |
|---|---|---|
| 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
トランザクションへの署名
セットアップに応じて、2 つのモードがあります。
セルフ完結型(WALLET_PRIVATE_KEY を設定):haiku_execute がすべてに内部で署名し、ブロードキャストします。トランザクションハッシュを返します。外部で署名する必要はありません。
外部ウォレット(WALLET_PRIVATE_KEY なし):haiku_execute を broadcast: false(必須)で使用します。秘密鍵がないと、haiku は署名もブロードキャストもできません。WALLET_PRIVATE_KEY がない状態で haiku_execute を broadcast: true で呼び出すと、サーバーは broadcast: false を設定し、返されたトランザクションをウォレット MCP 経由でブロードキャストするよう案内するエラーを返します。ウォレット MCP がブロードキャストできるよう、{ transaction: { to, data, value, chainId } } を返します。Permit2 またはブリッジ署名が必要な場合は、先に haiku_prepare_signatures を呼び出してください。見積もりに承認が含まれている場合は、haiku_execute の呼び出し前に、各承認 { to, data, value }(ネイティブトークンの場合など、value がある場合はそれも含めます)をウォレット MCP 経由でブロードキャストしてください。
外部ウォレット設計により、エージェントは任意の署名インフラストラクチャ(ウォレット MCP、ハードウェアウォレット、カストディアルサービス、MPC など)を使用できます。
クロスチェーンブリッジ署名
クロスチェーンスワップでは、見積もりが isComplexBridge: true を返すことがあります。これは、Permit2 に加えて(またはその代わりに)ブリッジインテント署名が必要であることを示します。
セルフ完結型(パス A): 見積もりの bridgeSigningPayload を haiku_execute に渡すと、ブリッジ署名が内部で処理されます。
外部ウォレット(パス B): 見積もり ID を指定して haiku_prepare_signatures を呼び出すと、正規化された bridgeIntent EIP-712 ペイロードが返されます。ウォレット MCP 経由で署名し、その結果を userSignature として haiku_execute に渡してください。
トランスポートモード
Stdio(デフォルト)
Claude Desktop、Cursor などで使用される標準の MCP stdio トランスポートです。
npx haiku-mcp-server
Streamable HTTP
リモートホスティング、Smithery、ウェブベースの 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。