CCXT について
CCXT 公式の MCP サーバーで、統一された ccxt API を通じて 100 以上の暗号資産取引所と予測市場にAIエージェントからアクセスできます。ローカルで stdio により動作し、APIキーはモデルに渡されません。
主な機能
- 01多数の取引所を統一された ccxt API で利用
- 02ティッカー、オーダーブック、OHLCV、約定データ
- 03キーを引数にせず名前でアカウントを指定
- 04権限階層を個別に有効化、取引と資金操作は既定で無効
- 05書き込み操作は確認を経て追記専用の監査ログに記録
- 06ライブ市場・口座データ用の WebSocket ストリーム
活用シーン
- 01AIアシスタントから複数取引所の最新価格を照会
- 02サンドボックスやテストネットでの取引ロジックの検証
- 03MCP ホストからの残高と注文状況の確認
MCP 対応
本プロジェクトは MCP サーバーであり、Claude Desktop、Claude Code、Cursor などの MCP クライアントに市場データ、口座、注文のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
32掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | いいえ | 取引所IDまたは名前に対する、大文字と小文字を区別しない部分文字列一致 |
| supports | string | いいえ | この統一メソッドに対応する取引所のみを対象にします。例:"fetchOHLCV" |
| prediction | boolean | いいえ | true:予測市場の取引所のみ。false:予測市場の取引所を除外します |
詳細
ccxt-mcp — 公式 CCXT MCP サーバー
AI エージェント(Claude Desktop、Claude Code、Cursor、VS Code、Windsurf、および任意の MCP ホスト)を、統合された ccxt API を通じて 100 以上の暗号資産取引所や予測市場に接続します。マーケットデータ、口座残高、注文管理、そして明示的に有効化した場合には取引も可能です。
claude mcp add ccxt -- npx -y ccxt-mcp
セキュリティモデル(まずこれを読んでください)
あなたの API キーはあなたのマシン上に留まり、AI モデルがそれらを目にすることはありません:
- サーバーは stdio 経由でローカルに動作します。どこにもホストされず、キーが第三者のサービスを経由することはありません。
- 認証情報は決してツールのパラメータにはなりません:どのツールスキーマもキーを受け付けないため、モデルもプロンプトインジェクションされたページも、キーを提供・要求・変更することはできません。ツールはアカウントを名前(「binance-main」)で参照します。
- キーがプロセスの外に出るのは、取引所自体への署名済み HTTPS リクエストの内部のみです — これは他のあらゆる取引ボットと同じです。
- すべてのツール結果、エラー、ログ行は、読み込まれたシークレット値を保持するレダクションフィルターを通過します(一部の取引所はエラー本文に署名済み URL をエコーしますが、その経路は閉じられています)。生のリクエスト URL/ヘッダー/ボディは決して出力されません。
verboseは強制的に無効化されます。 - ケイパビリティ階層はオプトインであり、ファイルによって管理されます。 初期状態では、サーバーは公開マーケットデータのみを扱います。アカウントを設定すると、プライベートな読み取りが有効になります。
trading、funds(出金/振替)、implicitWrites(生エンドポイント)は、それぞれアカウントごとに設定ファイル内で有効化する必要があります — 設定を編集するツールは存在しないため、会話が自ら権限を付与することはできません。登録されていない階層はツールリストにすら表示されません。 - 書き込みはプレビューされ、確認されます(ホストが elicitation をサポートしている場合はネイティブの確認フォーム、そうでない場合は明示的なプレビュー+確認トークンのラウンドトリップ)。マーケットの制限やあなたの想定元本上限に対して検証され、追記専用の監査ログに記録されます。
推奨される取引所側の防御策(あなたのマシンが侵害された場合でも有効です):出金権限を無効化し、IP 許可リストを設定した API キーを作成してください。
正直な注意点が一つ:ファイルシステムにアクセスできるローカルのエージェントは、自身のツールで設定ファイルを読むことができます — これはこのサーバーではなく、あなたの MCP ホストの権限モデルによって管理されます。利用可能であれば、ホストのシークレットストレージを優先し(以下を参照)、ファイルを chmod 600 に保ち、ホストの設定でそのパスに対する拒否ルールを検討してください。
インストール
Node.js ≥ 18 が必要です。npm パッケージは ccxt-mcp、サーバーバイナリは npx -y ccxt-mcp です。
Claude Code
claude mcp add ccxt -- npx -y ccxt-mcp
またはプロジェクトごとに .mcp.json 経由で(シークレットを含まないため、コミットしても安全です):
{ "mcpServers": { "ccxt": { "command": "npx", "args": ["-y", "ccxt-mcp"] } } }
Claude Desktop
claude_desktop_config.json に追加します(Settings → Developer → Edit Config):
{ "mcpServers": { "ccxt": { "command": "npx", "args": ["-y", "ccxt-mcp"] } } }
Cursor
~/.cursor/mcp.json(またはプロジェクトごとに .cursor/mcp.json):
{ "mcpServers": { "ccxt": { "command": "npx", "args": ["-y", "ccxt-mcp"] } } }
VS Code
.vscode/mcp.json — VS Code の inputs メカニズムは値を暗号化されたシークレットストレージに保存します。JSON 設定を扱うホストの中では、キーにとって最良の選択肢です:
{
"inputs": [
{ "id": "binance-key", "type": "promptString", "password": true, "description": "Binance API key" },
{ "id": "binance-secret", "type": "promptString", "password": true, "description": "Binance API secret" }
],
"servers": {
"ccxt": {
"command": "npx", "args": ["-y", "ccxt-mcp"],
"env": { "BINANCE_APIKEY": "${input:binance-key}", "BINANCE_SECRET": "${input:binance-secret}" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json — Claude Desktop と同じ mcpServers の形です。${env:VAR} の補間がサポートされています。
設定
設定を行わない場合、サーバーはすべての取引所のパブリック市場データを提供します — それだけでも有用なインストールです。
アカウントを追加するには、設定ファイルを作成します(パスは get_safety_status ツールで確認できます):
- macOS:
~/Library/Application Support/ccxt-mcp/config.json - Linux:
~/.config/ccxt-mcp/config.json - Windows:
%APPDATA%\ccxt-mcp\config.json - または
CCXT_MCP_CONFIGを任意のパスに指定します(レガシーな取引所ごとのkeys.local.json形式も読み込まれます)。
{
"accounts": {
"binance-testnet": {
"exchange": "binance",
"apiKey": "…",
"secret": "…",
"sandbox": true, // testnet — recommended first stop
"trading": true // true enables SANDBOX/DEMO trading only
},
"binance-main": {
"exchange": "binance",
"apiKey": "…",
"secret": "…",
"trading": "live", // live trading requires the explicit string "live"…
"maxOrderValue": 250, // …and a per-order USD cap you author (null = opt out)
"maxDailyValue": 1000, // optional rolling-24h cap
"allowedSymbols": ["BTC/USDT", "ETH/*"], // optional strict allowlist
"confirm": "live" // always | live (default) | never
},
"polymarket-main": {
"exchange": "polymarket",
"walletAddress": "0x…",
"privateKey": "0x…"
}
}
}
アカウントのフィールド: 取引所の requiredCredentials にある任意の資格情報(apiKey、secret、password、uid、walletAddress、privateKey、…)、sandbox/demo、defaultType、options(ccxt コンストラクターのオプション)、prediction: true(暗号資産と予測の両方の名前空間に存在する取引所向け。例: hyperliquid)、および以下の安全スイッチです。ファイルには chmod 600 を設定してください。設定しない場合、サーバーは警告を出します(または "settings": {"strictPermissions": true} で拒否します)。
環境変数も使用できます: <EXCHANGEID>_<CREDENTIAL>(例: BINANCE_APIKEY、OKX_PASSWORD)は不足している資格情報を補い、CCXT_MCP_EXCHANGE/CCXT_MCP_APIKEY/CCXT_MCP_SECRET/CCXT_MCP_SANDBOX/CCXT_MCP_TRADING のセットは default という名前の単一アカウントを定義します。
Claude Desktop(.mcpb バンドル): インストールフォームでは 1 つの取引所を設定します。複数の取引所を使用する場合(またはライブ取引/出金を有効にする場合)は、Config file フィールドに、上記のような accounts マップを含む config.json を指定してください — あるいはデフォルトパスに作成して、フォームのフィールドを空のままにします。
ケイパビリティ階層
| 階層 | 有効になる機能 | スイッチ | デフォルト |
|---|---|---|---|
| market | ティッカー、オーダーブック、OHLCV、取引、市場、予測イベント、読み取り専用の生 GET エンドポイント | — | オン |
| read | 残高、注文、自身の取引、ポジション | 資格情報を持つアカウントが存在すること | 設定時はオン |
| trading | 注文の作成/編集/キャンセル、レバレッジ、マージン、ポジション操作 | アカウントごとの "trading": true(サンドボックス/デモ)または "live" | オフ |
| funds | 出金、内部送金、入金アドレス | アカウントごとの "funds": true または "live" | オフ |
| implicitWrites | 生の POST/PUT/DELETE エンドポイント(取引所固有のものすべて。鍵管理を含む) | アカウントごとの "implicitWrites": true | オフ |
"trading": true は意図的にサンドボックス/デモアカウントでのみ機能します。ライブ取引には "trading": "live" と入力することおよび maxOrderValue(数値、またはオプトアウトする場合は明示的に null)を決めることが必要です。同じパターンが funds と maxTransferValue にも適用されます。階層の有効化はお客様の責任です — サーバーの役割は、誠実なゲート、確認、および監査ジャーナル(<cache-dir>/ccxt-mcp/journal/)です。
ツール
market — list_exchanges、describe_exchange、describe_method (search/signatures/per-exchange params + docs links)、search_markets、get_tickers、get_orderbook、get_ohlcv、get_trades、search_events (prediction markets)、call_read_method (any unified fetch*/load* — structurally read-only)、call_implicit_get (raw GET endpoints)、get_safety_status。
live (WebSocket) — watch_subscribe がバックグラウンドで ccxt.pro ストリームを開きます。watch_read が最新データを返します。State ストリームは「X は今どうなっているか」のスナップショットです — watchTicker(s)、watchOrderBook(ForSymbols)、watchOHLCV、watchBalance、watchPositions、watchBidsAsks、watchMarkPrice(s): サーバーはライブ更新を現在の完全なセットにマージするため、watch_read は常に購読しているすべてのシンボルを latest で返します (複数シンボルのストリームで最後にティックしたものだけが表示されることはありません)。Event ストリームはログです — watchTrades とプライベートな watchOrders/watchMyTrades/watch(My)Liquidations (プライベートにはアカウントが必要): watch_read は新しい項目をカーソル付きで events に古い順で返します。ポーリングの代わりに watch_read に waitForChange: true を渡すと、次の更新までブロックします (またはタイムアウト) — 約定やポジション変更を待つ効率的な方法です。watch_unsubscribe で停止します。watch_list でアクティブなストリームを表示します。長時間稼働するサーバーがソケットを保持するため、エージェントは常に最新データを利用できます。アイドル状態のストリームは 10 分後に自動停止します。
read — list_accounts、get_balance、get_orders、get_my_trades、get_positions。
trading — create_order、edit_order、cancel_order、cancel_all_orders、set_leverage、set_margin_mode、call_write_method (allowlisted long tail: margin/position/batch-cancel ops)。
funds — withdraw、transfer、get_deposit_address。implicitWrites — call_implicit_write。
すべてのリスト結果はホストのコンテキスト制限に収まるように上限が設けられ、ページネーションされます (帯域内の切り捨て通知付き)。生の info ペイロードはデフォルトで除去されます。予測市場は同じツールを使用し、シンボルの位置に ( search_events から取得した) アウトカムハンドルを指定します。
トラブルシューティング
- 「Trading is not enabled for account …」 — 設定ファイルを編集してください (上記のティアを参照)。これは会話で変更できるものではありません。
- サンドボックスアカウントでの AUTH_FAILED — テストネットのキーは取引所のテストネットポータルから取得するもので、ライブアカウントのものではありません (逆も同様です)。
- HTTP 451 / 地域ブロック — 一部の取引所はクラウド/VPN/米国 IP をブロックします。必要に応じてアカウントの
optionsでプロキシを設定してください。 - 大きな取引所での最初の呼び出しが遅い — 最初の
loadMarkets()に数秒かかることがあります。その後は 24 時間ディスクにキャッシュされます。 npx @modelcontextprotocol/inspector npx -y ccxt-mcpで対話型のツールコンソールが開きます。
開発 (ccxt モノレポ内)
npm run mcp.ts # run the server from live TypeScript sources (tsx)
cd mcp && npm test # unit + schema + integration tests
cd mcp && npm run build # tsc + regenerate js/data/method-docs.json
アーキテクチャ、このサーバーが基づいている先行技術の分析、および決定ログについては DESIGN.md を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。