Skip to main content
Glama

readrba-mcp

readrba-mcp is a local Matt Cowgill Protocol (MCP) server for public Reserve Bank of Australia data. It exposes six read-only tools backed by the R package readrba.

This repository is a prototype and has not been tested extensively!!! Use with Caution!!!

How it works

The TypeScript server handles MCP schemas, validation, timeouts, and stdio. Each tool call starts one R process. The R worker loads the required packages, runs one readrba request, and returns one JSON result.

R and package diagnostics go to stderr. Stdout is reserved for MCP JSON-RPC.

Related MCP server: AusEcon MCP for ABS | RBA | APRA data

Requirements

  • Node.js 20 or later.

  • R with Rscript available.

  • R packages: pacman, readrba, jsonlite, dplyr, tibble, and purrr.

Install the R packages once:

install.packages(
  c("pacman", "readrba", "jsonlite", "dplyr", "tibble", "purrr")
)

Then install and build the server:

git clone https://github.com/dominic-behrens/readrba-mcp.git
cd readrba-mcp
npm install
npm run build

Run the server directly:

npm start

It will wait for an MCP client on stdin.

Tools

Every tool accepts offset, which defaults to 0, and max_rows, which defaults to 1000. offset must be a non-negative integer. max_rows must be a positive integer and has no configured ceiling.

Tool

Main arguments

rba_search_series

Optional query

rba_search_tables

Optional query; refresh = false

rba_get_series

Required series_ids; vintage = current; optional inclusive start_date, end_date; update_urls = false

rba_get_table

Required table_numbers; the same vintage, date, and URL options

rba_get_forecasts

scope = latest; refresh = true; remove_old = true; optional series, forecast_start_date, forecast_end_date, observation_start_date, and observation_end_date

rba_get_cash_rate

type = target; optional inclusive start_date and end_date

vintage accepts current, historical, or both. type accepts target, interbank, or both.

For a both table or series request, overlapping observations are retained. The response includes rba_vintage; the server does not deduplicate the two sources.

Results and errors

Filters and deterministic sorting are applied before pagination. Successful tools return the same object as JSON text and as MCP structured content:

{
  "data": [],
  "total_rows": 0,
  "returned_rows": 0,
  "offset": 0,
  "max_rows": 1000,
  "has_more": false,
  "truncated": false
}

has_more reports whether later rows remain. truncated is true when the response does not contain every matching row, including when offset skips earlier rows.

Dates are serialized as YYYY-MM-DD. Missing R values are JSON null. Validation, R, download, timeout, worker, and unknown-series failures are returned as MCP tool errors with isError: true.

Configuration

Environment variable

Default

Purpose

RSCRIPT_PATH

Rscript

Rscript executable

READRBA_DOWNLOAD_PATH

~/.readrba-mcp/downloads

Directory for RBA spreadsheet downloads and R temporary files

READRBA_TIMEOUT_MS

180000

Positive worker timeout in milliseconds

On some corporate Windows networks, readrba may also require R_READRBA_DL_METHOD=wininet.

readrba can overwrite downloaded spreadsheets in READRBA_DOWNLOAD_PATH. The directory is outside this repository by default, so raw downloads are not committed. These files are package working files, not a stable or complete response cache.

Client setup

Build the server first. Replace each placeholder path below with a path that is valid in the client’s operating environment.

Windows

Use native Windows paths when the client runs on Windows:

{
  "mcpServers": {
    "readrba": {
      "command": "node",
      "args": ["C:\\path\\to\\readrba-mcp\\dist\\index.js"],
      "env": {
        "RSCRIPT_PATH": "\\path\\to\\rscript"
      }
    }
  }
}

WSL

Use WSL paths when Node runs in WSL. A Windows R installation can be called through its mounted path:

{
  "mcpServers": {
    "readrba": {
      "command": "node",
      "args": ["/path/to/readrba-mcp/dist/index.js"],
      "env": {
        "RSCRIPT_PATH": "\\path\\to\\rscript"
      }
    }
  }
}

