Skip to main content
Glama
fxabsolute-mcp

fxabsolute-mcp

by varsansri

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

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

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

{
  "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

git clone https://github.com/varsansri/fxabsolute-mcp && cd fxabsolute-mcp
npm install
npm run smoke                # every tool against real data, ~30 checks
node test/proto.mjs          # stdio protocol round-trip
claude mcp add fxabsolute -- node "$PWD/src/index.js"

Related MCP server: FinClaw

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

Tool

What it answers

fxa_instruments

What's available, how many bars, what fields exist

fxa_candles

Raw OHLC over a date range at any timeframe M1–W1

fxa_session_scan

Specific bars of a trading session across months, summarised

fxa_bucket_stats

Movement grouped by hour / weekday / month / year

fxa_level_touches

Whether a price level actually held, and the reaction it produced

Live chart bridge

Tool

Purpose

fxa_connect_chart

Pair with an open chart using the code in its AI tab

fxa_wait_for_message

Block until the trader types or speaks; returns their words + chart state

fxa_reply

Answer into their chart panel

fxa_set_thinking

Show the thinking indicator during a long lookup

fxa_disconnect_chart

Leave 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:

{ "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.

Available Tools

10 tools
fxa_bucket_statsA

Group every bar in a window by hour of day, day of week, month or year, and report how much each bucket moves. Answers "which hour is actually worth trading" and "is Monday different" in one call. Ranked by average bar range, since volume is not available.

Inputs: instrument (required), to, from, groupBy, +2 more.

fxa_candlesA

Fetch OHLC candles for an instrument over a date range, at any timeframe from M1 to W1. Higher timeframes are aggregated from M1 on true clock boundaries. Returns the most recent bars when the range exceeds the limit.

Inputs: instrument (required), to, from, limit, +1 more.

fxa_connect_chartA

Pair with a trader's open FXAbsolute chart using the code shown in the AI tab of the backtester. Once connected, the trader can type or speak to you and you answer in their chart panel. Call this when the user gives you a pairing code, e.g. "connect to fxabsolute with code AB3K9P".

Inputs: code (required), agentName.

fxa_disconnect_chartA

Leave the paired chart session.

Inputs: no named parameters.

fxa_instrumentsA

List every instrument FXAbsolute has candle data for, with bar counts and pip size. Call this first if you are unsure what is available. Also states plainly which fields exist — notably, this dataset has no volume.

Inputs: no named parameters.

fxa_level_touchesA

Test whether a price level actually held. Finds every time price reached the level, de-duplicates clustered touches, and measures the reaction that followed. This is the numeric version of asking whether a horizontal line on the chart is respected.

Inputs: price (required), instrument (required), to, from, +4 more.

fxa_replyA

Send your answer back to the trader's chart panel. Keep it short and concrete — it renders in a narrow side panel next to the chart, not a terminal.

Inputs: text (required).

fxa_session_scanA

Pull specific bars out of a trading session across a whole date range, and summarise them. Example: the first 5-minute candle of the New York session every day for six months (instrument SPX500, session nyse, timeframe M5, bars [1]). Session windows are evaluated in exchange-local time with daylight saving handled, so results do not shift by an hour in summer. Use this instead of pulling raw candles and filtering them yourself.

Inputs: instrument (required), to, bars, from, +4 more.

fxa_set_thinkingA

Show or hide the thinking indicator in the trader's panel. Call with on:true before a long lookup so they know you are working. fxa_reply clears it automatically.

Inputs: on (required).

fxa_wait_for_messageA

Wait for the trader's next message on the paired chart. Blocks until they send something or the timeout expires. Returns their text plus a structured snapshot of the chart at the moment they asked — read that instead of asking them to describe what they are looking at. Returns waiting:false when nothing arrived, in which case call it again to keep listening.

Inputs: timeoutSec.

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 10 tools

    Disambiguation5/5

    Each tool serves a distinct purpose: data retrieval (instruments, candles), analysis (session_scan, bucket_stats, level_touches), and chart communication (connect, disconnect, wait_for_message, reply, set_thinking). No two tools overlap; even candles and session_scan are explicitly differentiated, with session_scan described as a higher-level alternative to manual filtering.

    Naming Consistency4/5

    All tool names share the fxa_ prefix and use snake_case, providing clear brand consistency. However, data tools are named as noun phrases (instruments, candles, bucket_stats), while interaction tools use verb phrases (connect_chart, reply), which is a minor inconsistency but still predictable by function.

    Tool Count5/5

    With 10 tools, the server is well-scoped for its stated purpose of FX data analysis and chart interaction. The count is within the ideal 3-15 range, and each tool contributes a meaningful capability without unnecessary bloat.

    Completeness5/5

    The tool set covers the full workflow of a trader using FXAbsolute: discovering available instruments, fetching OHLC data, performing session-based and time-based analysis, testing price levels, and communicating through a paired chart. There are no obvious gaps for the intended use case, as all necessary read and interaction operations are present.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server that provides AI agents with financial tools including real-time quotes, backtesting, technical analysis, and multi-exchange data via a simple CLI interface.
      2
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      MCP server that exposes the Backtest360 backtesting engine API as tools, enabling AI agents to conversationally discover indicators, build and validate strategies, run backtests, and read results.
      14
      43 PyPI
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      A local-first MCP server that bridges AI coding agents with MetaTrader 5 for inspection, market data, MQL5 development, compiling, Strategy Tester review, workspace sync, logs, audit trails, demo trading, and carefully gated live trading.
      MIT