readrba-mcp
This server provides read-only access to public Reserve Bank of Australia (RBA) economic data via six tools:
Search RBA series (
rba_search_series): Find data series by keyword or list all available series in the built-in catalogue.Search RBA tables (
rba_search_tables): Search statistical table listings (with a "readable" flag), optionally refreshing from the RBA website.Get RBA series data (
rba_get_series): Download actual values for one or more series IDs (e.g.,GCPIAG) with current, historical, or both vintages and optional date filtering.Get RBA table data (
rba_get_table): Retrieve entire statistical tables (e.g.,G1) by table number, with the same vintage and date-range options.Get RBA forecasts (
rba_get_forecasts): Access the latest or full historical public forecasts, filterable by series name and publication/observation dates.Get RBA cash rate (
rba_get_cash_rate): Obtain the cash rate target, interbank overnight rate, or both, with optional date range.
All tools support pagination (offset/max_rows) and return structured JSON responses with metadata (total_rows, returned_rows, has_more, truncated), ISO date formatting (YYYY-MM-DD), and null for missing values.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@readrba-mcpWhat is the current RBA cash rate?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Rscriptavailable.R packages:
pacman,readrba,jsonlite,dplyr,tibble, andpurrr.
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 buildRun the server directly:
npm startIt 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 |
| Optional |
| Optional |
| Required |
| Required |
|
|
|
|
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 executable |
|
| Directory for RBA spreadsheet downloads and R temporary files |
|
| 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.jsSee 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.jsUse --scope user or --scope project if required. See
Claude Code MCP setup.
Other stdio clients
Configure:
command:
nodearguments:
/path/to/readrba-mcp/dist/index.jsenvironment: set
RSCRIPT_PATHifRscriptis not onPATH
The process must receive MCP JSON-RPC on stdin and have exclusive use of stdout.
Development and tests
npm testThis 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:offlineRun live RBA smoke tests:
READRBA_LIVE_TEST=1 \
TEST_RSCRIPT_PATH=/path/to/Rscript \
npm run test:liveThe 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 toolsrba_get_cash_rateGet RBA cash rateBRead-onlyIdempotent
Get the cash-rate target, interbank overnight cash rate, or both.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | target | |
| offset | No | Number of filtered and sorted rows to skip. | |
| end_date | No | Inclusive observation end date. | |
| max_rows | No | Maximum rows to return. There is no server-side ceiling. | |
| start_date | No | Inclusive observation start date. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| offset | Yes | |
| has_more | Yes | |
| max_rows | Yes | |
| truncated | Yes | |
| total_rows | Yes | |
| returned_rows | Yes |
rba_get_forecastsGet RBA forecastsARead-onlyIdempotent
Get the latest or all public RBA forecasts, with optional series and date filters.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | latest | |
| offset | No | Number of filtered and sorted rows to skip. | |
| series | No | Forecast series names to retain, such as gdp_change. | |
| refresh | No | Download the current RBA forecast archive. | |
| max_rows | No | Maximum rows to return. There is no server-side ceiling. | |
| remove_old | No | Remove observations more than 180 days before their forecast date. | |
| forecast_end_date | No | Inclusive forecast publication end date. | |
| forecast_start_date | No | Inclusive forecast publication start date. | |
| observation_end_date | No | Inclusive forecast observation end date. | |
| observation_start_date | No | Inclusive forecast observation start date. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| offset | Yes | |
| has_more | Yes | |
| max_rows | Yes | |
| truncated | Yes | |
| total_rows | Yes | |
| returned_rows | Yes |
rba_get_seriesGet RBA seriesARead-onlyIdempotent
Download exact RBA series IDs for current, historical, or both table vintages.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of filtered and sorted rows to skip. | |
| vintage | No | current | |
| end_date | No | Inclusive observation end date. | |
| max_rows | No | Maximum rows to return. There is no server-side ceiling. | |
| series_ids | Yes | One or more exact RBA series identifiers, such as GCPIAG. | |
| start_date | No | Inclusive observation start date. | |
| update_urls | No | Refresh the RBA table URL list before downloading. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| offset | Yes | |
| has_more | Yes | |
| max_rows | Yes | |
| truncated | Yes | |
| total_rows | Yes | |
| returned_rows | Yes |
rba_get_tableGet RBA tablesARead-onlyIdempotent
Download one or more RBA statistical tables for current, historical, or both vintages.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of filtered and sorted rows to skip. | |
| vintage | No | current | |
| end_date | No | Inclusive observation end date. | |
| max_rows | No | Maximum rows to return. There is no server-side ceiling. | |
| start_date | No | Inclusive observation start date. | |
| update_urls | No | Refresh the RBA table URL list before downloading. | |
| table_numbers | Yes | One or more exact RBA table numbers, such as G1. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| offset | Yes | |
| has_more | Yes | |
| max_rows | Yes | |
| truncated | Yes | |
| total_rows | Yes | |
| returned_rows | Yes |
rba_search_seriesSearch RBA seriesARead-onlyIdempotent
Search readrba's built-in RBA series catalogue. An omitted query returns all series.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Word or phrase to search for. Omit to return all series. | |
| offset | No | Number of filtered and sorted rows to skip. | |
| max_rows | No | Maximum rows to return. There is no server-side ceiling. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| offset | Yes | |
| has_more | Yes | |
| max_rows | Yes | |
| truncated | Yes | |
| total_rows | Yes | |
| returned_rows | Yes |
rba_search_tablesSearch RBA tablesARead-onlyIdempotent
Search the RBA table catalogue, including readrba's readable flag. Refresh is off by default.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Word or phrase to search for. Omit to return all tables. | |
| offset | No | Number of filtered and sorted rows to skip. | |
| refresh | No | Scrape the RBA website instead of using readrba's internal list. | |
| max_rows | No | Maximum rows to return. There is no server-side ceiling. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| offset | Yes | |
| has_more | Yes | |
| max_rows | Yes | |
| truncated | Yes | |
| total_rows | Yes | |
| returned_rows | Yes |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
rba_get_cash_rate - First observed
rba_get_forecasts - First observed
rba_get_series - First observed
rba_get_table - First observed
rba_search_series - First observed
rba_search_tables
TDQS
Scored across 6 tools
Each tool targets a distinct resource or operation: series vs tables, search vs get, forecasts, cash rate. No overlapping purposes.
All tools follow the consistent pattern rba_<verb>_<noun> (e.g., rba_search_series, rba_get_forecasts), with no deviations.
6 tools is well-scoped for an RBA data retrieval server, covering search, download, and specific data points without excess or deficiency.
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
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
An MCP server for Georgian public data, read from the organizations that publish it.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn 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-
- AlicenseAqualityAmaintenanceMCP 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).1489 PyPI5MIT
- FlicenseAqualityDmaintenanceA 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.32-
- AlicenseAqualityFmaintenanceCited 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.2832 npm2MIT