Alternatively, install R inside WSL and omit RSCRIPT_PATH if Rscript is on PATH.

Codex

The current Codex CLI accepts a stdio command after -- and environment variables through repeated --env options:

codex mcp add \
  --env RSCRIPT_PATH=/path/to/Rscript \
  readrba -- node /path/to/readrba-mcp/dist/index.js

See the Codex MCP documentation for configuration scope and other options.

Claude Code

Claude Code uses the same command separator:

claude mcp add \
  --env RSCRIPT_PATH=/path/to/Rscript \
  readrba -- node /path/to/readrba-mcp/dist/index.js

Use --scope user or --scope project if required. See Claude Code MCP setup.

Other stdio clients

Configure:

  • command: node

  • arguments: /path/to/readrba-mcp/dist/index.js

  • environment: set RSCRIPT_PATH if Rscript is not on PATH

The process must receive MCP JSON-RPC on stdin and have exclusive use of stdout.

Development and tests

npm test

This builds strict TypeScript and exercises the built server through the MCP v2 client over stdio. It checks all six schemas, validation, pagination, structured content, ISO dates, JSON nulls, clean errors, and stderr isolation.

Run the offline R catalogue checks:

TEST_RSCRIPT_PATH=/path/to/Rscript npm run test:r:offline

Run live RBA smoke tests:

READRBA_LIVE_TEST=1 \
TEST_RSCRIPT_PATH=/path/to/Rscript \
npm run test:live

The live tests cover CPI series GCPIAG, both vintages of table A1, latest forecasts, and target, interbank, and combined cash rates.

Attribution

The server architecture is adapted from jonobri/readabs-mcp. RBA data access is provided by MattCowgill/readrba.

This project is not affiliated with the Reserve Bank of Australia.

Licence

MIT. See LICENSE.

Available Tools

6 tools
rba_get_cash_rateGet RBA cash rateB
Read-onlyIdempotent

Get the cash-rate target, interbank overnight cash rate, or both.

NameRequiredDescriptionDefault
typeNotarget
offsetNoNumber of filtered and sorted rows to skip.
end_dateNoInclusive observation end date.
max_rowsNoMaximum rows to return. There is no server-side ceiling.
start_dateNoInclusive observation start date.

Output Schema

NameRequiredDescription
dataYes
offsetYes
has_moreYes
max_rowsYes
truncatedYes
total_rowsYes
returned_rowsYes
rba_get_forecastsGet RBA forecastsA
Read-onlyIdempotent

Get the latest or all public RBA forecasts, with optional series and date filters.

NameRequiredDescriptionDefault
scopeNolatest
offsetNoNumber of filtered and sorted rows to skip.
seriesNoForecast series names to retain, such as gdp_change.
refreshNoDownload the current RBA forecast archive.
max_rowsNoMaximum rows to return. There is no server-side ceiling.
remove_oldNoRemove observations more than 180 days before their forecast date.
forecast_end_dateNoInclusive forecast publication end date.
forecast_start_dateNoInclusive forecast publication start date.
observation_end_dateNoInclusive forecast observation end date.
observation_start_dateNoInclusive forecast observation start date.

Output Schema

NameRequiredDescription
dataYes
offsetYes
has_moreYes
max_rowsYes
truncatedYes
total_rowsYes
returned_rowsYes
rba_get_seriesGet RBA seriesA
Read-onlyIdempotent

Download exact RBA series IDs for current, historical, or both table vintages.

NameRequiredDescriptionDefault
offsetNoNumber of filtered and sorted rows to skip.
vintageNocurrent
end_dateNoInclusive observation end date.
max_rowsNoMaximum rows to return. There is no server-side ceiling.
series_idsYesOne or more exact RBA series identifiers, such as GCPIAG.
start_dateNoInclusive observation start date.
update_urlsNoRefresh the RBA table URL list before downloading.

