AIトレーディングエージェントに“脳”を与えるMCPサーバーを作った――その方法

Dev.to / 2026/4/7

💬 オピニオンDeveloper Stack & InfrastructureSignals & Early TrendsTools & Practical Usage

要点

  • この記事では、著者のMCPサーバー「crypto-quant-signal-mcp」を紹介する。これは、Hyperliquidのパーペチュアル先物市場データ(生データ)を、確信度と推論付きの実行可能なBUY/SELL/HOLDシグナルへ変換することを目的としている。
  • 多くの既存MCPサーバーは主に「配管(plumbing)」—価格/オーダーブック/注文実行といった機能—を提供するだけで、AIトレーディングエージェント向けのシグナル解釈は行わない、という主張がなされる。そこで、専用の「シグナル解釈レイヤー」が必要だという動機づけがある。
  • サーバーのアーキテクチャは3つのツール(get_trade_signal、scan_funding_arb、get_market_regime)を中心に構築されており、テクニカル指標と、会場をまたいだファンディング/オンチェーンのような派生シグナルを組み合わせて、1つの判断(verdict)にまとめる。
  • 実装では、エージェントがWebエンドポイントを呼び出せるリモートファーストのホスト型HTTP API(api.algovault.com/mcp)を重視している。加えて、Claude Desktopユーザー向けに、npmパッケージを通じたローカルのstdioオプションも提供している。
  • 投稿では、スコアリングロジックと主要な設計上の意思決定について議論し、エージェントがサーバーへ確実に問い合わせできるようにすることで、自動化されたポジション評価のワークフローを支える点に焦点を当てている。

Dev.toにAlgoVault Labsによって公開

MCPサーバーは20,000以上あります。暗号資産系のものの多くは配管担当で、価格の読み取り、注文の発注、板情報の取得などを行います。しかし、それらはあなたのAIエージェントに何をすべきかを教えません。

私はcrypto-quant-signal-mcpを構築しました。Hyperliquidのパーペチュアル先物向けのシグナル解釈レイヤーです。生のマーケットデータを受け取り、単一の判定(BUY、SELL、またはHOLD)を返します。あわせて確信度スコアと理由も返します。

この記事では、アーキテクチャ、スコアリングロジック、そして途中で下した判断について説明します。

The Problem

私はHyperliquidとBinance Futuresで量的(クオンツ)な戦略を運用しています。ClaudeやCursorでポジションを評価するのに使い始めたとき、利用可能だったMCPサーバーは、生データ読み取りか、注文執行ツールだけでした。

私はClaudeにこう聞いていました:「いまETHをロングすべき?」すると、市況についての一般的なことを言うだけでした。ライブデータを実際に分析するためのツールがなかったからです。

私が欲しかったのは、私が毎日手作業でやっていることを行うツールでした。つまり、RSIを確認し、EMAクロスを見て、取引所(会場)間でファンディング率を比較し、OIのモメンタムをチェックして、それらを1つの答えに統合することです。

The Architecture

Three tools, one server

ツール 何をするか x402 価格
get_trade_signal 確信度付きの複合BUY/SELL/HOLD $0.02/call
scan_funding_arb 取引所横断のファンディング率アービトラージスキャナー $0.01/call
get_market_regime TRENDING / RANGING / VOLATILE の分類 $0.02/call

Remote-first

製品はnpmパッケージではなく、ホストされたAPIであるhttps://api.algovault.com/mcpです。AIエージェントは呼び出して支払いできるHTTPエンドポイントが必要です。npm installであなたのパッケージを入れることはできません。

Agent → HTTPS → api.algovault.com/mcp → Hyperliquid API → Composite signal → Agent

npmパッケージ(npx -y crypto-quant-signal-mcp)は、Claude Desktopユーザーに配布を広げるための仕組みです。無料枠があり、stdio経由でローカル実行されます。

Dual transport

if (process.env.TRANSPORT === 'stdio') {
  // ローカル: Claude Desktop、Cursor など
  const transport = new StdioServerTransport();
  await server.connect(transport);
} else {
  // リモート: Express + Streamable HTTP(デフォルト)
  app.all('/mcp', express.json(), async (req, res) => {
    // HTTP上のMCP JSON-RPC
  });
}

Streamable HTTP は、リモートサーバー向けにMCP仕様で推奨されているトランスポートです(2025-03-26の仕様アップデートでSSEが置き換えられました)。@modelcontextprotocol/sdk v1.10.0+ が必要です。

Exchange adapter pattern

コードは生のHyperliquid呼び出しではなく、ExchangeAdapterというインターフェースと通信します:

interface ExchangeAdapter {
  getName(): string;
  getCandles(asset: string, interval: string, count: number): Promise<Candle[]>;
  getAssetContext(asset: string): Promise<AssetContext>;
  getPredictedFundings(): Promise<FundingRate[]>;
}

