MCP server for TradingView: screeners, technical ratings, OHLCV history, Pine Script, and (browser-driven) account tools.
Server has 10 tools with complete input schemas and descriptions. Naming follows verb_noun convention (tv_*). Descriptions are present but vary in quality (50-250 chars). Most parameters have types and descriptions, but several lack constraints (enums, min/max). Output schemas are not explicitly documented. Error handling is minimal, no recovery guidance or actionable error messages. Tool composition is reasonable but some tools combine multiple concerns (e.g., tv_levels computes multiple level types in one call). No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles.
Run every built-in strategy (default params) on one symbol and rank them. Strategies: sma_cross, ema_cross, rsi_reversion, donchian_breakout, macd_cross, bollinger, supertrend. Returns each one's return, buy&hold, Sharpe, max DD, trades, win rate — sorted by your chosen metric. Needs tvdatafeed.
Grid-search one strategy's parameters on a symbol and rank the combos. Returns the top combinations by your chosen metric with their params and stats. NOTE: a high in-sample best is easy to cherry-pick — use tv_backtest_walkforward to check it isn't overfit. Needs tvdatafeed.
Walk-forward test: for each fold, grid-optimize the strategy on the in-sample (IS) window, then score those params on out-of-sample (OOS) data to flag overfitting.
Detect recent candlestick patterns from OHLCV: doji, hammer, shooting star, bullish/bearish engulfing. Source: symbol+exchange, csv_path, or bars_json.
Read recent TradingView alerts captured by the webhook receiver. Requires the receiver to be running (python -m tradingview_mcp.webhook_receiver) and your TradingView alerts pointed at its public URL. Use for "what alerts fired today?", "show my latest TradingView alerts", or to act on a fired signal.
Output schemas not documented. Tools return structured data but LLMs cannot see field names, types, or whether pagination is supported. Forces LLMs to guess at response structure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). tv_snapshot_chart writes files (WRITE risk) but is not marked destructive. Backtesting tools are read-only but unmarked. Agents cannot reason about side effects.
Numeric parameters lack min/max constraints. n_bars (20 - 5000), fee_bps (0 - 100), top (1 - 50) have constraints in schema but no validation guidance in descriptions. Unbounded parameters invite hallucinated values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Read the symbols in your currently-selected TradingView watchlist (best-effort DOM scrape of the watchlist panel). Requires a one-time login via `python scripts/tv_login.py`.
Compute key price levels from OHLCV: classic pivot points (PP/R1-3/S1-3), Fibonacci retracements of the recent swing range, VWAP (anchored to the data), and support/resistance from swing clusters. Source: symbol+exchange, csv_path, or bars_json.
List your active TradingView alerts (best-effort scrape of the alerts panel). Requires a one-time login via `python scripts/tv_login.py`.
Capture a PNG screenshot of a TradingView chart for a symbol/timeframe, using your logged-in session (so your indicators/layout show). Requires a one-time login: run `python scripts/tv_login.py`.
Volume-by-price profile from OHLCV: point of control (POC) and the 70% value area (high/low). Needs a volume column. Source: symbol+exchange, csv_path, or bars_json.
Error handling absent. No recovery guidance. If tv_snapshot_chart fails (browser not ready, session expired), LLM gets no hint to run tv_login or check Playwright installation. Errors should guide next steps.
Tool composition: tv_levels, tv_candles, tv_volume_profile each accept symbol+exchange OR csv_path OR bars_json. This overloads single tools with multiple data sources. Should split into separate tools or clarify mutual exclusivity in descriptions.