Skip to main content

MCP server for Australian Prudential Regulation Authority statistics. Plain-English access to bank capital ratios, superannuation fund-level data, and life + general insurance — every prudentially-regulated entity in Australia, every quarter, with auto-discovery and a CC-BY 3.0 AU attribution contract.

Project description

apra-mcp

tests PyPI Python License: MIT 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.

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


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 packages

  • abs-mcp — ABS census + economic statistics
  • rba-mcp — RBA F-tables (cash rate, FX rates, mortgage rates)
  • ato-mcp — ATO tax statistics + ACNC charities register
  • apra-mcp — this one. Banks, super, insurance.
  • au-weather-mcp — Australian weather

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apra_mcp-0.1.2.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

apra_mcp-0.1.2-py3-none-any.whl (48.5 kB view details)

Uploaded Python 3

File details

Details for the file apra_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: apra_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for apra_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 390aa2f9a8e62281fc98923d4a157576bb27362bbbc28ffc1007eccc967c7322
MD5 8d362e8905e9d5d580142a32ecd989cc
BLAKE2b-256 e034e855b39b1c6fa63a20f3623e73059d5cf827dd24b9b10ee9c6dd318f6014

See more details on using hashes here.

Provenance

The following attestation bundles were made for apra_mcp-0.1.2.tar.gz:

Publisher: publish.yml on Bigred97/apra-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file apra_mcp-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: apra_mcp-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 48.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for apra_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 df8db6ec45eca0c7ac399091ee823f9cea7f4a513c72dd28de6319466d803c3d
MD5 b24d6c86b5c25ab1cd377dc043390da0
BLAKE2b-256 b27a3a91551685a45d7922066f995659aeae2138063a93fcc5e71f283005065e

See more details on using hashes here.

Provenance

The following attestation bundles were made for apra_mcp-0.1.2-py3-none-any.whl:

Publisher: publish.yml on Bigred97/apra-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page