現時点ではHyperliquidAdapterのみです。私がBinanceやBybitを追加すると、同じインターフェース、同じツールで、より多くのデータを扱えるようになります。

The Signal Scoring Logic

get_trade_signalの核は、重み付きの複合スコアです:

指標 重み スコアリング
RSI(14) 25% <30 なら強気(+80)、>70 なら弱気(-80)平均回帰バイアス
EMA(9/21) 30% クロスの方向 + EMAに対する価格位置
ファンディング率 20% 負=強気(ショートがロングへ支払い)/24h平均と比べて
OIモメンタム 15% 上昇するOI + 上昇する価格=確認
出来高 10% 平均超=確信、平均未満=弱い

各指標は -100 から +100 のスケールでスコア化します。重みを掛けます。合計します。複合スコアが >25 なら BUY。<-25 なら SELL。その間は HOLD。確信度 = abs(score)(絶対値)。ただし100で上限を設けます。

なぜこれらの重みなのですか? これは、HLとBinanceで量的戦略を運用してきた経験に基づいています。強い主観があります。計画としては、実際の結果データにもとづいて毎月チューニングし直します(詳細は後述します)。

出力例:

返却形式: {"translated": "翻訳されたHTML"}
{
  "verdict": "BUY",
  "confidence": 72,
  "price": 69433,
  "indicators": {
    "rsi": 66.7,
    "emaCross": "bullish",
    "fundingRate": 0.00022,
    "oiChange": 3.9,
    "volume24h": "$2.41B"
  },
  "reasoning": "EMAクロスは強気ですが、RSIは60台前半です。ファンディングは中立。建玉(OI)は緩やかに上昇中。様子見領域 — 強い確信はありません。"
}

会場間ファンディング・アービトラージ(Arb)スキャナー

これは、他の誰もMCP経由では持っていないツールです。

HyperliquidのpredictedFundingsエンドポイントは、HL Binance Bybitのファンディング率を1回の呼び出しで返します。ですが落とし穴があります。HLはファンディングを1時間ごとに支払い、CEXは8時間ごとに支払います。比較する前に正規化する必要があります。

// HL: 時間あたりのレート → ×8760で年間換算
// CEX: 8hあたりのレート → ×1095で年間換算
const hlAnnualized = hlRate * 8760;
const cexAnnualized = cexRate * 1095;
const spreadBps = (hlAnnualized - cexAnnualized) * 10000;

このスキャナーは、年換算スプレッドで200以上の全HLパーペチュアルをランキングし、裁定機会を提示します。例えば「HLでファンディングが +0.05%のときはショート、-0.01%のときはBinanceでロング」といった感じです。

請求:x402 マイクロペイメント

AIエージェントはStripeのチェックアウトフォームを埋められません。HTTP呼び出しごとに支払う必要があります。

x402プロトコルを使います — Baseチェーン上のUSDC:

  1. エージェントが支払いなしでリクエストを送信
  2. サーバーがHTTP 402で支払い要件(価格、トークン、チェーン、受取人)を返す
  3. エージェントがERC-3009 transferWithAuthorization に署名する
  4. サーバーがファシリテーター経由で検証する(約100ms)、データを返す
  5. 決済はオンチェーンで非同期に行われる(約2秒)

自己ホストのファシリテーター(Coinbaseの公開版は、2026年4月時点ではテストネットのみ)。Base上でETHを使ってガスウォレットに資金を入れます — 各決済は数セントの端数分のコストです。

使ってみる(コード不要)

最も速い試し方:

  1. Claudeを開く → 設定 → インテグレーション
  2. カスタムコネクタを追加 → 名前:「Crypto Quant Signal」、URL:api.algovault.com/mcp
  3. 新しいチャット → 「BTCの取引シグナルを出して」

それだけです。無料枠。APIキー不要。インストール不要。

開発者向け:npx -y crypto-quant-signal-mcp

スタック

  • TypeScript + @modelcontextprotocol/sdk v1.10+
  • Express + Caddy HTTPS(リモート)
  • @x402/core で支払い検証
  • PostgreSQL(リモート)/ SQLite(ローカル)
  • Docker + GitHub Actions CI/CD
  • HetznerのVPSでホスティング

学んだこと

  1. レジストリでの配布 > SNS。 初週の111件のnpmダウンロードは、すべてSmithery + Official MCP Registry + awesome-mcp-serversから。X/TwitterやRedditからはゼロでした。

  2. ストリーミング可能なHTTPは未来。 SSEはMCP仕様で非推奨です。2026年に新しいサーバーを作るなら、初日からStreamable HTTPを使ってください。

  3. x402は本物だが、まだ初期段階。 プロトコルは機能します。オンチェーン決済も機能します。しかし、x402に対応したクライアントはまだほとんど存在しません。これは、AIエージェントがAPI呼び出しを自律的に支払うという先行投資です。

リンク

これは全12個のうちのツール#1です。AIエージェントのためのTradingViewを作っています。