Skip to main content
Glama

A complete trading chart for the web. Candlesticks to Renko, 134 indicators, 73 drawing tools, live feeds and orders on the chart, on Canvas 2D or WebGL, with no third-party dependencies. Use the full ChartWidget, or build your own interface on the headless Chart, in TypeScript, React, Vue or Svelte.

Highlights

  • 18 chart types, 134 indicators, 73 drawing tools, indicators on indicators, alerts on lines, undo and redo.

  • Trading on the chart: positions with live P&L, orders and stops you drag, a paper broker or your own.

  • Live data from Binance, Bybit, Coinbase, Kraken and Upbit, or your own feed in about twenty lines.

  • Fast: a million bars panned at 60 fps with WebGL; a live tick in about a microsecond; ten minutes of 30,000 trades a second on a million bars with no memory growth (soak).

  • A workspace: grids of charts, layouts, bar replay, backtesting.

  • Yours to shape: themes, five looks, 133 switches, plugins; 30 languages; phones and apps.

Related MCP server: navigation-agent-mcp

Quick start

npm install @tradecanvas/chart
import { ChartWidget } from '@tradecanvas/chart/widget'
import { BinanceAdapter } from '@tradecanvas/chart'

new ChartWidget(document.getElementById('chart')!, {
  symbol: 'BTCUSDT',
  timeframe: '5m',
  theme: 'dark',
  adapter: new BinanceAdapter(), // live data, no API key
  trading: true,
})

The headless Chart takes your own bars (chart.setData(bars)) and leaves the interface to you. A source of your own is a DataFeed of two methods (getBars, subscribeBars), given as feed wherever an adapter goes; one feed serves any number of charts. For React, Vue and Svelte, @tradecanvas/react, /vue and /svelte wrap it in a component with the same props.

Documentation

Getting started · API · Indicators · Drawing tools · Realtime · Trading · Styling · Frameworks · Plugins · Phones and apps · Performance

The docs are in English, Tiếng Việt, 简体中文, 日本語, 한국어 and Español. Measurements, limits and how it is tested are on the system audit.

AI coding tools

The agent skill in skills/tradecanvas teaches coding agents the API, with examples that CI type-checks. In Claude Code:

/plugin marketplace add bonguynvan/tradecanvas
/plugin install tradecanvas@tradecanvas

Other agents (Cursor, Codex, Copilot and more): npx skills add bonguynvan/tradecanvas. Without a skill, llms.txt and llms-full.txt give an assistant the docs in one file. Changing TradeCanvas itself with an agent? AGENTS.md holds the repo's rules.

The MCP server @tradecanvas/mcp looks up indicators, drawing tools, options, feature switches and style keys in the library's own catalog, and checks an options object before it is used (set it up in other clients):

claude mcp add tradecanvas -- npx -y @tradecanvas/mcp

On Windows outside WSL: claude mcp add tradecanvas -- cmd /c npx -y @tradecanvas/mcp. In Git Bash, which runs the ! commands of Claude Code on Windows, write //c: Git Bash turns /c into a path.

More

MIT

Available Tools

7 tools
get_indicatorGet an indicatorA
Read-onlyIdempotent

One built-in indicator in full: its default params (what addIndicator takes), its inputs, its lines (the keys getIndicatorOutput returns per bar, which are often not the indicator id: RSI's line is value), its levels, and code that adds it and reads it. Takes the id, the short name or the full name.

Inputs: id (required).

list_drawing_toolsList drawing toolsA
Read-onlyIdempotent

Lists the built-in drawing tools: the type that chart.addDrawing and chart.setDrawingTool take, the number of points (anchors) each needs, how the pointer draws it, and the options it offers. Search by words of the type or name ("fib", "channel").

Inputs: query.

list_indicatorsList built-in indicatorsA
Read-onlyIdempotent

Lists the built-in indicators with their ids, names and where they draw (overlay: on the price pane; panel: in a pane of their own). Search by words of the id or name ("moving average", "bollinger"). Use the id with chart.addIndicator(id, params); get_indicator has the params and line keys.

Inputs: query, placement.

list_optionsList the options of an entry pointA
Read-onlyIdempotent

Lists the options that new ChartWidget(el, options), new Chart(el, options) or new ChartWidgetGrid(el, options) take: each name, its TypeScript type, its doc, and the values it allows where it allows only some. Search by words of the name or doc.

Inputs: target (required), query.

list_style_keysList chart style keysA
Read-onlyIdempotent

Lists the style keys of the chart's look and the kind of value each takes (color, boolean, lineStyle: 'solid' | 'dashed' | 'dotted', width: pixels up to 20). They go in Chart's overrides option or chart.applyOverrides({...}). Narrow by a prefix such as 'grid.' or 'series.candlestick.'.

Inputs: prefix.

list_widget_featuresList ChartWidget feature switchesA
Read-onlyIdempotent

Lists the names ChartWidget's features option takes (every switch is on unless set false). A name without a dot turns a whole capability off ('alerts', 'hotkeys'); a dotted name, one place ('toolbar.screenshot', 'menu.chart.settings'). Narrow by a prefix.

Inputs: prefix.

validate_optionsCheck an options objectA
Read-onlyIdempotent

Checks an options object before it goes to new ChartWidget, new Chart or new ChartWidgetGrid: unknown option names (with the one likely meant, and where an option of another entry point belongs), values outside the allowed ones, numbers given as strings, intervals, feature switch names, style override keys and values, and languages, nested options included. Write functions and adapters as strings; they pass.

Inputs: target (required), options (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool targets a clearly distinct resource or action: indicator discovery has separate list and get tools, while drawing tools, constructor options, widget features, style keys, and option validation each cover a different area. The descriptions explicitly distinguish the option-related tools, so an agent can tell them apart.

    Naming Consistency5/5

    All tool names follow a consistent snake_case verb_noun pattern: list_indicators, get_indicator, list_drawing_tools, list_options, list_widget_features, list_style_keys, validate_options. The single get_ tool is the standard counterpart to its list_ tool.

    Tool Count5/5

    Seven tools is well-scoped for a chart-library discovery and validation server. Each tool earns its place by covering a distinct lookup or validation need without bloating the surface.

    Completeness4/5

    The set covers the main discovery workflows: indicators, drawing tools, constructor options, widget features, style keys, and option validation. Minor gaps exist, such as no dedicated get_drawing_tool detail tool and no validator for indicator params or drawing-tool options, but agents can largely work around these using the list tools.

    Maintenance

    ActivityActive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      A read-only MCP server that provides LLMs with introspection data and documentation for the Freqtrade codebase. It enables AI tools to access class signatures, method details, and configuration schemas to assist in writing more reliable trading strategies.
      13
      19 PyPI
      18
      GPL 3.0
    • F
      license
      Not graded
      quality
      D
      maintenance
      A minimal MCP server providing a normalized API for code navigation and repository inspection through tools like symbol searching and call tracing. It enables AI agents to perform structured analysis of codebases by mapping endpoints, inspecting file trees, and tracing symbol relationships.
      3
      -
    • A
      license
      A
      quality
      D
      maintenance
      A type-safe MCP server that enables AI agents to control TradingView Desktop via Chrome DevTools Protocol, allowing chart state reading, symbol/timeframe changes, and OHLCV data fetching.
      11
      93 npm
      1
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      MCP server that indexes your codebase's public API at startup and serves it via compact tool responses, saving tokens vs reading source files.
      5
      33 PyPI
      21
      MIT