Skip to main content
Glama
vtlk

Individual TradingView Backtest Assistant

by vtlk
README.md
# Backtesting engine for your AI Agent with PineScript support for TradingView usage

---

![TV PineScript Backtest MCP](./describe.png)

---

![Beta](https://img.shields.io/badge/status-Beta-ff9800)
![Supports](https://img.shields.io/badge/supports-Binance%20Futures-1f6feb)
![Limits](https://img.shields.io/badge/limits-1440%20candles-orange)

Production-ready MCP server for running TradingView Pine Script strategy backtests (Binance data) from AI agents.

<p align="left">
  <a href="#quick-overview">Overview</a> •
  <a href="#connect-to-your-agent">Connect</a> •
  <a href="#supported-agents">Supported Agents</a> •
  <a href="#troubleshooting">Troubleshooting</a> •
  <a href="https://backtest-engine-mcp.click/dashboard" target="_blank" rel="noopener noreferrer">Get API Key</a> •
  <a href="https://backtest-engine-mcp.click/" target="_blank" rel="noopener noreferrer">Website</a>
</p>

## Quick Overview

`tv-pinescript-backtest-mcp` exposes a remote MCP endpoint so agents can:

- run strategy backtests by symbol/timeframe/date range,
- pass strategy inputs programmatically,
- receive structured backtest results (trades, win rate, profit, drawdown),
- keep long-running runs observable via progress notifications,
- support Binance Futures tickers only,
- enforce a maximum of 1440 candles per backtest,
- apply a rate limit of 3 backtests per minute per user,
- ask your agent to write a strategy and backtest it.

## Connect To Your Agent

Get API key: <a href="https://backtest-engine-mcp.click/dashboard" target="_blank" rel="noopener noreferrer">https://backtest-engine-mcp.click/dashboard</a>

You need:

1. Your MCP server URL (`https://backtest-engine-mcp.click/mcp/backtest`)
2. Your API key (Bearer token)

Use HTTP transport and pass the API key in `Authorization: Bearer <API_KEY>`.

## Supported Agents

### Claude Code

CLI:

```bash
claude mcp add --transport http tvmcp https://backtest-engine-mcp.click/mcp/backtest --header "Authorization: Bearer <API_KEY>"
```

Project file (`.mcp.json`):

```json
{
  "mcpServers": {
    "tvmcp": {
      "type": "http",
      "url": "https://backtest-engine-mcp.click/mcp/backtest",
      "headers": {
        "Authorization": "Bearer <API_KEY>"
      }
    }
  }
}
```

### OpenCode

`opencode.json`:

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tvmcp": {
      "type": "remote",
      "url": "https://backtest-engine-mcp.click/mcp/backtest",
      "oauth": false,
      "headers": {
        "Authorization": "Bearer <API_KEY>"
      }
    }
  }
}
```

### Cursor

Add to `.cursor/mcp.json` (or `~/.cursor/mcp.json` globally):

```json
{
  "mcpServers": {
    "tvmcp": {
      "url": "https://backtest-engine-mcp.click/mcp/backtest",
      "headers": {
        "Authorization": "Bearer <API_KEY>"
      }
    }
  }
}
```

Note: the same MCP configuration is used by `cursor-agent` CLI.

### Codex

Add to `~/.codex/config.toml` (or `.codex/config.toml` in a trusted project):

```toml
[mcp_servers.tvmcp]
url = "https://backtest-engine-mcp.click/mcp/backtest"
http_headers = { Authorization = "Bearer <API_KEY>" }
```

Note: Codex CLI and IDE extension share the same `config.toml`.

### VS Code

Open MCP configuration (`.vscode/mcp.json` or user `mcp.json`) and add:

```json
{
  "servers": {
    "tvmcp": {
      "type": "http",
      "url": "https://backtest-engine-mcp.click/mcp/backtest",
      "headers": {
        "Authorization": "Bearer <API_KEY>"
      }
    }
  }
}
```

If needed, use Command Palette: `MCP: Open User Configuration`.

## Minimal Test Prompt

Try these prompts with your agent:

```text
Optimize my strategy: <pinescript code>
```

```text
Optimize my strategy from file: sma20.pine
```

```text
Find a strategy on the internet and backtest it using the tvmcp backtest tool.
```

```text
Backtest my strategy on BTCUSDT 1h from 2026-03-01 to 2026-03-10, Pine code:
//@version...
```

## Troubleshooting

The backtest-engine server has been tested on 30 strategies and tuned to match TradingView backtests 1:1 as closely as possible. Some operators may still be unsupported.

If you hit this case, please create a minimal strategy that reproduces the issue and submit it in Issues. We will do our best to add support quickly.