SiftingIO MCP

by siftingio

Not rated
GitHub

About

Real-time and historical market data including US Equities, Forex, Crypto (CEX & DEX), Commodities and fundamentals.

Details

Author
siftingio
Categories
Finance, Other

Setup

Install SiftingIO MCP in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/siftingio/siftingio-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

This is aModel Context Protocol(MCP) server that puts theSiftingIO 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.

You'll need an API key, which you can grab athttps://sifting.io:

If you need to point at a different backend,SIFTING_BASE_URLandSIFTING_WS_URLare there to override the defaults.

Working locally? Copy.env.exampleto.envinstead —npm run devandnpm startpick 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'senvblock rather than a file (there's an example further down).

- npm run build— compile TypeScript intodist/.
- npm start— run the compiled server (node dist/index.js) overstdio.
- npm run start:http— run it overStreamable HTTP(node dist/http.js).
- npm run dev/npm run dev:http— run straight from source withtsx, no build step.
- npm test— run the
vitestsuite (addnpm run test:watchto keep it running).
- npm run lint/npm run format— ESLint (typescript-eslint) and Prettier.
- npm run typechecktsc --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 overstdio, so stdout belongs entirely to the protocol. Anything diagnostic goes to stderr to stay out of the way.

Want to poke at it by hand? The MCP inspector is the easiest way:

SIFTING_API_KEY=sft_... npx @modelcontextprotocol/inspector node dist/index.js

If you're running this somewhere remote or hosted, use MCP's Streamable HTTP transport instead of stdio:

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)

It'sstateful: every client gets its own session (tracked by themcp-session-idheader) and its ownMcpServer, while the upstream SiftingIO connection is shared across the whole process. As a safety measure it only binds toloopbackand turns away non-local browserOrigins — that's the DNS-rebinding protection. Set the port withPORT(orMCP_HTTP_PORT); it defaults to3000.

If you want auth, setMCP_AUTH_TOKENand the server will demandAuthorization: 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:

MCP_AUTH_TOKEN=s3cret SIFTING_API_KEY=sft_... npm run start:http

Then just point any HTTP-capable MCP client athttp://127.0.0.1:3000/mcp:

claude mcp add --transport http siftingio http://127.0.0.1:3000/mcp

Drop this into your client config — Claude Desktop'sclaude_desktop_config.json, say, or useclaude mcp addif you're on Claude Code:

{ "mcpServers": { "siftingio": { "command": "node", "args": ["/absolute/path/to/siftingio-mcp/dist/index.js"], "env": { "SIFTING_API_KEY": "sft_..." } } } }

Paginated tools takecursor/limitand hand back ameta.next_cursorto fetch the next page. Thestocks_*list tools —stocks_filings,stocks_earnings,stocks_insiders,stocks_ownership,stocks_events,stocks_compensation— also understandmax_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 anoutput schemaand returnstructuredContentalongside the human-readable text, so clients can read them machine-side too.

Every tool also carries MCPannotations. The data tools arereadOnlyHint: true(andopenWorldHint: true, since they reach out to the external API), while the WebSocket tools that change connection state arereadOnlyHint: false,destructiveHint: false.

Results aresize-cappedat roughly 60k characters (seeMAX_RESULT_CHARSinsrc/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_truncatednote explaining how to narrow the query.

Streaming is the awkward case: it doesn't fit neatly into a single request/response. So the server holdsone persistent WebSocketopen, buffers the frames as they arrive, and the tools just read from that buffer. Channels (theproductfield) arecex(crypto),dex(DEX trades),fx(forex),us(US stocks), andtvl(DEX pool TVL).

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 throughdropped/gap.

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.

The server advertises the MCPloggingcapability and pushes structurednotifications/messageto 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 aSIGINT or SIGTERM, it closes the live WebSocket and shuts the server down cleanly before exiting.

Remote MCP server for historical crypto & prediction-market data: search ~500K instruments, live market stats (OHLC, turnover, spreads, depth, slippage) and tick-data purchase. Keyless for catalog & stats; optional OAuth for account tools. Endpoint: https://cryptostruct.com/mcp

Read-only MCP server for your Evibe investment portfolio + live market data (holdings, performance, dividends, benchmarks, screeners). Works with Claude & ChatGPT.

Alpaca’s official MCP Server lets you trade stocks, ETFs, crypto, and options, run data analysis, and build strategies in plain English directly from your favorite LLM tools and IDEs

Real-time crypto whale intelligence MCP server with 54 tools across 14 blockchains. No auth required.

18 detection engines across crypto and US equities/ETFs return read-only market-risk verdicts — every one judged against realized outcomes in a public ledger, misses included.

Remote MCP server for prediction markets — search and compare live odds across Polymarket, Kalshi, and Limitless from Claude, ChatGPT, or Gemini. Six read-only tools, free tier available.

Graded trading signals & market analysis (FX, crypto, sports, prediction markets) with a public machine-graded track record. Free track-record tools; pay per call with x402 USDC or credit packs.

Covers Forex/FX · Precious Metals · Indices · US Stocks (NASDAQ/NYSE) · HK Stocks · A-shares/CN Stocks · Cryptocurrency through 13 MCP tools backed by a REST API.

Real-time and historical FX/crypto signal API for AI agents. Pay-per-call via x402 protocol on Base. No subscription, no API key. Correlation, regime, momentum, volatility across 10 instruments.

Market phase transition signals (Phi/Chi critical state detection) for HS300 and BTC. Free sensing and briefing endpoints. x402 payment protocol for advanced tools. Action signals by role.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.