TradingView MCP Server Beta
Back to TradingView

Connect TradingView to your AI assistant

Use TradingView data and analytics inside Claude, ChatGPT and any MCP-compatible client through the official MCP server. Included in Essential and above; trial plans don’t include MCP access.

Server URL

https://mcp.tradingview.com/mcp

One URL for every client. Authentication is OAuth 2.1 — you sign in with your TradingView account, no API keys to manage.

Claude — web, desktop and mobile

Web connectors are available on claude.ai and in the desktop and mobile apps; a connector added once works everywhere you use Claude.

  1. Open Claude → Settings → Connectors
  2. Click “Add custom connector”
  3. Paste the server URL → Add
  4. Authorize with your TradingView account

Claude Code

  1. Add the server in your terminal: claude mcp add --transport http mcp-tradingview https://mcp.tradingview.com/mcp
  2. Run /mcp in Claude Code and authorize with your TradingView account in the browser

ChatGPT and Codex desktop UI

  1. Open ChatGPT → Settings → Plugins → Add → MCPs → Add → Add MCP Server
  2. Set Type to “Streamable HTTP”
  3. Paste https://mcp.tradingview.com/mcp as URL
  4. Hit “Save”
  5. Open Plugins → MCPs
  6. Hit “Authenticate” on the added server
  7. Sign in with your paid TradingView account if prompted
  8. Allow access to the tools

ChatGPT and Codex terminal

  1. Add the server in your terminal: codex mcp add tradingview --url https://mcp.tradingview.com/mcp
  2. Authorize with your TradingView account in the browser
  3. Start a new Codex task and ask it to use TradingView

Grok

  1. Open Grok → Plugins → New Connector → Custom
  2. Paste https://mcp.tradingview.com/mcp as Server URL
  3. Hit “Add Connector”
  4. Sign in with your paid TradingView account if prompted
  5. Allow access to the tools

Perplexity

  1. Open Perplexity → Account settings → Connectors
  2. Click “+ Custom connector” in the top-right corner
  3. Paste https://mcp.tradingview.com/mcp as MCP server URL
  4. Click “Advanced” and set Authentication to OAuth, Transport to Streamable HTTP, Network Access to Public
  5. Hit “Add”. The connector will appear in the Connectors screen in your Account settings.
  6. Click the connector card to start the authentication flow and enable it.
  7. Sign in with your paid TradingView account if prompted
  8. Allow access to the tools

Cursor

  1. Open Cursor → Customize → MCPs
  2. Click “New MCP Server”
  3. Choose “User” to use the server in all projects, or choose a workspace to use it in that project only. Cursor opens mcp.json
  4. Add the server and save the file: "mcpServers": { "tradingview": { "type": "http", "url": "https://mcp.tradingview.com/mcp" } }
  5. Click “Authenticate” next to the added server in the MCP list
  6. Sign in with your paid TradingView account in the browser
  7. Allow access to the tools

Other MCP clients

Any client that supports MCP over streamable HTTP with OAuth 2.1 authorization works: point it at the server URL and complete the sign-in when prompted. A typical JSON configuration:

"mcpServers": { "tradingview": { "type": "http", "url": "https://mcp.tradingview.com/mcp" } }

Tools

TradingView data and platform operations, exposed as MCP tools. Your assistant picks the right tool for the question — you just ask in plain language.

Tool calls are rate-limited to ~100 requests per minute per user.

Watchlists

mcp-watchlist

Watchlists

list_watchlists

Read-only

List the user's watchlists.

No parameters.

get_watchlist

Read-only

Get a watchlist data with its companies by id. Resolves the user's own watchlists and, as a fallback, watchlists shared publicly by other users (the ones opened on the site as /watchlists/{id}/); a shared watchlist of another user is returned with read_only=true and cannot be modified.

  • watchlist_idstringrequired

    Numeric id of the watchlist

get_active_watchlist

Read-only

Get the active watchlist with its companies. If no watchlist is active, the first custom one is activated; if the user has no watchlists at all, a default one is created.

No parameters.

create_watchlist

Write

