tradingview-mcp
by thecyberneh
README.md
# tradingview-mcp
A minimal MCP server that fetches **OHLCV candles** for NSE/BSE symbols from
TradingView's chart WebSocket. For **testing** live/intraday data before moving to
the paid Kite feed. Protocol reverse-engineered in [PROTOCOL.md](PROTOCOL.md).
## What it does
- One tool: **`get_ohlcv(symbol, resolution, bars)`** → bars as
`[unix_time, open, high, low, close, volume]`, oldest first.
- `symbol`: `NSE:RELIANCE`, `NSE:NIFTY`, `BSE:SENSEX`, …
- `resolution`: `15`/`60`/`D`/`W`/`1M` or aliases `15m`/`hourly`/`daily`/`weekly`.
- Indicators are NOT fetched — compute EMA/ATR/RSI yourself (the swing engine
already does).
- **Data quality depends on login** (see below). Logged in with a free account,
many NSE symbols stream real-time; anonymous guest is delayed/EOD.
## First-time login (recommended)
A logged-in session gives better/real-time data. Run this **once** — the password
is used only to obtain a token and is **never stored**; only the token +
sessionid land in `.tv_session.json` (gitignored, chmod 600). The client and MCP
pick it up automatically.
```bash
TV_USERNAME='you@example.com' TV_PASSWORD='...' python3 tv_auth.py
```
If TradingView ever throws a CAPTCHA/2FA (it didn't in testing), grab the
`auth_token` from a logged-in browser (devtools → WS → `set_auth_token`) and drop
it into `.tv_session.json` as `{"auth_token":"..."}`. Without any session file the
client falls back to the guest token automatically.
## Files
- `tv_client.py` — the WebSocket client (also runnable: `python3 tv_client.py NSE:RELIANCE D 10`)
- `tv_auth.py` — one-time login → saves the session token (`.tv_session.json`)
- `server.py` — the stdio MCP server (no external SDK; retries on TV rate-limits)
- `requirements.txt` — `websocket-client`, `requests` (login only)
## Install / run
```bash
pip install -r requirements.txt
python3 tv_client.py NSE:RELIANCE 15 5 # quick sanity check
```
## Connect to Claude Code
```bash
claude mcp add tradingview -- python3 /home/neh/StockWealth/tradingview-mcp/server.py
```
Restart the session so the tool loads, then ask for e.g. NSE:HFCL daily candles.
## Honest caveats
- **Unofficial + against TradingView's ToS**; the protocol/tokens change without
notice, so this WILL break eventually. Testing tool only.
- **A logged-in free account streams real-time on many NSE symbols** (verified);
anonymous guest is delayed. Some symbols/exchanges still require a paid data
plan regardless.
- TradingView rate-limits rapid reconnects; the server retries with backoff. Don't
hammer it.
- **The intended production path is the Kite Connect API (~₹500/mo)** — official,
stable, real-time. This MCP exists only to test the intraday-data workflow first.
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues