sifting について
siftingは、36種類のツールを通じてSiftingIOの市場データをAIアシスタントに提供するMCPサーバーです。ライブ価格、証券提出書類や企業情報、市場状況、マクロ経済カレンダー、ストリーミングデータを扱います。
主な機能
- 01ライブ価格と気配値
- 02株式、SEC提出書類、企業情報
- 03暗号資産と外国為替のOHLCVデータ
- 04市場状況と経済カレンダー
- 0513F保有情報とDEXウォレットデータ
- 06WebSocketデータ購読
活用シーン
- 01現在の価格と市場状況の確認
- 02企業提出書類と財務情報の調査
- 03比率を使った企業比較
- 04短時間のライブ市場データ収集
MCP 対応
MCPクライアントに36種類の市場データツールと3つのガイド付きプロンプトを提供します。stdioとStreamable HTTPに対応し、HTTPでは任意のBearerトークン認証を利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y siftingio-mcpSIFTING_API_KEYシークレットSiftingIO API key (get one at https://sifting.io)SIFTING_BASE_URLOverride the REST API base URLSIFTING_WS_URLOverride the WebSocket URLローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
36掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| venue | string | はい | ライブデータの取引所:stocks、crypto、forex、dex。 |
| symbol | string | はい | 銘柄。例:BTCUSD、AAPL、EURUSD。 |
詳細
siftingio-mcp
SiftingIO market-data SDK
(@siftingio/sdk)を AI アシスタントから利用できるようにする
Model Context Protocol(MCP)サーバーです。起動すると、モデルはライブ価格の取得、SEC/EDGAR のファンダメンタルズの調査、OHLCV バーの取得、13F 保有銘柄の検索、市場状況の確認、マクロ経済カレンダーのスキャンを、すべてツールとして実行できます。
セットアップ
npm install
npm run build
API キーが必要です。https://sifting.io から取得できます。
export SIFTING_API_KEY=sft_...
別のバックエンドを指定する場合は、SIFTING_BASE_URL と SIFTING_WS_URL
でデフォルト値を上書きできます。
ローカルで作業していますか? 代わりに .env.example を .env にコピーしてください。npm run dev と npm start
は自動的にこれを読み込みます(Node が --env-file-if-exists を使って読み込みます)。ただし、実際の MCP クライアントに接続する場合は、ファイルではなくサーバーの env
ブロック経由でキーを渡してください(後ほど例を紹介します)。
実行
ツールボックスは次のとおりです。
npm run build— TypeScript をdist/にコンパイルします。npm start— コンパイル済みサーバー(node dist/index.js)を stdio で実行します。npm run start:http— Streamable HTTP(node dist/http.js)で実行します。npm run dev/npm run dev:http— ビルドせずにtsxでソースから直接実行します。npm test— vitest のテストスイートを実行します(実行を継続するにはnpm run test:watchを追加します)。npm run lint/npm run format— ESLint(typescript-eslint)と Prettier を実行します。npm run typecheck—tsc --noEmitを実行します。
すべてのプッシュと PR で、CI(.github/workflows/ci.yml)が同じ一連のチェックを実行します。
フォーマットチェック → lint → 型チェック → ビルド → テスト。
知っておくとよい点がひとつあります。このサーバーは stdio で JSON-RPC をやり取りするため、stdout はプロトコル専用です。診断情報はすべて stderr に出力し、プロトコルの妨げにならないようにします。
対話形式で調べる
手動で試してみたいですか? MCP Inspector を使うのが最も簡単です。
SIFTING_API_KEY=sft_... npx @modelcontextprotocol/inspector node dist/index.js
HTTP(Streamable HTTP)トランスポート
リモート環境やホスト環境で実行する場合は、stdio の代わりに MCP の Streamable HTTP トランスポートを使用してください。
SIFTING_API_KEY=sft_... PORT=3000 npm run start:http
# → MCP endpoint at http://127.0.0.1:3000/mcp (POST messages, GET SSE, DELETE session)
これはステートフルです。各クライアントには個別のセッション(mcp-session-id
ヘッダーで追跡)と専用の McpServer が割り当てられますが、上流の SiftingIO 接続はプロセス全体で共有されます。安全対策として、ループバックにのみバインドし、ローカル以外のブラウザーの Origin を拒否します。これは DNS リバインディング対策です。ポートは PORT(または MCP_HTTP_PORT)で設定します。デフォルトは 3000 です。
認証が必要な場合は、MCP_AUTH_TOKEN を設定すると、サーバーはすべてのリクエストに
Authorization: Bearer <token> を要求します(値がない場合や正しくない場合は 401 が返されます)。これと、TLS およびトークンを処理するリバースプロキシを組み合わせれば、localhost の外部にも安全にサーバーを公開できます。
MCP_AUTH_TOKEN=s3cret SIFTING_API_KEY=sft_... npm run start:http
あとは、HTTP 対応の MCP クライアントから http://127.0.0.1:3000/mcp を指定するだけです。
claude mcp add --transport http siftingio http://127.0.0.1:3000/mcp
MCP クライアントで使う
クライアント設定にこれを追加してください。たとえば Claude Desktop の claude_desktop_config.json に追加するか、Claude Code を使っている場合は claude mcp add を使用します。
{
"mcpServers": {
"siftingio": {
"command": "node",
"args": ["/absolute/path/to/siftingio-mcp/dist/index.js"],
"env": { "SIFTING_API_KEY": "sft_..." }
}
}
}
ツール(36)
| 名前空間 | ツール |
|---|---|
| ライブ(スナップショット) | last_trade、last_quote、last_tvl |
| 株式 | stocks_search、stocks_profile、stocks_filings、stocks_filing、stocks_sections、stocks_section、stocks_risk_factors_diff、stocks_ratios、stocks_earnings、stocks_financials、stocks_financial_concept、stocks_insiders、stocks_ownership、stocks_events、stocks_compensation、stocks_screener、stocks_bars |
| 暗号資産/外国為替 | crypto_bars、forex_bars |
| DEX | dex_wallet |
| 市場 | markets_list、markets_status_all、markets_status、markets_hours、markets_calendar |
| 報告者 | filers_holdings |
| マクロ | economic_calendar_list |
| ライブ(ストリーム) | ws_subscribe、ws_unsubscribe、ws_poll、ws_collect、ws_status、ws_disconnect |
いくつか注目すべきパターンがあります。
ページネーション対応のツールは cursor/limit を受け取り、次のページを取得するための meta.next_cursor を返します。stocks_* のリストツール(stocks_filings、stocks_earnings、stocks_insiders、stocks_ownership、stocks_events、stocks_compensation)は max_items にも対応しています。これを設定すると、自動的にページネーションを行い、1 回の呼び出しで複数ページから最大指定数の項目を収集します。
利用頻度の高いツール(last_trade、last_quote、last_tvl、stocks_profile、stocks_search)には 出力スキーマ が付属しており、人が読みやすいテキストに加えて structuredContent も返すため、クライアントは機械処理向けのデータも読み取れます。
すべてのツールには MCP アノテーション も付いています。データツールは readOnlyHint: true(外部 API にアクセスするため、openWorldHint: true でもあります)で、接続状態を変更する WebSocket ツールは readOnlyHint: false、destructiveHint: false です。
結果のサイズには、およそ 60k 文字の上限があります(src/util.ts の MAX_RESULT_CHARS を参照)。完全な XBRL 財務データ、スクリーナー、OHLCV バーなどの大容量エンドポイントがこの上限を超えるデータを返す場合、サーバーは最大の配列を切り詰め、クエリを絞り込む方法を説明する _truncated の注記を追加します。
ライブ WebSocket ストリーミング
ストリーミングは少し特殊で、単一のリクエスト/レスポンスにうまく収まりません。そのためサーバーは 1 つの永続的な WebSocket 接続を開いたままにして、届いたフレームをバッファーに格納し、ツールはそのバッファーから読み取ります。チャネル(product フィールド)は cex(暗号資産)、dex(DEX 取引)、fx(外国為替)、us(米国株式)、tvl(DEX プールの TVL)です。
利用方法は 2 つあります。
- 購読+ポーリング(継続的なストリーム向け):
ws_subscribeを 1 回呼び出し、その後はws_pollを繰り返し呼び出します。最初のポーリングでは直近のデータが返されます。返されたnext_seqをafter_seqとして渡すと、それ以降に届いた新しいフレームだけが返されます。ws_statusでは接続状況と購読中の内容を確認でき、ws_disconnectですべての接続を終了できます。 - 収集(手早く一度だけ取得する場合):
ws_collectは購読を開始し、duration_msの時間が経過するまで(またはmax件のフレームを受信するまで)待ってから、取得したデータを返し、必要に応じて作成した購読を解除します。「BTCUSD の数秒分を取得して」といった用途に最適です。
接続が切れると自動的に再接続し、その際に購読を再開します。バッファーはローリングウィンドウ方式のため、古いフレームは順次消去されます。消去が発生すると、dropped/gap で通知されます。
プロンプト
クライアントでスラッシュコマンドとして表示できる、ガイド付きの複数ツールによるワークフローです。
company_snapshot(ticker)—stocks_profile、stocks_ratios、最新のstocks_filings、last_tradeをまとめて取得し、1 つのブリーフィングにします。compare_companies(tickers)— 複数のティッカーを主要な比率で横並びに比較します。market_now— 現在、取引が行われている市場と休場中の市場、および今後予定されている影響の大きいマクロイベントを確認できます。
ログ記録とシャットダウン
サーバーは MCP のログ記録機能を通知し、接続に関するイベント(WebSocket のオープン/クローズ/再接続/エラー)やシャットダウンが発生するたびに、構造化された
notifications/message をクライアントに送信します。また、これらすべてを stderr にも出力します。
SIGINT または SIGTERM を受信すると、稼働中の WebSocket を閉じ、サーバーを正常にシャットダウンしてから終了します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。