Create a new watchlist.

  • namestring

    Optional name of the new watchlist (max 500 chars)

  • symbolsstring[]

    Optional initial symbols in EXCHANGE:TICKER format, e.g. NASDAQ:AAPL

delete_watchlist

Write

Delete a watchlist.

  • watchlist_idstringrequired

    Numeric id of the watchlist

add_to_watchlist

Write

Add symbols to a watchlist. A symbol already present in the watchlist is moved to the end.

  • watchlist_idstringrequired

    Numeric id of the watchlist

  • symbolsstring[]required

    Symbols in EXCHANGE:TICKER format, e.g. NASDAQ:AAPL

remove_from_watchlist

Write

Remove companies from a watchlist.

  • watchlist_idstringrequired

    Numeric id of the watchlist

  • symbolsstring[]required

    Symbols in EXCHANGE:TICKER format, e.g. NASDAQ:AAPL

update_watchlist

Write

Update an existing watchlist: change its name and/or description. At least one of name / description must be provided.

  • watchlist_idstringrequired

    Numeric id of the watchlist

  • namestring

    New name of the watchlist (max 500 chars)

  • descriptionstring

    New description text for the watchlist

Market data, research & alerts

tv-mcp

Market data

get_ohlcv

Read-only

Fetch historical OHLCV bars for a symbol at an interval. Returns aggregate summary and (unless summary=true) the raw bars [{t (unix sec UTC), o, h, l, c, v}].

  • symbolstringrequired

    Symbol in EXCHANGE:TICKER format, e.g. NASDAQ:NVDA or BINANCE:BTCUSDT

  • intervalstring

    Bar interval (use M / 1mo / month for monthly)

    Options:1m5m15m30m1h4h1D1WMdefault: 1D
  • countinteger

    Number of bars, max 5000

    default: 300
  • summaryboolean

    If true, omit the raw bars array and return aggregate statistics only

get_economic_data

Read-only

Time series for an economic indicator (e.g. ECONOMICS:USIRYY): [{date, value}] where value is the actual release value, plus unit/scale when available. Tickers are ECONOMICS:<COUNTRY><INDICATOR>; use get_economic_symbols to discover the available countries and indicator codes instead of guessing.

  • symbolstringrequired

    Economic ticker ECONOMICS:<COUNTRY><INDICATOR>, e.g. ECONOMICS:USIRYY

  • date_fromstring

    ISO date, start of the series window (inclusive)

  • date_tostring

    ISO date, end of the series window (inclusive)

get_economic_symbols

Read-only

Catalog of economic tickers accepted by get_economic_data (ECONOMICS:<COUNTRY><INDICATOR>). Without arguments returns a compact overview: indicator categories with counts plus every country code. Pass category or search for indicator codes and names; add country to get ready-to-use tickers.

  • countrystring

    Two-letter country/region code, e.g. US, DE, EU, CN. When set, returns ready-to-use ECONOMICS:* tickers instead of bare indicator codes

  • categorystring

    Return indicators of one category

    Options:gdplbrprcehlthmnytrdgovbsnsscnsmhsetxsenrgclmt
  • searchstring

    Return indicators whose code or name contains this substring (case-insensitive), e.g. inflation

Screener

get_symbol_data

Read-only

Fetch arbitrary TradingView screener columns for one symbol (escape hatch for advanced queries): stocks, ETFs, crypto, forex, futures, indices, bonds and government bond yields. Use get_screener_columns to discover valid column names.

  • symbolstringrequired

    Symbol in EXCHANGE:TICKER format

  • columnsstring[]

    TradingView screener columns to fetch

    default: name description close change change_abs volume market_cap_basic price_earnings_ttm sector industry

run_screener

Read-only

Run the TradingView screener with filters ({field: [min, max]} plus index/sector/industry/analyst_rating), sorting, presets and column selection. Returns rows and totalCount. Use get_screener_columns to discover valid column names for columns and filters.

  • marketstring

    Screener market: america, crypto, forex, futures, bonds, cfd, uk, germany, india, japan, …

    default: america
  • filtersobject

    Filters as {field: [min, max]} (null side = unbounded) plus special keys index / sector / industry / analyst_rating, e.g. {"index": "S&P 500", "pe": [null, 15], "rsi": [null, 40], "div_yield": [2, null]}

  • sort_bystring

    Column to sort by

    default: volume
  • sort_orderstring

    Sort direction

    Options:ascdescdefault: desc
  • limitinteger

    Max rows to return, cap 1000

    default: 100
  • columnsstring[]

    Screener columns to return

  • symbol_typesstring[]

    Instrument types to include, e.g. ["stock"]

  • filter_presetstring

    Named preset

    Options:pullback_with_reversalbreakout_with_volumeoversold_healthyearnings_runuprelative_strengthnew_highs
  • symbolsetstring[]

    Explicit symbol universe, e.g. ["SYML:SP;SPX"]

get_symbol_data_batch

Read-only

Quotes/columns for up to 50 symbols (EXCHANGE:TICKER) in one call; unresolved symbols are reported in `missing` with a reason instead of fabricated zeros. Screener backend errors (429/5xx) are returned as success=false, or as partial=true + warnings when only some markets failed — such symbols are unavailable, not unknown. Use get_screener_columns to discover valid column names.

  • symbolsstring[]required

    Symbols in EXCHANGE:TICKER format, up to 50, deduplicated

  • columnsstring[]

    TradingView screener columns to fetch

    default: name description close change change_abs volume market_cap_basic price_earnings_ttm sector industry

get_screener_columns

Read-only

Catalog of all TradingView screener column names accepted by get_symbol_data, get_symbol_data_batch and run_screener. Without group/search returns a compact overview: groups with column names only. Pass group or search to get descriptions and period/timeframe variants; market narrows the catalog.

  • marketstring

    Filter by screener market

    Options:stocketfcryptobondalldefault: all
  • groupstring

    Return full details (descriptions and period/timeframe variants) for one group, e.g. valuation, technicals, income_statement

  • searchstring

    Return full details for columns whose name or description contains this substring (case-insensitive), e.g. margin

get_technicals_rating

Read-only

Full single-timeframe indicator snapshot: RSI, Stoch K/D, CCI20, ADX, MACD, Momentum, AO, EMA/SMA 10-200, VWMA, HullMA9 plus 3 Recommend aggregates (summary/MA/other).

  • symbolstringrequired

    Symbol in EXCHANGE:TICKER format

  • intervalstring

    Timeframe

    Options:1m5m15m30m1h2h4h1D1W1Mdefault: 1D

News

get_news

Read-only

Latest news headlines for a symbol: id, title, published (unix), provider, urgency (1=top, 2=normal), storyPath, link, permission, relatedSymbols, paywall. Paginated: returns limit (default 25) headlines from offset; response carries total_available and has_more — increase offset to read older headlines (up to 200 total).

  • symbolstringrequired

    Symbol in EXCHANGE:TICKER format

  • langstring

    Language code

    Options:enrudefresptitpltrarhekojavithmsidzh-Hanszh-Hantroen_INdefault: en
  • limitinteger

    Max headlines per call, cap 200

    default: 25
  • offsetinteger

    Skip this many newest headlines; use with limit to page through all available news (see has_more/total_available in the response)

get_news_story

Read-only

Full text of a news story by its id from get_news: ast_description (AST as string), short_description, summary, permission, provider, copyright.

  • idstringrequired

    Story id in urn format from get_news, e.g. urn:newsml:mtnewswires.com:20260810:A123:0

  • langstring

    ISO 639-1 language code

    default: en
  • user_prostatusstring

    Viewer plan status

    Options:pronon_prodefault: non_pro
  • user_countrystring

    ISO country code

Fundamentals & forecasts

get_forecasts

Read-only

Analyst consensus: recommendation + score, buy/hold/sell distribution, price targets with upside_pct, EPS/revenue estimates.

  • symbolstringrequired

    Symbol in EXCHANGE:TICKER format

get_financials

Read-only