Output Schema

NameRequiredDescription
dataYes
offsetYes
has_moreYes
max_rowsYes
truncatedYes
total_rowsYes
returned_rowsYes
rba_get_tableGet RBA tablesA
Read-onlyIdempotent

Download one or more RBA statistical tables for current, historical, or both vintages.

NameRequiredDescriptionDefault
offsetNoNumber of filtered and sorted rows to skip.
vintageNocurrent
end_dateNoInclusive observation end date.
max_rowsNoMaximum rows to return. There is no server-side ceiling.
start_dateNoInclusive observation start date.
update_urlsNoRefresh the RBA table URL list before downloading.
table_numbersYesOne or more exact RBA table numbers, such as G1.

Output Schema

NameRequiredDescription
dataYes
offsetYes
has_moreYes
max_rowsYes
truncatedYes
total_rowsYes
returned_rowsYes
rba_search_seriesSearch RBA seriesA
Read-onlyIdempotent

Search readrba's built-in RBA series catalogue. An omitted query returns all series.

NameRequiredDescriptionDefault
queryNoWord or phrase to search for. Omit to return all series.
offsetNoNumber of filtered and sorted rows to skip.
max_rowsNoMaximum rows to return. There is no server-side ceiling.

Output Schema

NameRequiredDescription
dataYes
offsetYes
has_moreYes
max_rowsYes
truncatedYes
total_rowsYes
returned_rowsYes
rba_search_tablesSearch RBA tablesA
Read-onlyIdempotent

Search the RBA table catalogue, including readrba's readable flag. Refresh is off by default.

NameRequiredDescriptionDefault
queryNoWord or phrase to search for. Omit to return all tables.
offsetNoNumber of filtered and sorted rows to skip.
refreshNoScrape the RBA website instead of using readrba's internal list.
max_rowsNoMaximum rows to return. There is no server-side ceiling.

Output Schema

NameRequiredDescription
dataYes
offsetYes
has_moreYes
max_rowsYes
truncatedYes
total_rowsYes
returned_rowsYes

Tool Schema Changelog

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

  1. 6 tool updatesv0.1.0
    • First observedrba_get_cash_rate
    • First observedrba_get_forecasts
    • First observedrba_get_series
    • First observedrba_get_table
    • First observedrba_search_series
    • First observedrba_search_tables

TDQS

A4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource or operation: series vs tables, search vs get, forecasts, cash rate. No overlapping purposes.

Naming Consistency5/5

All tools follow the consistent pattern rba_<verb>_<noun> (e.g., rba_search_series, rba_get_forecasts), with no deviations.

Tool Count5/5

6 tools is well-scoped for an RBA data retrieval server, covering search, download, and specific data points without excess or deficiency.

Completeness5/5

The tool set provides comprehensive read access: searching and fetching series and tables, forecasts, and cash rate, with no obvious gaps for the domain.

Maintenance

ActivityInactive
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes Enable Banking API tools for interacting with bank accounts through Open Banking. It enables users to authenticate sessions, list accounts, and fetch transaction history or balances via a secure self-hosted server.
    2
    -
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for structured Australian macroeconomic and financial data from the Australian Bureau of Statistics (ABS), the Reserve Bank of Australia (RBA), and the Australian Prudential Regulation Authority (APRA).
    14
    89 PyPI
    5
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A local MCP server that gives Claude and other MCP clients access to Federal Reserve Economic Data (FRED) — 800,000+ economic time series covering GDP, inflation, employment, interest rates, and more.
    3
    2
    -
  • A
    license
    A
    quality
    F
    maintenance
    Cited Australian stats via the ausdata.io gateway — stable AU.* series IDs, source_url + retrieved_at on every response. Free tier. Not a data broker; upgrade for Embed / signed / webhooks.
    28
    32 npm
    2
    MIT