
Sifting
io.sifting由 sifting.io 發布v1.0.2更新於 Oct 24, 2026
Live crypto/forex/metals prices, OHLCV bars, SEC fundamentals, 13F holdings and econ calendar.
概覽
Sifting 讓助理接上 SiftingIO 市場資料:加密貨幣、外匯與金屬的即時價格、OHLCV K 線、SEC 基本面、13F 持股與經濟行事曆。
- 可以做什麼
- 取得即時快照:加密貨幣、外匯與金屬市場的最後成交價、最新報價與 TVL,以及市場清單、開收市狀態、交易時段與宏觀經濟行事曆。研究股票:搜尋公司,讀取簡介、比率、盈餘、財務資料與 XBRL 科目,瀏覽 SEC 申報文件及章節,比對風險因素,並依基本面篩選。查看持股與人員:內部人交易、機構持股、申報方的 13F 持股、高階主管薪酬與公司事件。取得加密貨幣與外匯的歷史 OHLCV K 線,查詢 DEX 錢包活動。透過常駐 WebSocket 訂閱 cex、dex、fx、us、tvl 頻道並輪詢緩衝的即時資料流。
- 適用情境
- 當助理需要目前或歷史市場資料——報價、K 線、SEC 申報與基本面、13F 持股或宏觀事件——來回答研究或簡報類問題時使用。適合希望以一個伺服器涵蓋加密貨幣、外匯、金屬與美股的金融工作流程。
- 執行需求
- 以 Node.js 本機程序執行,從 npm 套件 siftingio-mcp 安裝(先建置再啟動,或直接從原始碼執行)。需要以 SIFTING_API_KEY 環境變數提供 SiftingIO API 金鑰;SIFTING_BASE_URL 與 SIFTING_WS_URL 可覆寫後端位址。需要連線至 SiftingIO API 與 WebSocket 的網路。另有 HTTP 傳輸模式,可用 MCP_AUTH_TOKEN 保護。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Sifting,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
siftingio-mcp
This is a Model Context Protocol (MCP) server
that puts the SiftingIO market-data SDK
(@siftingio/sdk) in reach of your AI assistant. Once it's running, the model can
pull live prices, dig through SEC/EDGAR fundamentals, fetch OHLCV bars, look up 13F
holdings, check market status, and scan the macro economic calendar — all as tools.
Setup
You'll need an API key, which you can grab at https://sifting.io:
If you need to point at a different backend, SIFTING_BASE_URL and SIFTING_WS_URL
are there to override the defaults.
Working locally? Copy .env.example to .env instead — npm run dev and npm start
pick it up automatically (Node does the loading via --env-file-if-exists). When you
wire this into an actual MCP client, though, pass the key through the server's env
block rather than a file (there's an example further down).
Run
Here's the toolbox:
npm run build— compile TypeScript intodist/.npm start— run the compiled server (node dist/index.js) over stdio.npm run start:http— run it over Streamable HTTP (node dist/http.js).npm run dev/npm run dev:http— run straight from source withtsx, no build step.npm test— run the vitest suite (addnpm run test:watchto keep it running).npm run lint/npm run format— ESLint (typescript-eslint) and Prettier.npm run typecheck—tsc --noEmit.
On every push and PR, CI (.github/workflows/ci.yml) walks through the same gauntlet:
format check → lint → typecheck → build → test.
One thing worth knowing: the server talks JSON-RPC over stdio, so stdout belongs entirely to the protocol. Anything diagnostic goes to stderr to stay out of the way.
Inspect interactively
Want to poke at it by hand? The MCP inspector is the easiest way:
HTTP (Streamable HTTP) transport
If you're running this somewhere remote or hosted, use MCP's Streamable HTTP transport instead of stdio:
It's stateful: every client gets its own session (tracked by the mcp-session-id
header) and its own McpServer, while the upstream SiftingIO connection is shared
across the whole process. As a safety measure it only binds to loopback and turns
away non-local browser Origins — that's the DNS-rebinding protection. Set the port
with PORT (or MCP_HTTP_PORT); it defaults to 3000.
If you want auth, set MCP_AUTH_TOKEN and the server will demand
Authorization: Bearer <token> on every request (anything missing or wrong gets a
401). Pair that with a reverse proxy handling TLS and the token, and you can safely
expose the server past localhost:
Then just point any HTTP-capable MCP client at http://127.0.0.1:3000/mcp:
Use with an MCP client
Drop this into your client config — Claude Desktop's claude_desktop_config.json,
say, or use claude mcp add if you're on Claude Code:
Tools (36)
A few patterns are worth calling out:
Paginated tools take cursor/limit and hand back a meta.next_cursor to fetch the
next page. The stocks_* list tools — stocks_filings, stocks_earnings,
stocks_insiders, stocks_ownership, stocks_events, stocks_compensation — also
understand max_items: set it and they'll auto-paginate, gathering up to that many
items across pages in a single call.
The high-traffic tools (last_trade, last_quote, last_tvl, stocks_profile,
stocks_search) come with an output schema and return structuredContent
alongside the human-readable text, so clients can read them machine-side too.
Every tool also carries MCP annotations. The data tools are readOnlyHint: true
(and openWorldHint: true, since they reach out to the external API), while the
WebSocket tools that change connection state are readOnlyHint: false,
destructiveHint: false.
Results are size-capped at roughly 60k characters (see MAX_RESULT_CHARS in
src/util.ts). When a heavy endpoint — full XBRL financials, screeners, OHLCV bars —
returns more than that, the server trims its largest array and tacks on a _truncated
note explaining how to narrow the query.
Live WebSocket streaming
Streaming is the awkward case: it doesn't fit neatly into a single request/response.
So the server holds one persistent WebSocket open, buffers the frames as they
arrive, and the tools just read from that buffer. Channels (the product field) are
cex (crypto), dex (DEX trades), fx (forex), us (US stocks), and tvl (DEX
pool TVL).
There are two ways to work with it:
- Subscribe + poll, for ongoing streams: call
ws_subscribeonce, then keep callingws_poll. The first poll gives you a recent tail; feed the returnednext_seqback in asafter_seqand you'll only get newer frames from then on.ws_statusshows you the connection and what's subscribed, andws_disconnecttears the whole thing down. - Collect, for a quick one-shot:
ws_collectsubscribes, waits up toduration_ms(or until it's seenmaxframes), returns what it caught, and cleans up any subscription it had to create. Perfect for "grab me a few seconds of BTCUSD."
The connection reconnects on its own and replays your subscriptions when it does. The
buffer is a rolling window, so the oldest frames eventually fall off — and when they
do, you'll hear about it through dropped/gap.
Prompts
These are guided, multi-tool workflows your client can surface as slash-commands:
company_snapshot(ticker)— pullsstocks_profile,stocks_ratios, the lateststocks_filings, andlast_tradetogether into one briefing.compare_companies(tickers)— lines up several tickers side by side across the key ratios.market_now— what's open and closed right now, plus the high-impact macro events coming up.
Logging & shutdown
The server advertises the MCP logging capability and pushes structured
notifications/message to the client whenever something happens with the connection
(WebSocket open/close/reconnect/error) or on shutdown — and it mirrors all of that to
stderr too.
When it catches a SIGINT or SIGTERM, it closes the live WebSocket and shuts the server down cleanly before exiting.
來源:README.md,提交 40a31aa
工具
0版本歷史
1- v1.0.2最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分