Current fundamental snapshot: P/E, P/B, margins, ROE/ROA, TTM revenue/income/EBITDA/FCF and YoY growth. Optional metric subset and reporting period.

  • symbolstringrequired

    Symbol in EXCHANGE:TICKER format

  • metricstring[]

    Optional subset of financial metrics (aliases like pe, roe, revenue, fcf or raw TV columns); omit for the full set

  • periodstring

    Reporting period for metric columns

    Options:fyfqttmfhcurrentdefault: ttm

get_financial_history

Read-only

Quarterly/annual history of fundamentals (revenue, gross profit, operating income, net income, FCF, EPS, EBITDA, total debt) with yoy_pct and period labels.

  • symbolstringrequired

    Symbol in EXCHANGE:TICKER format

  • periodstring

    fq (quarterly) or fy (annual)

    Options:fqfydefault: fq
  • date_fromstring

    ISO date, start of the reporting window

  • date_tostring

    ISO date, end of the reporting window

Documents

get_documents

Read-only

List filings and transcripts (10-K/10-Q/8-K, earnings calls) for a symbol with view ids for get_document_view. Supports category/event filters and historical event-date windows.

  • symbolstringrequired

    Symbol in EXCHANGE:TICKER format

  • categorystring

    Category slug; also accepts 10-K / 10-Q / 8-K aliases

    Options:allannual_reportsquarterly_reportsinterim_reportscompany_eventsinsider_transactionstranscriptspresentationspress_releasesother
  • eventstring

    Event filter

    Options:earningcorporate_event
  • start_datestring

    RFC3339 start of the EVENT-date window (inclusive), historical windows work

  • end_datestring

    RFC3339 end of the EVENT-date window (inclusive)

  • limitinteger

    Max documents to return

    default: 20

get_document_view

Read-only

Text of a specific document view (summary/transcript) by views[].id from get_documents. Never construct view ids manually.

  • view_idstringrequired

    Document view id from get_documents views[].id, verbatim — never construct or edit it

Calendars

get_earnings_calendar

Read-only

Upcoming earnings schedule for a list of symbols: for each symbol only the NEXT scheduled report date plus the single MOST RECENT report date, with consensus EPS/revenue forecasts for the next quarter. Not a history: it holds at most two dates per symbol, and date_from/date_to only filter those two dates (a window covering an older quarter returns an empty list). For past quarters use get_financial_history (reported figures) or get_documents (reports, transcripts).

  • symbolsstring[]required

    Symbols in EXCHANGE:TICKER format

  • date_fromstring

    ISO date YYYY-MM-DD (or RFC3339). Filters the symbol's two known dates (last report / next scheduled report) — does not fetch older quarters; other formats are rejected

    default: today
  • date_tostring

    ISO date YYYY-MM-DD (or RFC3339); other formats are rejected

    default: +180d

get_economic_calendar

Read-only

Macro events (CPI, GDP, rates) filtered by countries, currencies, category and importance. Past windows work (data since 2003-09-01), forward ~31 days.

  • countriesstring

    Comma-separated 2-letter country codes plus regions like EU

    default: US
  • currenciesstring

    Comma-separated ISO currency codes to filter by: USD,JPY,EUR

  • categorystring

    Event category

    Options:gdpbondsbusinessconsumergovermenthealthhousinglabormoneypricestradetaxesdefault: all
  • date_fromstring

    UTC date/time: YYYY-MM-DD or RFC3339. Past works (data since 2003-09-01)

    default: today 00:00
  • date_tostring

    UTC date/time. Forward window ~31 days

    default: today 23:59
  • min_importanceinteger

    Minimum importance: -1 (all), 0 (medium+high), 1 (high only)

    default: -1

get_dividends_calendar

Read-only

Dividend data: ex-dates, amount, yield, payment date. Per-symbol mode via symbols[] or market screening mode via date window.

  • symbolsstring[]

    Per-symbol mode: symbols in EXCHANGE:TICKER format

  • marketstring

    Market screening mode (uses date_from/date_to), e.g. america

  • date_fromstring

    ISO date, screening-mode ex-date window start

    default: now
  • date_tostring

    ISO date, screening-mode ex-date window end

    default: +30d
  • limitinteger

    Max rows in screening mode, cap 200

    default: 50

