Skip to main content

apra-mcp

mcp-name: io.ausdata/apra-mcp

PyPI Python License Tests CodeQL Glama MCP server quality

MCP server for Australian Prudential Regulation Authority statistics. Plain-English access to per-bank capital ratios, fund-by-fund superannuation, and post-AASB17 life + general insurance — every prudentially-regulated entity in Australia, every quarter, from a single uvx command.

Hosted access? For cross-source queries, webhooks, an always-on REST API, and a uniform response envelope across all 9 sources, see ausdata.io — free tier available (500 calls/mo, no card).

"What's CBA's CET1 ratio?"
"Which super fund has the most members?"
"Top 10 banks by total capital, latest quarter"
"Gross written premium for the general insurance industry, post-AASB17"
"Largest life insurance product groups by claims"

Sister to abs-mcp, rba-mcp, ato-mcp, and au-weather-mcp.


Install

uvx --upgrade apra-mcp

Claude Desktop

{
  "mcpServers": {
    "apra": { "command": "uvx", "args": ["--upgrade", "apra-mcp"] }
  }
}

Claude Code

claude mcp add apra --command uvx --args -- --upgrade apra-mcp

What it exposes

Six tools, all plain-English in, structured out:

Tool Purpose
search_datasets Fuzzy-search the curated catalog by keyword
describe_dataset List a dataset's filterable dimensions and returnable measures
get_data Query with filters, measures, period range, output format
latest Last observation per measure (shortcut)
top_n Rank rows by a measure, return top (or bottom) N
list_curated Enumerate the curated dataset IDs

Every response is the same shape — dataset_id, dataset_name, query, period, unit, row_count, records, apra_url, download_url, framework (insurance only), attribution, stale flag, server_version — across every curated dataset.


Curated datasets (7 in v0.1)

ID What it is Period
ADI_KEY_STATS Per-bank CET1 / Tier 1 / Total capital + RWA latest quarter snapshot
ADI_RISK_WEIGHTED_ASSETS Per-bank RWA by risk type (credit / operational / market / IRRBB) latest quarter snapshot
SUPER_FUND_LEVEL Fund-by-fund members, benefits, demographics latest quarter snapshot
INSURANCE_GENERAL Long-format general insurance (post-AASB17, ~24k rows × 10 quarters) Sep 2023 → latest
INSURANCE_GENERAL_HISTORICAL General insurance archive (pre-AASB17) Dec 2002 → Jun 2023
LIFE_INSURANCE Long-format life insurance (post-AASB17, ~10k rows × 10 quarters) Sep 2023 → latest
LIFE_INSURANCE_HISTORICAL Life insurance archive (pre-AASB17) Jun 2008 → Jun 2023

Snapshot vs time-series. ADI and Super datasets ship the most recent reporting quarter only (APRA refreshes the file each quarter). The four insurance datasets are long time series in a single file. Pass start_period / end_period as ISO dates (2025-12-31), bare years (2024), year-months (2025-06), or quarter shorthand (2025-Q4) — all normalised internally.

Cross-source compatibility. The state_territory filter on INSURANCE_GENERAL accepts canonical state codes ("NSW"), full names ("New South Wales"), case-insensitive variants ("nsw"), ISO 3166-2 ("AU-NSW"), and 4-digit postcodes ("2000" → New South Wales). Powered by aus-identity — the same input format works across abs-mcp, ato-mcp, apra-mcp, aihw-mcp, and asic-mcp.


Reliability — 3-tier URL resolution

APRA publishes XLSX at date-versioned paths that change every quarter. apra-mcp resolves them through three tiers:

  1. Live scrape — fetch the canonical APRA landing page (with ETag conditional-GET so refreshes between releases cost zero bytes), regex-extract the .xlsx href matching the dataset's filename pattern, pick the latest-dated match. Cached 6h.
  2. Bundled seed manifest — when the live scrape fails, fall back to data/seed_urls.json shipped in the wheel. CI refreshes the manifest daily. The response is flagged stale: true with an honest reason.
  3. YAML default — last-resort URL from the curated YAML.

Net effect: a fresh uvx apra-mcp always gets the current quarter; a 3-month-old install still works because the seed manifest is refreshed and --upgrade pulls a new wheel.


Framework break (insurance only)

APRA changed the reporting framework on 1 July 2023 (AASB 17 Insurance Contracts + capital framework revision). Pre- and post-break data are not directly comparable — APRA's own guidance is explicit. apra-mcp ships paired datasets:

  • INSURANCE_GENERAL (post-AASB17) + INSURANCE_GENERAL_HISTORICAL (pre-AASB17)
  • LIFE_INSURANCE (post-AASB17) + LIFE_INSURANCE_HISTORICAL (pre-AASB17)

Every response on an insurance dataset includes a framework block surfacing the break + a historical_dataset cross-reference, so agents see the warning before splicing series.


Attribution

Data sourced from the Australian Prudential Regulation Authority. Licensed under Creative Commons Attribution 3.0 Australia (CC BY 3.0 AU). apra-mcp is MIT-licensed; APRA's data carries the upstream CC-BY 3.0 AU licence, echoed in every response's attribution field.


Sister MCPs (Australian Public Data portfolio)

Want all 9 sources behind one REST API? The hosted gateway at ausdata.io adds cross-source joins, full history, webhooks, and HMAC-signed responses on top of these MCPs — free tier (500 calls/mo, no card).

  • abs-mcp — Australian Bureau of Statistics (CPI, unemployment, ERP, building approvals)
  • rba-mcp — Reserve Bank of Australia (cash rate, lending stats, exchange rates)
  • ato-mcp — Australian Taxation Office (tax stats, ACNC charities)
  • apra-mcp — this one. Banks, super, insurance.
  • aihw-mcp — Australian Institute of Health and Welfare
  • asic-mcp — Australian Securities and Investments Commission (company registers)
  • aemo-mcp — Australian Energy Market Operator (NEM dispatch, spot prices, generation)
  • au-weather-mcp — Open-Meteo (Bureau of Meteorology aggregator)
  • wgea-mcp — Workplace Gender Equality Agency
  • aus-identity — Postcode / state / ABN normalisation helper used by all sisters

Development

git clone https://github.com/Bigred97/apra-mcp.git
cd apra-mcp
uv venv
uv pip install -e ".[dev]"
pytest                  # unit tests
pytest -m live          # integration tests against apra.gov.au

Issues and contributions welcome: github.com/Bigred97/apra-mcp/issues.

Release files for apra-mcp 0.8.27

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for apra-mcp 0.8.27
File Size Uploaded
apra_mcp-0.8.27.tar.gz 1.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for apra-mcp 0.8.27
File Interpreter ABI Platform
apra_mcp-0.8.27-py3-none-any.whl Python 3 none any Details

Total release size: 1.9 MB

Release files / apra_mcp-0.8.27.tar.gz

Download URL apra_mcp-0.8.27.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
d22e9477ebb84591aa1f381c2e3370a3f0ba7a79958084149a415911b6f01c23
BLAKE2b-256 checksum
How to use checksums
b56f7924df68f58d1426e4f91531a58ccbaa44b26da7bab6c1a68842b688c6e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 15, 2026.

Transparency log

Release files / apra_mcp-0.8.27-py3-none-any.whl

Download URL apra_mcp-0.8.27-py3-none-any.whl
Size 78.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2f0ded9f8bb99ab77b7f536ba2287dc914e8e91d2d5f9dd37e1b568c6a65b34a
BLAKE2b-256 checksum
How to use checksums
fb4d54ba4ea745ab10653edd949b6adc1f7f00d0e5e6e92f04e4dbbaffceb0fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.8.27 This release

2 release files

0.8.25

2 release files

0.8.24

2 release files

0.8.22

2 release files

0.8.21

2 release files

0.8.20

2 release files

0.8.19

2 release files

0.8.18

2 release files

0.8.17

2 release files

0.8.16

2 release files

0.8.15

2 release files

0.8.14

2 release files

0.8.13

2 release files

0.8.12

2 release files

0.8.11

2 release files

0.8.10

2 release files

0.8.9

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page