mcpField
K
Kalshi

Kalshi

リモート
pipeworx.io金融データ02 日前に更新
リポジトリ公式サイト

Kalshi について

Kalshiは、米国規制下の予測市場の公開データを認証不要で調べられるMCPサーバーです。市場、板情報、取引、価格履歴に加え、スポーツや天候に関するイベントデータを扱います。

主な機能

  1. 01市場の検索と決済ルールの確認
  2. 02イベント、シリーズ、マクロ市場の照会
  3. 03板情報、取引、価格履歴の取得
  4. 04イベント、スポーツ、天候データの確認

活用シーン

  1. 01トピック別の市場検索とルール確認
  2. 02取引、板の厚さ、価格動向の分析
  3. 03スポーツや天候の決済データの確認

MCP 対応

Pipeworxゲートウェイ経由、またはローカルのstdio MCPサーバーとして、MCPクライアントにKalshiの公開市場データツールを提供します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://gateway.pipeworx.io/kalshi/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

kalshi

Kalshiの市場データ。CFTC規制下にある米国の予測市場取引所です。 公開データの読み取りに認証情報は不要です。このパックがアカウントにアクセスすることはありません。

Pipeworxの一部です。AIエージェントを1882+のライブデータソースに接続するMCPゲートウェイです。これは独立した非公式の連携であり、上流プロバイダーとは提携、承認、公開のいずれもしていません。

上流: https://api.elections.kalshi.com/trade-api/v2(ドキュメント: https://docs.kalshi.com/llms.txt。すべてのエンドポイントページを .md 形式で提供します)。

内容

ツール回答する内容
kalshi_markets / kalshi_marketテーマで市場を検索します。単一市場の全情報(決済ルールを含む)を取得します
kalshi_events / kalshi_eventイベントと、そのすべての子市場(結果の区分ごとに1つ)を取得します
kalshi_series / kalshi_macro繰り返し使われる質問テンプレートを取得します。わかりやすい名前のショートカット(Fed、CPI、BTC…)もあります
kalshi_orderbook / kalshi_orderbooks1市場の板の厚さ/最大100市場の板の厚さを一度に取得します
kalshi_tradesライブまたはアーカイブ済みの約定を取得します
kalshi_price_history / kalshi_candlesticksページネーションとアーカイブへのフォールバックに対応した1市場のOHLC/共通の期間で最大100市場のOHLCを取得します
kalshi_top_markets現在、取引量が最も多い市場を取得します
kalshi_exchange_status取引所が稼働中かどうかを確認します
kalshi_event_live_dataイベントの決済基準となる実世界の測定値を取得します
kalshi_game_statsスポーツのマイルストーンに関するライブスコアとプレーごとのデータを取得します
kalshi_milestonesKalshiが市場を紐づける発生事象と、それぞれに属するイベントを取得します
kalshi_structured_targets市場が参照するエンティティ(選手、チーム、俳優、映画、企業)を取得します
kalshi_weather_index / kalshi_weather_index_calibrations気温市場の決済基準となる都市の気温指数と、その算出方法を取得します

