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エージェントにマルチチェーンのDeFi資産、見積もり、取引実行機能を提供します。サーバー側の秘密鍵で実行する方法と、外部ウォレットに署名と送信を任せる方法があります。

主な機能

  1. 01トークンとDeFi資産の検索
  2. 02複数チェーンのウォレット残高確認
  3. 03スワップやリバランスの見積もり
  4. 04利回り機会の検索とポートフォリオ分析
  5. 05外部ウォレット署名用の取引構築
  6. 06取引の署名と送信にも対応

活用シーン

  1. 01複数チェーンのウォレット残高を確認
  2. 02利回り機会の比較と保有資産の分析
  3. 03トークンスワップやリバランスの見積もり取得
  4. 04外部ウォレットで取引に署名して送信

MCP 対応

MCPサーバーは、トークン検索、残高確認、見積もり、利回り検索、ポートフォリオ分析、取引実行のツールをクライアントに公開します。環境変数の秘密鍵で実行するか、外部ウォレット向けに取引を返せます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの 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 サーバー

AI エージェントがHaiku APIを通じてブロックチェーン取引を実行できるようにする、MCP(Model Context Protocol)サーバーです。

npm version GitHub

機能

  • トークンの検索: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:トランザクションのチェーン 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

クォートを実行します。秘密鍵の保有者に応じて、異なる2つのパスがあります。

パス 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 を使用する場合):署名とブロードキャストはユーザーが行います。WALLET_PRIVATE_KEY がない場合、Haiku は最終的な EVM トランザクションに署名したり送信したりできないため、broadcast: false が必須です。broadcast: true を指定して haiku_execute を呼び出し、WALLET_PRIVATE_KEY が設定されていない場合、サーバーは broadcast: false を設定し、返されたトランザクションをウォレット MCP 経由でブロードキャストするよう案内するエラーを返します。

haiku_execute を呼び出す前に:

  1. クォートの approvals が空でない場合は、各承認を { to, data, value } 形式のトランザクションとしてウォレット MCP 経由でブロードキャストし、確認を待ちます(ネイティブトークンの場合など、value がある場合は含めます)。
  2. 署名が必要な場合は、quoteId を指定して haiku_prepare_signatures を呼び出し、返された EIP-712 ペイロードにウォレット MCP 経由で署名してから、ここに署名を渡します。

パラメーター:

  • 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

対応チェーン

チェーンチェーン IDスラッグ
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

トランザクションへの署名

セットアップに応じて、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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。