Alerts

create_alert

Write

Create a TradingView alert with a simple price condition (price + cross/cross_up/cross_down/greater/less). Multi-condition and indicator-based (study) alerts are NOT supported yet and are rejected with an explanatory error. Webhook alerts can't be created through MCP: TradingView requires two-factor authentication to be verified before enabling webhooks, and this check isn't available for MCP connections yet — create the alert without a webhook, or set it up on tradingview.com. Returns the created alert payload with alert_id (persist it for updates/deletion) and status="starting": TradingView starts the alert asynchronously, so the active flag is not returned — verify the actual state via get_alerts or list_alerts.

  • symbolstringrequired

    Symbol in EXCHANGE:TICKER format

  • pricenumber

    Price threshold for a simple price condition

  • conditionstring

    Price condition type

    Options:crosscross_upcross_downgreaterlessdefault: cross
  • conditionsobject[]

    Raw condition payload (overrides price/condition). Only a single price condition with barset/value series is accepted; multi-condition and indicator (study) conditions are not supported yet and are rejected

  • messagestring

    Message shown when the alert fires (max 4000 chars)

  • namestring

    Alert name (max 300 chars)

  • resolutionstring

    Chart resolution the alert is evaluated on: 1, 60 (hour), 1D, …

    default: 1
  • expirationstring

    ISO expiration time

    default: now+30d
  • auto_deactivateboolean

    Deactivate the alert after the first fire

    default: false
  • emailboolean

    Send email on fire

    default: false
  • mobile_pushboolean

    Send mobile push on fire

    default: true
  • popupboolean

    Show popup on fire

    default: true

update_alert

Write

Update settings of an existing alert (message, name, expiration, notifications) and restart it. Conditions/symbol/timeframe can NOT be changed — delete and create instead. Alerts with a webhook can't be updated through MCP (TradingView requires two-factor authentication to be verified for webhooks, which isn't available for MCP connections yet) — edit those on tradingview.com. Returns the updated payload with status="starting": the restart is asynchronous, so the active flag is not returned — verify the actual state via get_alerts or list_alerts.

  • alert_idintegerrequired

    Alert id returned by create_alert / list_alerts

  • messagestring

    New message; omit to keep current

  • namestring

    New name; omit to keep current

  • expirationstring

    New ISO expiration; empty string removes expiration (premium); omit to keep current

  • auto_deactivateboolean

    New auto-deactivate flag; omit to keep current

  • emailboolean

    New email flag; omit to keep current

  • mobile_pushboolean

    New mobile push flag; omit to keep current

  • popupboolean

    New popup flag; omit to keep current

delete_alert

Write

Delete alerts by ids (their fire history is deleted too).

  • alert_idsinteger[]required

    Alert ids

stop_alerts

Write

Pause alerts without deleting: id, history and settings are preserved.

  • alert_idsinteger[]required

    Alert ids

restart_alerts

Write

Resume paused alerts without recreating them.

  • alert_idsinteger[]required

    Alert ids

list_alerts

Read-only

List all user alerts (active + inactive) in normalized form: alert_id, name, symbol, active, condition_type, threshold, resolution, timestamps.

  • symbolstring

    Filter by symbol in EXCHANGE:TICKER format

  • activeboolean

    Filter by active state

get_alerts

Read-only

Full payload of specific alerts by id including raw conditions — required before recreating an alert copy with changed conditions. The message and webhook URL fields are filtered out (has_webhook flag is returned instead).

  • alert_idsinteger[]required

    Alert ids

get_alerts_log

Read-only

Alert fire history: when each alert fired, with symbol, message and webhook delivery status.

  • daysinteger

    Look-back window in days

    default: 7
  • symbolstring

    Filter by symbol in EXCHANGE:TICKER format

  • limitinteger

    Max events to return, cap 2000

    default: 100

The toolset is in beta and expands over time — ask your assistant to list the available TradingView tools to see the current set.

Read-only  tools never modify the account;  Write  tools create, change or delete user data.