太字の行は2026-09-16(fleet #2040)に追加されました。調査した8つのエンドポイントファミリーすべてのバケット割り当てと、応答の原文は docs/pack-build-queue.mdにあります。

すでに対処済みの落とし穴

Kalshiは、リスティングエンドポイントへのCloudflare経由の送信元IPをフィルタリングします。 WorkersのIPからは空の応答を返すエンドポイントが複数あります。ゲートウェイは_proxyUrl/_proxyTokenを挿入し、これらが存在するとkalshiGet()がすべての上流へのフェッチをリレー経由でルーティングします。新しい処理は必ずkalshiGetを経由させ、直接fetchを使わないでください。

このAPIでは、認証が必要なのか、エンドポイントが壊れているのかを判別できます。結論を出す前に確認してください。 認証情報が必要なエンドポイントは401 {"error":{"code":"token_authentication_failure"}}を返します。400 bad_requestはハンドラーが要求を拒否したことを示し、キーがないことを意味するものではありません。

/markets/orderbooksはtickersを繰り返し指定し、/markets/candlesticksはmarket_tickersをカンマ区切りで指定します。 同じAPIの2つのバッチエンドポイントですが、配列の指定方法は異なります。間違えると、黙って一部だけ返されるのではなく、400になります。

バッチのローソク足応答では、各グループのラベルはtickerではなくmarket_tickerです。 このラベルで対応づけてください。リクエスト順で対応づけると、ある市場の価格履歴全体を別の市場のものとして返してしまいますが、それでも200が返ります。

Kalshiは、リクエストしたすべての市場を合計したバッチのローソク足数を10,000件に制限しており、カーソルも提供しません。 kalshi_candlesticksはtruncated_by_upstreamで切り詰めを報告します。1つのティッカーで長期間を指定する場合、またはアーカイブ対象になるほど古い市場の場合は、ページネーションに対応し、アーカイブにもフォールバックするkalshi_price_historyを使用してください。バッチエンドポイントにはどちらもありません。

/live_data/events/{ticker}が多くのイベントで404になるのは正常です。 このエンドポイントは暗号資産の価格イベントと、一部の経済指標シリーズのイベントに存在します。found:falseは正確な回答であり、エラーではありません。ライブのBTCイベントのペイロードは約473 KBあるため、シリーズはmax_pointsまで切り詰められ、切り詰め前の長さはseries_trimmedで報告されます。

気象データはイベントではなく都市をキーにします。 KXHIGHNY-26SEP16はイベントのライブデータエンドポイントで404になります。観測データは/live_data/weather/{city}にあり、市場が開いているかどうかに関係なく存在します。 weather-index の city ID は正確に 13 個あり、場所の名前ではなく ID です:miami、dfw、houston、phl-delaware-valley、puget-sound、sf-bay、greater-boston、southeast-michigan、kansas-city、minneapolis-st-paul、nyc、chicago、la-coastal です。Kalshi は不明な city に対する拒否メッセージで、これらを列挙します。austin は該当しません。インデックスは分単位のため、約 2 分未満の期間では、正当にデータポイントが 0 件になる場合があります。ここでの from/to は Unix ミリ秒、last_sec は秒です。

weather-index の観測所オフセットは摂氏ですが、インデックス自体は華氏で公開されています。(kalshi_weather_index_calibrations。)

/live_data/milestone/{id}/game_stats は、Sportradar が対応していないマイルストーンに対して、{"pbp":{}} を返し、ステータスコードは 200 です — 2026-09-16 のカレッジフットボールの試合で確認済みです。空の配列をプレーのない試合として扱わないよう、plays_available:false でその旨を示します。対応が明記されている競技:プロ/カレッジフットボール、プロ/カレッジバスケットボール、WNBA、サッカー、プロホッケー、プロ野球です。

/structured_targets は不明な type を拒否せず、空のリストを返し、ステータスコードは 200 です。 type は競技ごとに細分化されており、単独の player、team、athlete はありません(type=player に完全一致するテスト行は、testingmaxxiong という名前の 1 件だけです)。絞り込みクエリの結果が空の場合、ハンドラーは既知の type を列挙するため、タイプミスが「Kalshi には NFL 選手がいない」と誤解されることはありません。

/milestones には limit が必須です(指定しないと 400 が返されます)。また、フィルターなしのページは過去のデータに大きく偏っているため、現在発生しているものを取得するには minimum_start_date を指定してください。

拒否された呼び出しはエラーであり、空の回答ではありません(fleet #3516、#3524)。 Kalshi からレート制限や 5xx が返された場合、すべてのツールは error(rate_limited/upstream_error)と message を返し、結果として誤解を招くフィールドは一切返しません。「存在しない」を示す count: 0 や found: false も、空の markets/trades/series/オーダーブックも返しません。ツールが複数のリクエストを行い、その一部だけが拒否された場合は、残りの部分を全体として報告せず、その旨を示します(partial: true、detail_requests_refused、events_refused、orderbook_error)。kalshi_weather_index* が unknown_city を報告するのは、その city に対して Kalshi 自身が HTTP 400 を返した場合のみです。src/__tests__/refusal-not-empty.test.ts でツールごとに固定済みです。

forecast_percentile_history は検証後に拒否されます。 証拠の詳細は docs/pack-build-queue.md にあります。正しいパラメーターを探すために、再度プローブしないでください。

開発

node scripts/sync-catalog.mjs          # after any tool change
pnpm check:examples                     # tool-examples.json must cover new tools

BYO キーではなく、内部ヘッダーを使ってライブゲートウェイ経由でスモークテストを実行し(scripts/pwcall.sh call kalshi_weather_index '{"city":"nyc"}')、ペイロードが空でないことを確認してください — 空の配列を返す 200 は、すべての CI ゲートを通過しても、スモークテストとしては失敗です。

クイックスタート

MCP クライアント(Claude Desktop、Cursor、Windsurf など)に追加します:

{
  "mcpServers": {
    "kalshi": {
      "url": "https://gateway.pipeworx.io/kalshi/mcp"
    }
  }
}
このエンドポイントが実際に提供するもの

https://gateway.pipeworx.io/kalshi/mcp の tools/list は、上の表にあるツールに加えて、共有の Pipeworx メタツールも返します — ask_pipeworx、 discover_tools、search_within、remember/recall など、ゲートウェイ全体で使える一連のツールです。そのため、表示されるツール数はこの表より多くなります。単一パックのエンドポイントでは現在、パック固有のツールに加えて、共有ツールが約 30 個一覧表示されます。接続の initialize 応答には正確な範囲が示されており、その日の状況を確認する際の正式な情報源となります。

これは意図的な仕様であり、誤って多重化されたものではありません。メタツールがあることで、対象を絞った接続でも、このパックでは対応できない質問に答えられます — ask_pipeworx がカタログ全体から適切なツールに振り分けるため、2 つ目の MCP サーバーを追加する必要はありません。現在、メタツールなしでパックのエンドポイントをマウントする方法はありません。追加のスキーマによるコンテキスト消費が、振り分けの利点を上回る場合は、複数のパックエンドポイントではなく、フルゲートウェイに一度だけ接続してください。

または、フル Pipeworx ゲートウェイに接続すると、このパックのツールだけでなく、すべてのパックのツールが直接一覧表示されます。

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

どちらの URL も、同じゲートウェイと同じ 1882+ のデータソースに接続します。唯一の違いは、どのパックのツールが直接一覧表示されるかです。どちらからでも、ask_pipeworx ですべてのツールを利用できます。

MCP クライアントがない場合は、HTTP 経由で呼び出す

curl -X POST https://gateway.pipeworx.io/v1/tools/kalshi_markets \
  -H 'Content-Type: application/json' \
  -d '{"keyword":"inflation"}'

最初の呼び出しにアカウントは必要ありません。任意のツールを確認するには、GET https://gateway.pipeworx.io/v1/tools/kalshi_markets を実行します。ツールを探すには、{"query":"..."} を指定して POST https://gateway.pipeworx.io/v1/tools/search_packs を実行します。

スタンドアロン(ゲートウェイアカウント不要)

このパッケージは、ローカルの stdio MCP サーバーとしても実行できます — Pipeworx アカウントも、ゲートウェイへの往復通信も不要です。

{
  "mcpServers": {
    "kalshi": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-kalshi"]
    }
  }
}

または、起動することを確認するため、直接実行します。

npx -y @pipeworx/mcp-kalshi

stdin/stdout 経由で MCP を使用し、このパックのツールのみを対象に initialize/tools/list/tools/call に応答します — 上記のゲートウェイ接続で追加される共有メタツールは含まれません。同じソース、同じツールですが、ask_pipeworx による振り分けはありません。

ask_pipeworx を使う

ツールを直接呼び出す代わりに、平易な英語で質問できます — 上記のパックエンドポイントでも、フルゲートウェイでも利用できます。

ask_pipeworx({ question: "your question about Kalshi data" })

ゲートウェイが適切なツールを選び、引数を自動的に設定します。

その他

ライセンス

MIT

コメント

MCP は初めてですか?

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

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