OpenMarkets is a Model Context Protocol server exposing normalized financial-market data and quantitative analytics through 127 tools.
uvx openmarkets@latest
For Streamable HTTP:
uvx openmarkets@latest \
--transport http \
--host 0.0.0.0 \
--port 8000 \
--http-auth-enabled \
--http-auth-secret "replace-with-a-secret" \
--http-allowed-hosts "markets.example.com"
The MCP endpoint is /mcp; /health and /metrics provide operational telemetry. DNS-rebinding protection is enabled by default. Configure every externally accepted Host through --http-allowed-hosts.
For horizontally scaled deployments, set OPENMARKETS_REQUEST_STATE_KEYS to a comma-separated ring of secrets (each at least 32 bytes) so multi-round MCP requests can be verified by every replica. --http-stateless preserves the SDK’s opt-in behavior for 2025-era Streamable HTTP clients; modern 2026 clients are sessionless regardless.
| Profile | Scope |
|---|---|
full |
All 127 tools |
minimal |
36 stock, financial, analyst, and screener tools |
equities |
Equity research, holdings, options, portfolio, screener, and SEC tools |
quant |
Cross-asset market data and portfolio analytics |
macro |
Commodities, rates, FX, markets, sectors, and macroeconomics |
| Domain profiles | commodities, forex, crypto, fixed_income, macroeconomics, sec, portfolio |
Select a profile with --profile, for example:
uvx openmarkets@latest --profile portfolio
Generate the exact MCP input and output schemas from the installed version:
uv run openmarkets --export-schema openmarkets-tools.json
See the API reference for transport and schema details.
OpenMarkets distinguishes unavailable upstream data from malformed provider responses. Unknown arguments, invalid numerical ranges, non-finite analytics, and broken provider shapes fail explicitly rather than being converted to plausible zeroes or all-null success objects.