trade-analytics-mcp
by oliverwehn
README.md
# trade-analytics-mcp
**Give your AI eyes and a ruler for your trades.** An open-source MCP server that lets your
LLM/agent pull the real price action around every fill in an order-history export, *see* each trade
on a candlestick chart, and *measure* it — heat taken, R-multiple, whether it went green before red,
how much of the move it captured — so it can tell you whether a loss was **bad luck or bad location**.
You bring your own market-data key; the data stays on your machine.
---
## Why — what it actually lets your AI do
An order-history export (Tradovate, your broker's CSV, …) is just timestamps, prices, sizes, sides.
From that alone an AI can spot *behaviour* — overtrading, revenge entries, size creep, bad
time-of-day — but it is **blind to trade-location quality**: was the entry into structure or a chase?
how much adverse excursion did you sit through? did you cut a winner early? was the stop sane for the
volatility?
This MCP closes that gap — in two tiers.
### 🆓 Free, on your machine
`resolve_symbol` + `get_price_context` run **100% locally** under your own Databento key — no
account, no fee, no data leaving the machine. Your agent can:
- turn *"MNQ" / "micro nasdaq"* into the exact contract, point value, and front-month; and
- pull the **real OHLCV around each fill** (auto-windowed) with your entries/exits/stops as **JSON**,
so it reasons over the *actual* price path — where the entry sat, the shape of the move, proximity to
the day's high/low — instead of guessing. That alone turns *"I think I chased"* into a grounded read.
### 💳 With a trade-analytics API key (free tier — no card)
`render` and `analyze` send only the **numeric slice** of that same local data to the hosted API and
add the two things that are tedious or impossible to do well from raw JSON. The API has a **free
tier (no credit card)**, so you can try the full experience at no cost — paid tiers only raise the
monthly quota:
- **`render`** — an annotated **candlestick chart image** (entries ▲ / exits ▼, SL/TP zones, reference
levels), returned *and saved to a file* so your AI can drop it into a journal.
- **`analyze`** — the precise per-trade metrics that separate *good-trade-bad-outcome* from
*bad-location*: **MAE / MFE** (heat vs best excursion), **R-multiple**, **went-green-first**,
**capture efficiency**, plus USD P&L, time-in-trade, win rate, and session roll-ups.
So — with the paid tools — instead of *"you lost on trade #3,"* your AI can say:
> *"Trade #3 (short at 20,110) went +0.8R in your favour within three minutes, then reversed through
> your entry to −18 pts before you exited at −15 — MFE 12, MAE 18, capture −1.2. Location was fine
> (into the prior-day high); **management wasn't**,"* — and hand you the annotated chart.
### A typical review
> **"Review my MNQ trades from last week."** → your agent reconstructs the round-trips, calls
> `resolve_symbol` (MNQ → the right contract), `analyze` (per-trade MAE/MFE/R/capture + a session
> summary), and `render` on the notable trades (charts saved to your vault), then writes the review
> with the numbers *and* the pictures.
---
## Tools
| Tool | What it does | Cost |
|---|---|---|
| `resolve_symbol` | "MNQ" / "micro nasdaq" → precise contract, point value, front-month | **Free**, local |
| `get_price_context` | OHLCV + your entries/exits/SL as **JSON** for a window auto-sized around the trade | **Free**, local |
| `render` | An annotated **candlestick chart image**, returned *and saved to a file* (PNG or SVG) | Paid |
| `analyze` | Per-trade **MAE/MFE, R-multiple, went-green-first, capture efficiency** + summary | Paid |
`resolve_symbol` and `get_price_context` run **100% on your machine** under your own data key — no
account, no fee. `render` and `analyze` forward only the **numeric slice** of your own data to the
hosted [trade-analytics API](https://trade-context.mcp.o-gw.com) and return the result; nothing is retained.
---
## Setup
### 1. Get a Databento key (your market data)
[Databento](https://databento.com) is a modern market-data provider — institutional-grade historical
and live data through a simple API. This example MCP implementation uses it to fetch the candles
around your trades, under **your own** key, locally.
- **No subscription.** It's **pay-as-you-go**, and new accounts get a **free usage credit** that
comfortably covers normal trade review — historical 1-minute OHLCV is cheap and is often effectively
free within that credit.
- Sign up at **[databento.com](https://databento.com)** → open the portal → **create an API key** →
that's your `DATABENTO_API_KEY`.
Your key and your data stay on your machine; only the numeric slices you `render`/`analyze` leave it.
### 2. Get a trade-analytics API key — free to start
`render` and `analyze` call the hosted API, which has a **free tier (no credit card)** — so you can
use the full experience right away; paid tiers only raise the monthly quota.
1. Open the **[dashboard](https://trade-context.mcp.o-gw.com/dashboard)** and **sign up** (free).
2. Click **Create key** and copy it — it's shown **once** (looks like `tc_live_…`).
3. Add it to your MCP config as `TRADE_ANALYTICS_API_KEY` (step 3 below).
> **You don't need this to get started.** The MCP connects and the **free local tools work with just
> your Databento key** — the API key only unlocks `render` + `analyze`, so add it whenever you want
> charts or analysis. Call those without a key and you'll get a friendly "grab a key" message, not a
> crash.
### 3. Add the MCP to your client
**Claude Code** (or any terminal harness):
```bash
claude mcp add trade-analytics \
-e DATABENTO_API_KEY=db-your-key \
-e TRADE_ANALYTICS_API_KEY=tc_live_your-key \
-- npx -y trade-analytics-mcp
```
Drop the `TRADE_ANALYTICS_API_KEY` line to run just the free local tools.
**Claude Desktop / other MCP clients** — add to the config:
```json
{
"mcpServers": {
"trade-analytics": {
"command": "npx",
"args": ["-y", "trade-analytics-mcp"],
"env": {
"DATABENTO_API_KEY": "db-your-key",
"TRADE_ANALYTICS_API_KEY": "tc_live_your-key"
}
}
}
}
```
### Configuration
Resolved with precedence **CLI flags > env > defaults**:
| Setting | Env | Flag | Notes |
|---|---|---|---|
| Databento key | `DATABENTO_API_KEY` | `--databento-key` | Required. Your own; data stays local. |
| API key | `TRADE_ANALYTICS_API_KEY` | `--api-key` | Only for `render` / `analyze`. |
| API URL | `TRADE_ANALYTICS_API_URL` | `--api-url` | Defaults to the hosted API. |
| Output dir | `TRADE_ANALYTICS_OUTPUT_DIR` | `--output-dir` | Where `render` saves images. |
---
## Built on the trade-analytics API
This whole server is a **thin client** — it fetches data locally and calls the
**[trade-analytics API](https://trade-context.mcp.o-gw.com)** for the rendering and analysis. That API
is a general, data-agnostic service for **turning OHLC data into chart images and trade metrics**:
send it candles (from *any* source), get back a chart or a trade analysis. This MCP is just one
example of what you can build on it — a dashboard, a trading bot, a Discord/Slack integration, a
backtest reporter, or your own journaling tool would all sit on the same endpoints.
## Privacy
- Your Databento key and your market data live **on your machine**.
- The free tools make **no network calls** to us at all.
- `render` / `analyze` send only the **numeric candle slice** needed for that one call; the API is
**stateless and retains nothing**.
## Develop
```bash
npm install
npm run typecheck && npm test && npm run build
npm run dev # run the stdio server locally
```
MIT licensed. Issues and PRs welcome.
TDQS
A4/5.0
Scored across 4 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: symbol resolution, data fetching, chart rendering, and trade analysis. No overlap or ambiguity.
Naming Consistency3/5
Two tools use verb_noun pattern (resolve_symbol, get_price_context), while two are single verbs (render, analyze). Inconsistent naming convention, though each name is descriptive enough.
Tool Count4/5
4 tools is slightly below average but appropriate for a focused trade analytics server. Each tool covers a core function without being too thin.
Completeness4/5
Covers the main workflow: symbol resolution, data retrieval, visualization, and analysis. Minor gaps like bulk data or risk management are not core, so overall good coverage.
Maintenance
ActivityMaintained
ResponsivenessNo issues