Fxabsolute

io.github.varsansriPublished by GitHub account varsansriv0.1.0Updated Oct 24, 2026

Five years of 1-minute forex, index and crypto candles, plus a live bridge to a trader's chart.

VerifiedSTDIODesktop onlyFinanceData & Analytics

Overview

AI-generated overview

Local MCP server that gives an assistant numeric forex, index and crypto candle history from FXAbsolute, plus a live bridge to a trader's chart.

What you can do
List available instruments, bar counts and fields, and fetch raw OHLC candles over a date range at timeframes from M1 to W1. Scan specific bars of a trading session across months and summarise them, with coverage warnings for missing weekdays. Group movement statistics by hour, weekday, month or year, and check whether a price level held and how price reacted. Pair with an open FXAbsolute chart via a six-character code, wait for the trader's messages, reply into the chart panel, show a thinking indicator and disconnect.
When to use it
Useful when an assistant needs exact price numbers for backtesting or session analysis instead of reading chart screenshots, or when a trader wants an agent answering questions inside a live FXAbsolute chart session.
Requirements
Runs locally over stdio, typically via npx with the fxabsolute-mcp package; Node.js is needed. No API key or account. Data is fetched from the FXAbsolute site by default and cached under the user's cache directory, about 38 MB per instrument, so network access is needed on first use. Optional environment variables FXA_DATA_DIR and FXA_ORIGIN change the data source.
Before you install
The live bridge connects to a Supabase Realtime channel using a publishable key from the site's config, so chart snapshots, drawings, open trades and performance are shared over that channel. The assistant can post replies into the trader's chart panel. Replay position is sent with a note not to reveal future bars, which depends on the agent complying. Data coverage can be incomplete, for example missing weekdays for some instruments.

Installation

In SourceWeft

  1. Open Fxabsolute in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

fxabsolute-mcp

Connects a coding agent directly to FXAbsolute's candle history over MCP.

The point is to stop the model looking at pictures of charts. A screenshot forces it to recover prices from pixels; these tools hand it the numbers, so "what does the New York open actually do" becomes a query instead of a guess.

Setup

Nothing to install and no API key. The server fetches what it needs and caches it.

Claude Code

bash
claude mcp add fxabsolute -- npx -y fxabsolute-mcp

Cursor, Windsurf, Claude Desktop, or anything reading a config file

json
{  "mcpServers": {    "fxabsolute": { "command": "npx", "args": ["-y", "fxabsolute-mcp"] }  }}

Verify with claude mcp list, or just ask your agent "what instruments does fxabsolute have?" — it should answer with fifteen, and tell you volume is not available.

Working on the server itself

bash
git clone https://github.com/varsansri/fxabsolute-mcp && cd fxabsolute-mcpnpm installnpm run smoke                # every tool against real data, ~30 checksnode test/proto.mjs          # stdio protocol round-tripclaude mcp add fxabsolute -- node "$PWD/src/index.js"

Where the data comes from

In order:

  1. FXA_DATA_DIR — an explicit directory of .bin files
  2. ../public/data — automatic when running inside the checkout
  3. FXA_ORIGIN (default https://www.fxabsolute.com) — fetched once per instrument and cached under ~/.cache/fxabsolute-mcp, so it works from any machine

~38 MB per instrument, downloaded lazily and only once.

Tools

ToolWhat it answers
fxa_instrumentsWhat's available, how many bars, what fields exist
fxa_candlesRaw OHLC over a date range at any timeframe M1–W1
fxa_session_scanSpecific bars of a trading session across months, summarised
fxa_bucket_statsMovement grouped by hour / weekday / month / year
fxa_level_touchesWhether a price level actually held, and the reaction it produced

Live chart bridge

ToolPurpose
fxa_connect_chartPair with an open chart using the code in its AI tab
fxa_wait_for_messageBlock until the trader types or speaks; returns their words + chart state
fxa_replyAnswer into their chart panel
fxa_set_thinkingShow the thinking indicator during a long lookup
fxa_disconnect_chartLeave the session

A trader opens the backtester, switches to the AI tab, and reads out the six-character code. Their agent calls fxa_connect_chart, then loops on fxa_wait_for_message → answer → fxa_reply. The site holds no API key and pays for no inference — every trader brings their own agent.

Each message carries a snapshot of the chart: instrument, timeframe, replay position, the current candle, every drawing as real geometry (height in pips, bars spanned, slope per bar, fib levels, whether price sits inside a box), open trades and running performance. The agent reads numbers, so it can check a claim with fxa_session_scan instead of guessing from an image.

Transport is a Supabase Realtime broadcast channel, so the browser and the agent need not be on the same machine — a chart on a phone pairs with a terminal on a laptop. Credentials come from /bridge-config.json on the site, which carries only the publishable key already present in every visitor's browser bundle, so pairing needs no setup.

The replay position is included with a note telling the agent not to reveal bars the trader has not reached. Backtesting is worthless if the assistant spoils the future.

The motivating query — the first 5-minute candle of the New York session, every day, for six months — is one call:

json
{ "instrument": "SPX500", "session": "nyse", "timeframe": "M5",  "bars": [1], "from": "2024-01-01", "to": "2024-07-01" }

Two things worth knowing

There is no volume. The binary format is 20 bytes per candle: uint32 timestamp plus four float32 OHLC values. Volume was never stored, so no tool reports it and none invents a proxy silently — rangePips is offered instead, and every relevant response says so. Adding real volume means re-fetching all ~543 MB from Dukascopy into a wider record format.

Timeframes are bucketed on wall-clock time, not by array index. The browser chart aggregates every N bars, which is right for bar-by-bar replay but drifts for analysis: forex data has weekend and holiday gaps, so the Nth group of 60 M1 bars stops lining up with a real clock hour and an "H1 candle" can straddle a weekend. Here, bars are bucketed on floor(ts / period), so every bar sits on a true boundary and gaps produce no bar rather than a synthetic one.

Session windows are evaluated in exchange-local time with daylight saving resolved to the second, so "the 09:30 bar" is the 09:30 bar in both January and July rather than drifting an hour each spring.

fxa_session_scan also reports coverage: how many weekdays in the window produced no data at all. This matters more than it sounds — SPX500 is missing about 19% of weekdays in the first half of 2024, and without the warning a scan over that period returns clean-looking statistics built on a fifth less data than you asked for.

Source: README.md at commit 01c2c61

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts