AuraStream MCP
Provides access to Binance historical crypto market data through AuraStream, including OHLCV bars for tickers such as BTCUSDT and ETHUSDT over specified date ranges and intervals.
Provides access to Polygon historical market data through AuraStream using the user's own Polygon credentials, enabling retrieval of OHLCV bars and related financial data for supported tickers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AuraStream MCPplot BTC daily closes for Q1 from Binance"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
aurastream-mcp
An MCP server for AuraStream, the unified historical data API. It lets Claude Desktop, Claude Code, ChatGPT and other MCP clients pull OHLCV bars (and, for some sources, funding rates, trades, quotes, order books and earnings) from crypto exchanges, Yahoo Finance, Oanda, Alpaca, Polygon and others, plus macro, positioning and trade-flow data such as FRED, CFTC Commitments of Traders, FINRA short interest, SEC insider trades and UK/EU/US/Hong Kong metals trade, through one tool.
Ask "plot BTC daily closes for Q1 from Binance", "compare SPY and QQQ drawdowns this year" or "how have hedge funds positioned in gold futures since 2020?" and the model calls AuraStream for the data.
Tools
Tool | What it does |
| Sources, asset classes, ticker formats, intervals, supported dtypes and source-specific parameters, and whether provider credentials are needed and configured. No API call. |
| Calls |
| The most recent N bars per ticker, without picking dates. |
Each get_timeseries / get_latest call is one AuraStream API call.
Sources exposed:
Group | Sources |
Market data |
|
Macro and energy |
|
Fundamentals |
|
Positioning and flows |
|
Crypto fundamentals and news |
|
Dates are YYYY-MM-DD. Intervals follow the API: upper-case M is minutes, lower-case m is months (15M = 15 minutes, 1m = one month). The server checks intervals, dtypes and parameters against each source's documented values before calling the API.
Related MCP server: Data Puller MCP Server
Install
Requires Python 3.10+.
pip install "git+https://github.com/UnbiasedAlpha/aurastream-mcp"A PyPI release (pip install aurastream-mcp / uvx aurastream-mcp) is planned; the snippets below work the same either way.
This installs an aurastream-mcp command. Check it with aurastream-mcp --help.
Configuration
All secrets come from environment variables. Provider credentials are never tool arguments, so they never pass through the chat or the model.
Variable | Needed for |
| Everything. Get a free key from the dashboard. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Set only the ones you use. list_sources tells the model which sources are configured.
Claude Desktop
Edit claude_desktop_config.json (Settings > Developer > Edit Config):
{
"mcpServers": {
"aurastream": {
"command": "aurastream-mcp",
"env": {
"AURASTREAM_API_KEY": "your-aurastream-key",
"OANDA_ACCOUNT_ID": "101-004-12345678-001",
"OANDA_TOKEN": "your-oanda-token"
}
}
}
}If Claude Desktop can't find the command, use the full path (e.g. C:\\Users\\you\\venv\\Scripts\\aurastream-mcp.exe or /Users/you/venv/bin/aurastream-mcp). Restart Claude Desktop afterwards.
Claude Code
claude mcp add aurastream -e AURASTREAM_API_KEY=your-aurastream-key -- aurastream-mcpAdd -e FRED_API_KEY=... etc. for credentialed sources, and --scope user to make it available in every project.
ChatGPT (remote connector)
ChatGPT only talks to remote MCP servers over HTTPS, so run the server in HTTP mode somewhere reachable and register the URL as a connector (Settings > Connectors, developer mode).
AURASTREAM_API_KEY=your-key aurastream-mcp --http --host 127.0.0.1 --port 8000
# endpoint: http://127.0.0.1:8000/mcpPut it behind something that gives you a public HTTPS URL (a reverse proxy with TLS, or a tunnel such as Cloudflare Tunnel or ngrok), then tell the server which public host name to accept:
aurastream-mcp --http --port 8000 --allowed-host mcp.example.comand add https://mcp.example.com/mcp in ChatGPT. Requests with any other Host header are rejected (DNS-rebinding protection).
How the API key works in HTTP mode. If the client sends x-api-key: <key> or Authorization: Bearer <key>, that key is used. Otherwise the server falls back to AURASTREAM_API_KEY. The fallback is what makes ChatGPT work today, but it also means anyone who knows the URL spends your allowance and uses your provider credentials. Treat the HTTP mode as single-user self-hosting: keep the URL private, or put it behind your own auth. For clients that can send headers, start with --require-client-key to disable the fallback. Provider credentials always come from the server's environment.
Other options
aurastream-mcp [--http] [--host HOST] [--port PORT] [--path /mcp]
[--allowed-host HOST ...] [--require-client-key]AURASTREAM_API_URL overrides the endpoint (useful for testing).
Example prompts
"What sources does AuraStream have for forex?"
"Get daily BTCUSDT and ETHUSDT from Binance for 2025 and compute their 30-day rolling correlation."
"Show the last 20 hourly bars of EUR_USD from Oanda."
"Pull UNRATE and DFF from FRED since 2015 and describe how they moved together."
"Show Binance BTCUSDT perpetual funding rates for June 2025."
"How has managed-money positioning in gold futures (CFTC) changed since 2020?"
"Which AAPL insiders bought or sold shares in 2024?"
"Show monthly UK gold exports to Switzerland since 2020."
"Fetch SPY and QQQ daily from Yahoo for the last 6 months and compare max drawdowns."
Limits
Historical data, not a real-time feed. The last bar may still be forming.
Every data call counts against your monthly AuraStream allowance (free plan: 500 calls/month). When it runs out the tool says so; it resets on the 1st at 00:00 UTC. The free plan also allows about 1 request per second.
Results are capped per ticker (default 100 rows, max 1000) to keep the model's context manageable. For long, fine-grained histories use the REST API or the Python client directly.
The API times out after 120 seconds; split very large requests.
Interval support varies by source (see the docs).
Known issues
Credential field names. The API docs name the provider credential fields
api_key(Polygon, FRED, Finnhub) andapi_key/secret_key(Alpaca), while the AuraStream backend library readskey(andsecretfor Alpaca). Until that is settled, the server sends each value under both names, e.g.{"api_key": k, "key": k}. This has not been tested against the live API yet.FirstRate has no docs page; its ticker format and intervals are not documented, so the server only applies the general interval list.
Non-bar data (funding, order book, trades, quotes, earnings, Finnhub financials and the macro, positioning and trade sources) is rendered generically as a table and has not been checked against live responses.
Several sources are stamped at the period they describe but published later (EIA, FINRA short interest, the trade sources).
list_sourcesnotes the lag; shift the data before backtesting.GDELT search queries are throttled by GDELT itself; keep ranges short.
dataset="themes"is not throttled.
Development
python -m venv .venv
.venv/Scripts/activate # or: source .venv/bin/activate
pip install -e ".[test]"
pytestThe tests mock all HTTP calls; no API key is needed.
License
MIT. See LICENSE.
Available Tools
3 toolsget_latestARead-onlyIdempotent
Return the most recent N bars (OHLCV) per ticker, without having to pick dates. Uses one unit of the monthly AuraStream allowance. Data is historical/delayed, not a live quote; the last bar may still be forming.
| Name | Required | Description | Default |
|---|---|---|---|
| bars | No | How many of the most recent bars to return per ticker. | |
| source | Yes | Data source id, see list_sources. | |
| tickers | Yes | Tickers in the source's own format. | |
| interval | No | Bar size, e.g. 1h or 1d. | 1d |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses key behavioral traits: it consumes one unit of the monthly AuraStream allowance, returns historical/delayed data rather than live quotes, and notes that the last bar may still be forming. These are exactly the caveats an agent needs before calling the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with the purpose and followed by quota and data-quality caveats. Every sentence adds useful information with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full parameter documentation, and annotations already covering safety and idempotency, the description supplies the remaining quota and delayed-data caveats. It could explicitly name get_timeseries as the alternative, but it is otherwise complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including enums and defaults. The description reinforces that bars are returned per ticker but adds no syntax or constraints beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: return the most recent N OHLCV bars per ticker. The phrase 'without having to pick dates' implicitly contrasts with get_timeseries, but it does not explicitly name the sibling, so the differentiation is clear but not fully explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without having to pick dates' signals the convenience scenario, but the description never names get_timeseries or states when not to use this tool. The alternative is left to inference rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timeseriesARead-onlyIdempotent
Fetch historical data from AuraStream and return it as a CSV table per ticker (timestamp,Open,High,Low,Close,Volume for market bars; source-specific fields otherwise, see list_sources). Long results are cut to the most recent max_rows rows per ticker, with the total row count noted. Each call uses one unit of the user's monthly AuraStream allowance. Provider credentials come from the server's environment; never ask the user to paste them.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End date, YYYY-MM-DD. | |
| feed | No | alpaca only: iex (default) or sip (needs a paid Alpaca plan). | |
| mode | No | gdelt search queries only: share of coverage (default), article count, or tone. | |
| as_of | No | cftc only: stamp at Friday publication (release, default, no look-ahead) or Tuesday position date (report). | |
| dtype | No | 'bars' everywhere; binance also 'funding'/'orderbook'; oanda also 'orderbook'; alpaca also 'trades'/'quotes'; yahoo also 'earnings'. | bars |
| start | Yes | Start date, YYYY-MM-DD. | |
| period | No | edgar financials only: quarter (default) or annual. | |
| report | No | cftc only; default depends on the symbol. | |
| source | Yes | Data source id, see list_sources. | |
| dataset | No | finra: short_interest (default) or short_volume. edgar: insider (default) or financials. gdelt: themes. | |
| options | No | cftc only: include options (futures-equivalent). | |
| tickers | Yes | Tickers in the source's own format, e.g. ['BTCUSDT'] for binance, ['EUR_USD'] for oanda, ['SPY'] for yahoo, ['GC'] for cftc, ['gold:CH'] for hmrc. Batch several tickers in one call. | |
| category | No | bybit only: linear (default) or inverse. | |
| concepts | No | edgar financials only: XBRL concepts, e.g. ['Revenues']. | |
| interval | No | Bar size: upper-case M is minutes, lower-case m is months (15M = 15 minutes, 1m = one month). Support varies by source (list_sources shows each source's intervals). | 1d |
| max_rows | No | Max rows returned per ticker; the most recent rows are kept. | |
| reporter | No | comext only: EU27_2020 (default) or a member state, e.g. DE. | |
| frequency | No | fred and finnhub only: quarterly (default) or annual. | |
| assetclass | No | alpaca only. | |
| instrument | No | binance: spot (default) or perpetual (needed for dtype funding). kraken: futures (default) or spot. | |
| price_type | No | oanda only: A ask (default), B bid, M mid. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, it discloses CSV return shape, per-ticker structure, truncation to the most recent max_rows rows with total count noted, monthly allowance consumption, and environment-based credential handling. These are meaningful behavioral details that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and return format, then covers truncation, cost, and credentials. Every sentence contributes operational information without excess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and 100% parameter description coverage, the description supplies the key missing operational context: CSV output, truncation behavior, allowance cost, and credential handling. An agent has enough information to call it correctly and route source-specific details to list_sources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter semantics are already largely handled by the schema. The description adds useful context for max_rows truncation and source-specific field discovery via list_sources, but it does not materially explain the many source-specific parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: fetch historical AuraStream data and return it as a CSV table per ticker. It also distinguishes the historical nature from the sibling get_latest and points to list_sources for source-specific fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes this tool as the historical-data fetch path and references list_sources for source-specific fields. It does not explicitly contrast with get_latest, but the historical framing and sibling naming make the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sourcesARead-onlyIdempotent
List the AuraStream data sources: what each covers, ticker format, intervals, supported dtypes, optional source-specific parameters, the fields returned when they are not OHLCV, and whether provider credentials are needed and configured. Free to call (does not use the API allowance).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent, so the remaining value is cost and prerequisites, and the description delivers both: 'Free to call (does not use the API allowance)' and a note that it reports whether provider credentials are needed and configured. That is exactly the kind of context annotations cannot express. It does not state pagination or ordering behavior, keeping it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the verb and resource, and every clause carries information (formats, fields, credentials, cost). The enumeration is long but none of the items is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter discovery tool with a full output schema, the description covers purpose, cost, and credential prerequisites, which is nearly everything an agent needs. The only gap is an explicit instruction on when to prefer this over calling get_timeseries directly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the schema to document and the baseline is 4. The description still uses the space usefully by explaining that some sources have source-specific parameters, which prepares the agent for what the output will contain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('List the AuraStream data sources') and then enumerates exactly what the listing contains: coverage, ticker format, intervals, dtypes, optional source params, non-OHLCV fields, and credential status. That is far more specific than siblings get_timeseries/get_latest, which retrieve data rather than describe it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The subject matter makes the when-to-use clear (discover sources, formats and credential requirements before fetching), and being a zero-parameter catalog it has no per-call conditions to state. It does not explicitly say 'call this before get_timeseries' or name the alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
get_latest - First observed
get_timeseries - First observed
list_sources
TDQS
Scored across 3 tools
Each tool maps to a distinct step: discovery (list_sources), bounded historical fetch (get_timeseries), and a convenience recent-bars fetch (get_latest). get_timeseries and get_latest overlap substantially since the latter is effectively a date-free subset of the former, but the descriptions clearly frame get_latest as the 'don't pick dates' shortcut.
All three tools are snake_case verb-first names (list_/get_/get_) that read predictably and map loosely to resource retrieval. No mixed conventions or cryptic abbreviations.
Three tools is on the lean side but each earns its place: source discovery, ranged history, and latest bars. A small read-only data-fetch server doesn't need a larger surface, though it sits near the thin end.
The read-only retrieval lifecycle (discover sources → fetch history → fetch recent bars) is fully covered with no dead ends for the core workflow. Notable gap: every metered call consumes monthly allowance, yet there is no tool to check remaining quota/usage, and no ticker search or validation helper.
Maintenance
Related MCP Connectors
Live crypto + IDX stock market intelligence for AI agents — 19 tools, no API key.
> TradingMCP puts a market analyst inside your AI assistant. Paste one URL into Claude, ChatGPT, Cursor, VS Code or any MCP client and ask in plain language: screen for breakouts, run a multi-timeframe analysis, backtest a strategy with walk-forward validation, scan for smart-money and volume signals, or get a one-prompt morning market brief. In clients that support MCP Apps, price charts and the Markets panel are drawn right in the chat. > 40+ tools covering crypto (real-time), stocks, ETFs, FX, futures and commodities across major global exchanges. > Hosted, nothing to install: Pro $9/month (2,500 tool calls) or Pro+ $29/month (10,000). Paid upfront with a 14-day money-back guarantee; your API key arrives right after checkout. > Built on the open-source tradingview-mcp core (MIT, ~5k GitHub stars): self-host it free, or use the hosted version with zero ops. > For research and education, not financial advice. Not affiliated with TradingView
Financial data MCP server for Claude, ChatGPT, Cursor and Codex. Real-time stock quotes, financial statements, options flow, SEC filings, insider trades, 13F holdings, macro data and market news from gloom.sh, the open-source Bloomberg Terminal alternative.
Agent-native crypto market-data over MCP+REST: order flow, whales, liquidations, calibrated scores
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables MCP-compatible AI clients to access live crypto market data and AI-driven quantitative analysis, with structured outputs and full observability.-
- FlicenseNot gradedqualityDmaintenanceEnables fetching live crypto market data from Binance, Bybit, and Hyperliquid via MCP tools, including klines, orderbook, funding rates, technical indicators, and market breadth for real-time analysis by LLMs.-

Iturri MCP serverofficial
AlicenseNot gradedqualityFmaintenanceEnables AI agents to discover, validate, and fetch verified crypto and US-equity market data, including quality-flagged OHLCV bars, leakage-safe features, funding, open interest, order flow, context, events, and regime labels. It supports free catalog discovery and x402 USDC payments per call.MIT- AlicenseNot gradedqualityBmaintenanceEnables agents to pull crypto discovery, rankings, and market-cap data from CoinMarketCap, Fed macro and liquidity series with point-in-time vintages via FRED/ALFRED, and a curated, sourced FOMC hike/cut/hold decision calendar. It exposes eight MCP tools whose API credentials are resolved server-side, and also feeds bounded, checkpointed ingestion streams through the agent-connector-sdk source adapter.MIT