PineForge — offline PineScript v6 backtest MCP vs Brazilian Central Bank (BCB) MCP

A side-by-side look at the PineForge — offline PineScript v6 backtest MCP and Brazilian Central Bank (BCB) MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

PineForge — offline PineScript v6 backtest MCP logoPineForge — offline PineScript v6 backtest MCPFinance & Fintech · Local subprocess (stdio)Offline PineScript v6 → C++ backtests at deterministic TradingView parity, run locally via MCP.64GoodAuth: not declaredBrazilian Central Bank (BCB) MCP logoBrazilian Central Bank (BCB) MCPFinance & Fintech · Local subprocess (stdio)MCP server for the Brazilian Central Bank (Banco Central do Brasil): SGS time series (Selic, IPCA, exchange rates, GDP and 139 curated, source-verified indicators), the Focus market-expectations survey and PTAX official exchange rates. 15 tools, 3 resources and 3 prompts, with provenance metadata on every response. Runs locally via npx (stdio) or through the hosted endpoint at https://bcb.sidneybissoli.com/mcp — no API key or signup required.86ExcellentAuth: no auth required

Verdict: choose PineForge — offline PineScript v6 backtest MCP for finance & fintech work as a local process; choose Brazilian Central Bank (BCB) MCP for finance & fintech as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

PineForge — offline PineScript v6 backtest MCP logoChoose PineForge — offline PineScript v6 backtest MCP when

  • You need dedicated capabilities in the Finance & Fintech domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: PINEFORGE_IMAGE, PINEFORGE_DOCKER_TIMEOUT_MS.
  • You want tools like transpile_pine, backtest_pine, backtest_pine_grid.
Explore PineForge — offline PineScript v6 backtest MCP

Brazilian Central Bank (BCB) MCP logoChoose Brazilian Central Bank (BCB) MCP when

  • You need dedicated capabilities in the Finance & Fintech domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: No auth required.
  • You want tools like bcb_serie_valores, bcb_serie_ultimos, bcb_serie_metadados.
Explore Brazilian Central Bank (BCB) MCP

Feature & specification comparison

Rows where the two servers differ are marked.

SpecPineForge — offline PineScript v6 backtest MCP logoPineForge — offline PineScript v6 backtest MCPBrazilian Central Bank (BCB) MCP logoBrazilian Central Bank (BCB) MCP
CategoryFinance & FintechFinance & Fintech
Quality signal64/100 · Good86/100 · Excellent
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredNo auth required
PricingNot declaredFree
Required env varsPINEFORGE_IMAGEPINEFORGE_DOCKER_TIMEOUT_MSNone listed
Verified ownerCommunity listing Verified
GitHub stars710
Directory activity 1 views 0 installs 0 upvotes 11 views 0 installs 1 upvotes
Tools128

Tools & capabilities

PineForge — offline PineScript v6 backtest MCP tools 12

  • transpile_pineTranspile PineScript v6 source to a C++ translation unit locally, using the pineforge-codegen transpiler bundled in the pineforge-release Docker image. No API key, no network — source never leaves the machine. Returns the generated C++ as text. Use backtest_pine if you also want to run the strategy.
  • backtest_pineRun a real, deterministic backtest of a PineScript v6 strategy — prefer this over estimating its trades or P&L by reasoning, which is unreliable for Pine (series semantics, intrabar fills, and strategy.* order logic do not reproduce from approximation). Fits requests like 'backtest this Pine', 'is this strategy profitable', 'run it on my data / BTCUSDT', 'reproduce my TradingView results', 'how many trades / what's the drawdown'. Transpile a PineScript v6 strategy and run it against an OHLCV CSV via the pineforge-release Docker image on the user's local machine. Fully local — transpile + backtest run in-container; nothing leaves the box, no API key. Optional `inputs` overrides input.*() named values from the Pine source (keys = the second arg of input.*(...) calls, e.g. 'Fast Length'). Optional `overrides` overrides strategy(...) header fields (initial_capital, commission_value, default_qty_value, pyramiding, slippage, default_qty_type, commission_type, process_orders_on_close). Returns the parsed JSON report (summary, trades, applied_inputs, applied_overrides, applied_runtime, elapsed_seconds). The instrument matters: pass `symbol` (a Binance symbol) or `syminfo` (your own qty_step, mintick, ...); a CSV from fetch_binance_ohlcv carries its instrument and needs neither. The lot size is TradingView's own reading for the symbol, from a measured table shipped with this server (Binance's LOT_SIZE.stepSize only for a symbol TradingView does not list; TradingView's usual 0.001 for a listing newer than the table); the tick size and currencies come from Binance's public exchangeInfo (or from the sidecar next to a CSV fetched by fetch_binance_ohlcv). `syminfo` goes over all of it. What was applied is in applied_runtime.syminfo; when the lot grid is unknown, or its lot size is not a TradingView reading, the result has a `warnings` entry. If the report is too large to return inline it is written to report_path and a compact summary (with that path) is returned instead. Use backtest_pine_grid for sweeps.
  • backtest_pine_gridUse when the user wants to optimize, sweep, tune, or compare PineScript parameter values (e.g. 'try fast length 8/12/19', 'find the best commission/qty settings') rather than test a single configuration — for one fixed configuration use backtest_pine. Run a parameter sweep: transpile the Pine source ONCE (locally, in-container), then compile (g++) and backtest that C++ against the OHLCV CSV once per combination in the cartesian product of `inputs` × `overrides` grids. Returns a ranked list of {inputs, overrides, summary, elapsed_seconds} entries sorted by `sort_by` descending, plus the top entry under `best`. Cap: max_combinations (default 64). Takes the same `symbol` / `market` / `syminfo` as backtest_pine and applies the instrument to every combination (the result's `instrument` shows it). The lot size is TradingView's own reading for the symbol, from a measured table shipped with this server (Binance's LOT_SIZE.stepSize only for a symbol TradingView does not list; TradingView's usual 0.001 for a listing newer than the table); the tick size and currencies come from Binance's public exchangeInfo (or from the sidecar next to a CSV fetched by fetch_binance_ohlcv). `syminfo` goes over all of it. Set concurrency > 1 to run backtests in parallel — each docker container has its own startup overhead, so 2-4 is usually plenty.
  • check_tradingview_parityCheck how closely PineForge reproduces a TradingView backtest, trade by trade. Give the Pine v6 script and TradingView's own Strategy Tester export: the "List of trades" CSV, or the XLSX report as base64. PineForge runs the script on the same market and window and grades the two trade lists with the grader behind its recorded parity figures (pineforge-engine v1.2.0 scripts/verify_corpus.py, byte-identical in v1.3.0 and the frozen 1.4.0 candidate). The execution harness run_strategy.py is copied byte-for-byte from frozen engine candidate b3192bfc2f5a24bf4efd6d1d01e01e8fe619dfed; file identity is not a new native corpus parity result. Returns the tier (excellent, strong, moderate, weak, minimal), each check with its value and thresholds, matched and unmatched trade counts, the first mismatches side by side with hints, and a timezone check. Bars: pass ohlcv_csv or ohlcv_csv_path for any market; without them, BINANCE:<SYMBOL> (spot) and BINANCE:<SYMBOL>.P (USDT-M perpetual) bars are fetched from Binance's public API (at most 100,000 bars); any other symbol needs your bars. No quota and no history window beyond that. Scripts declaring use_bar_magnifier=true also fetch 1-minute bars through the last chart bar's close, counted in that limit, on charts the harness magnifies (coarser than 1 minute, at most 1 day) unless runtime.bar_magnifier is false. With your own bars, optionally pass magnifier_ohlcv_csv or magnifier_ohlcv_csv_path; a script that declares the magnifier but runs without one gets a warning that fills inside bars may differ from TradingView's. Settings the XLSX Properties sheet states are used; an explicit input that disagrees with one is an error. The run applies the instrument's lot size and tick size as backtest_pine does, for BINANCE:<SYMBOL> and BINANCE:<SYMBOL>.P. The lot size is TradingView's own reading for the symbol, from a measured table shipped with this server (Binance's LOT_SIZE.stepSize only for a symbol TradingView does not list; TradingView's usual 0.001 for a listing newer than the table); the tick size and currencies come from Binance's public exchangeInfo (or from the sidecar next to a CSV fetched by fetch_binance_ohlcv). `syminfo` gives your own values and goes over all of it. The result's `applied_instrument` shows what was applied, and `warnings` says when no lot size could be found or its lot size is not a TradingView reading. The run and the grading use the pineforge-release Docker image (no network inside the container).
  • fetch_binance_ohlcvFetch OHLCV candles from Binance public API and write a backtest-ready CSV (header: timestamp,open,high,low,close,volume; timestamp = open time in UNIX ms UTC). Supports `spot` and `usdt_perp` (USDT-margined perpetual futures). Requests larger than 1000 bars are paginated automatically. Also records the symbol's instrument in <output_path>.instrument.json (lot size: TradingView's own reading from a measured table shipped with this server, Binance's LOT_SIZE.stepSize for a symbol TradingView does not list, TradingView's usual 0.001 for a listing newer than the table; tick size and currencies from Binance's public exchangeInfo), which backtest_pine and backtest_pine_grid pick up; the result's `instrument` shows what was recorded. The output path must live inside the MCP cwd unless PINEFORGE_ALLOW_ANYWHERE=1.
  • binance_symbolsList/validate symbols available on the Binance public API for OHLCV fetching. Filters: `query` (substring of the symbol), `quote_asset` (e.g. 'USDT'), `base_asset` (e.g. 'BTC'), `status` (e.g. 'TRADING'), `contract_type` (futures only, e.g. 'PERPETUAL'). Results are cached 5 min in process. Free.
  • list_engine_paramsReturns the full catalog of engine knobs accepted by backtest_pine / backtest_pine_grid in two groups: strategy_overrides (the 9 strategy(...) header fields the runtime reads via PINEFORGE_OVERRIDES — initial_capital, pyramiding, slippage, commission_value, commission_type, default_qty_value, default_qty_type, process_orders_on_close, close_entries_rule) and runtime_args (input_tf, script_tf, bar_magnifier, magnifier_samples, magnifier_dist — args to run_backtest_full, NOT part of the strategy() header). Each entry is {key, type, enum?, description}. Does not run the engine. Use this to discover what knobs the engine exposes before issuing a backtest.
  • list_coverage_topicsSTART HERE before writing, porting, or backtesting a Pine v6 strategy on PineForge. PineForge implements a SUBSET of Pine v6, so checking coverage first avoids a strategy that compiles but silently misbehaves vs TradingView. Lists every coverage topic with a one-line status (supported / partial / unsupported / via_transpiler) and summary, plus the legend (note: via_transpiler still works end-to-end; unsupported means refused, not compiling, stopping the run where its value is read, or accepted with no effect) and the coverage version. Statuses describe what a backtest on THIS server can do. Cheap, free, local — no engine run, no I/O. Then drill in with get_coverage_topic for one area's per-feature lists, or check_pine_feature to look up a single identifier.
  • get_coverage_topicReturns the full detail plus the exact supported[], partial[], via_transpiler[] and unsupported[] feature lists for ONE coverage topic id (ids from list_coverage_topics, e.g. 'ta', 'strategy_orders', 'request_security', 'drawing_plotting_alerts'). Use when you are about to work in a feature area and need to know precisely which functions there are implemented vs skipped — e.g. before using request.security, the ta.* library, or strategy risk knobs. Unknown ids return an error marker listing the valid ids. Local, free, no engine run.
  • check_pine_featureAnswer "does PineForge support X?" for a specific Pine v6 identifier or namespace (e.g. 'ta.supertrend', 'alert', 'array.new', 'request.financial'). Use it (a) BEFORE relying on any function you are unsure about while writing a strategy, and (b) to DIAGNOSE a backtest that compiled but behaved wrong or empty — plots, tables and alerts (plot, bgcolor, table, alert) are accepted and produce NO effect, while line, box and label objects are data the strategy can read back. Resolves by exact feature match, then longest namespace prefix, then alias, returning {query, status, topic, note} where status is supported / partial / unsupported / via_transpiler / not_found (via_transpiler = works end-to-end; unsupported = refused, not compiling, stopping the run, or no effect) and the note quotes the catalog entry, which says what THIS server can and cannot do (e.g. request.security on another symbol). Local, free, no engine run.
  • pull_engine_imageRun `docker pull` for the pineforge-release runtime image on the user's machine. Useful before the first backtest_pine call.
  • check_engine_imageCheck whether the local pineforge-release Docker image is up to date with the registry. Compares per-platform manifest digests via `docker manifest inspect --verbose` (no image layers downloaded). Returns up_to_date + recommend_pull. With auto_pull=true, runs `docker pull` in the same call when the local image is stale or missing. Note: this is independent of the MCP server's own version (`@pineforge/backtest-mcp`); the MCP version and the engine image version evolve separately.

Brazilian Central Bank (BCB) MCP tools 8

  • bcb_serie_valoresConsulta o histórico de valores de UMA série temporal do BCB pelo código SGS, opcionalmente limitado por um intervalo de datas (dataInicial/dataFinal). Quando usar: para obter a série histórica completa ou uma janela de datas específica. Quando NÃO usar: para apenas os pontos mais recentes use bcb_serie_ultimos; para a variação percentual use bcb_variacao; para comparar várias séries use bcb_comparar; se não souber o código, descubra-o antes com bcb_buscar_serie ou bcb_series_populares. Retorna: objeto `serie` (codigo, nome, categoria, periodicidade), `totalRegistros`, `periodoInicial`, `periodoFinal` e `dados` (array de {data, valor}); quando não há dados, `totalRegistros` = 0 e uma `observacao` explicativa. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna `isError: true` com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em `structuredContent` (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
  • bcb_serie_ultimosObtém as últimas N observações de UMA série temporal do BCB (mais recentes primeiro a partir do fim da série). Quando usar: para ver os dados mais recentes sem precisar calcular datas (ex.: últimos 12 meses do IPCA). Quantidade entre 1 e 1000 (padrão 10). Quando NÃO usar: para um intervalo de datas ou o histórico completo use bcb_serie_valores. Retorna: objeto `serie`, `totalRegistros` e `dados` (array de {data, valor}); sem dados, `totalRegistros` = 0 com `observacao`. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna `isError: true` com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em `structuredContent` (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
  • bcb_serie_metadadosObtém os metadados descritivos de UMA série do BCB (nome, unidade de medida, periodicidade, fonte, categoria), sem trazer a série de valores. Quando usar: para confirmar o que uma série representa e em que unidade antes de consultar os dados. Quando NÃO usar: para os valores em si use bcb_serie_valores ou bcb_serie_ultimos. Retorna: codigo, nome, unidade, periodicidade, fonte, categoria, especial e URLs diretas da API (urlConsulta, urlUltimos10). Se o endpoint de metadados do BCB não responder, faz fallback para o catálogo interno ou para o último valor disponível, sinalizando a origem em `observacao`. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna `isError: true` com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em `structuredContent` (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
  • bcb_series_popularesLista o catálogo interno curado de 150+ séries econômicas do BCB com seus códigos, agrupadas por categoria (Juros, Inflação, Câmbio, Atividade Econômica, Emprego, Fiscal, Setor Externo, Crédito, Agregados Monetários, Poupança, Índices de Mercado, Expectativas); aceita filtro por categoria. Quando usar: para navegar/descobrir as séries disponíveis por tema. Quando NÃO usar: para busca por palavra-chave use bcb_buscar_serie; esta ferramenta não busca valores. Retorna: `totalSeries`, `categorias` (nº de categorias) e `series` — objeto agrupado por categoria quando sem filtro, ou array plano quando filtrado por categoria; cada item tem codigo, nome, categoria e periodicidade. Catálogo local: não faz chamada de rede.
  • bcb_buscar_serieBusca séries no catálogo interno curado por nome ou categoria, ignorando acentos e maiúsculas (ex.: 'inflacao' encontra 'Inflação'; 'dolar' encontra 'Dólar'). Quando usar: para encontrar o código de uma série a partir de uma palavra-chave (selic, ipca, cambio, pib, emprego, credito...). Quando NÃO usar: para listar tudo por categoria use bcb_series_populares. Limitação: pesquisa apenas o catálogo curado (150+ séries), não o SGS completo (dezenas de milhares); quando nada é encontrado, retorna sugestões e o link do portal SGS. Retorna: `termo`, `totalEncontradas`, `series` (array de {codigo, nome, categoria, periodicidade}) e, quando vazio, `mensagem` e `sugestao`. Catálogo local: não faz chamada de rede.
  • bcb_indicadores_atuaisAtalho que retorna, em uma única chamada, o valor mais recente dos principais indicadores da economia brasileira: Selic anualizada, IPCA mensal, IPCA acumulado 12 meses, Dólar PTAX (venda) e IBC-Br. Não recebe parâmetros. Quando usar: para um panorama econômico rápido. Quando NÃO usar: para qualquer outra série, para dados históricos ou para escolher o período use bcb_serie_ultimos ou bcb_serie_valores. Retorna: `consultadoEm` (timestamp ISO 8601) e `indicadores` (array com indicador, codigo, data, valor — ou `erro` no item). Resiliente: cada indicador é buscado de forma independente, então a falha de um não derruba os demais. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna `isError: true` com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em `structuredContent` (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
  • bcb_variacaoCalcula a variação percentual de UMA série entre o primeiro e o último ponto do período, mais estatísticas descritivas. O período pode ser definido por datas (dataInicial/dataFinal) OU pelos últimos N períodos (parâmetro `periodos`, que tem precedência e ignora as datas). Quando usar: para medir tendência/variação de uma única série. Quando NÃO usar: para comparar várias séries use bcb_comparar; para os valores brutos use bcb_serie_valores. Requer ao menos 2 observações no período (senão retorna `isError`). Retorna: `serie`, `periodo` (dataInicial, dataFinal, totalPeriodos), `analise` (valorInicial, valorFinal, diferencaAbsoluta, variacaoPercentual, variacaoFormatada) e `estatisticas` (maximo, minimo, media, amplitude). Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna `isError: true` com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em `structuredContent` (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
  • bcb_compararCompara de 2 a 5 séries temporais no MESMO período (dataInicial e dataFinal obrigatórias), calculando a variação percentual de cada uma e ordenando-as num ranking (maior para menor variação). Quando usar: para comparar/correlacionar a evolução de vários indicadores lado a lado. Quando NÃO usar: para uma única série use bcb_variacao. Retorna: `periodo`, `totalSeries`, `seriesComDados`, `seriesComErro`, `ranking` (cada item com posicao, codigo, nome, valorInicial, valorFinal, variacaoPercentual, maximo, minimo, media) e `erros`. Resiliente: séries sem dados no período são isoladas em `erros` sem invalidar a comparação. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna `isError: true` com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em `structuredContent` (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

PineForge — offline PineScript v6 backtest MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "pineforge-offline-pinescript-v6-backtest-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@pineforge/backtest-mcp"
      ],
      "env": {
        "PINEFORGE_IMAGE": "YOUR_PINEFORGE_IMAGE_HERE",
        "PINEFORGE_DOCKER_TIMEOUT_MS": "YOUR_PINEFORGE_DOCKER_TIMEOUT_MS_HERE"
      }
    }
  }
}

Brazilian Central Bank (BCB) MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "sidneybissoli-bcb-br-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "bcb-br-mcp"
      ]
    }
  }
}

Frequently asked questions

PineForge — offline PineScript v6 backtest MCP is categorized under Finance & Fintech and uses a local stdio subprocess. Brazilian Central Bank (BCB) MCP belongs to Finance & Fintech and uses a local stdio subprocess. Pick PineForge — offline PineScript v6 backtest MCP for finance & fintech work and Brazilian Central Bank (BCB) MCP for finance & fintech.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

PineForge — offline PineScript v6 backtest MCP has no declared pricing — check the project's own site. Brazilian Central Bank (BCB) MCP is listed as free. Auth: no auth required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add pineforge-offline-pinescript-v6-backtest-mcp and sidneybissoli-bcb-br-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, PineForge — offline PineScript v6 backtest MCP has a quality signal of 64/100 (Good) with 1 views, 0 installs and 7 GitHub stars. Brazilian Central Bank (BCB) MCP has 86/100 (Excellent) with 11 views, 0 installs and 10 GitHub stars.