readrba-mcp

readrba-mcp

A local MCP server for public Reserve Bank of Australia data, exposing six read-only tools backed by the R package readrba.

Category
Visit Server

README

readrba-mcp

readrba-mcp is a local Model Context 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. It does not provide an HTTP service or a guaranteed response cache.

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.

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": "C:\\Program Files\\R\\R-4.5.3\\bin\\x64\\Rscript.exe"
      }
    }
  }
}

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": "/mnt/c/Program Files/R/R-4.5.3/bin/x64/Rscript.exe"
      }
    }
  }
}

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.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured