australian-law-mcp
This server provides tools to search, read, and verify Australian Commonwealth legislation from the official Federal Register of Legislation, including point-in-time versions and citation checking.
search_law: Find acts and instruments by name.
get_law_text: Read current legislation text (table of provisions, a single section, or full text).
get_law_as_at: Read legislation as it stood on any past date.
verify_citations: Check statute citations against the register (existence, in-force status, section existence).
get_amendment_status: Check whether an act is in force, its compilation status, and what has amended it.
compare_versions: Compare an act between two dates to see added/removed/reworded sections or diff a specific section.
search_full_text: Search across the body text of all legislation.
check_frl_health: Ping the register API to verify its availability.
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., "@australian-law-mcp What did the Fair Work Act 2009 say about unfair dismissal in 2015?"
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.
australian-law-mcp
MCP server for the Federal Register of Legislation. Ask what Australian law said on any date, and check citations against the official register before you rely on them. No API key, nothing to sign up for.
Everything is served live from the Commonwealth's own legislation API:
130,000+ acts and legislative instruments, every compilation of each one, back
to 1901. That register is the authorised source of Commonwealth law, and it
publishes point-in-time versions natively — so get_law_as_at returns the
text that was actually in force on the date you name, not a reconstruction.
Quick start
Claude Code:
claude mcp add australian-law -- npx -y australian-law-mcpClaude Desktop, Cursor, or any other stdio MCP client:
{
"mcpServers": {
"australian-law": {
"command": "npx",
"args": ["-y", "australian-law-mcp"]
}
}
}Requires Node 20 or newer. Nothing else to install — npx fetches
the package on first run.
There is a Dockerfile if you would rather not have Node on the host. The
server speaks stdio, so the container needs -i:
docker build -t australian-law-mcp .
docker run -i --rm australian-law-mcpRelated MCP server: au-eli-mcp
Tools
tool | what it does |
| Find acts and instruments by name. Returns the title ids the other tools take. |
| The current compilation: the table of provisions, one section, or the full text paginated. Schedules are addressable too ( |
| The same, but as the law stood on any past date. |
| Pull statute citations out of text and check each against the register: does the act exist, is it in force, does the cited section exist. Upstream failures come back as UNVERIFIED, never as a missing law. |
| In force or repealed, what the latest compilation incorporates, whether commenced amendments are still unincorporated, and what has amended it. |
| What changed between two dates: sections added, removed, reworded — or a line diff of one section. |
| Relevance-ranked search over the body text of every title on the register. |
| Ping the register API so failures elsewhere can be attributed. |
docs/tools.md has the parameters and a worked example of each, including what every tool does when it cannot answer.
Why point-in-time matters
Tax disputes, visa decisions, contracts and court matters turn on the law as it stood on a past day, and models reliably answer with today's law instead. The register keeps every compilation with exact in-force windows:
get_law_as_at titleId=C2004A03348 date=2017-01-05 section=3A
→ As at 2017-01-05: Income Tax Rates Act 1986, Compilation No. 48
s 3A Working holiday makers and working holiday taxable income ...And verify_citations is the guard rail for the other direction — models
inventing sections that were never enacted:
verify_citations text="See s 3A and s 999 of the Income Tax Rates Act 1986."
→ [OK] Income Tax Rates Act 1986 [C2004A03348] — in force.
[OK] s 3A exists: "Working holiday makers and working holiday taxable income"
[NOT FOUND] s 999 — Provision 999 was not found in this compilation. It has
28 sections and 6 schedules. Closest by number: s 30, s 29, s 28A real law reported missing is the worst failure a tool like this can have, so network and API errors are always reported as UNVERIFIED rather than NOT FOUND, and a section is only checked against an act when the citation actually binds the two together.
The same rule governs the text itself. The register has published in three different formats since 1901, and the oldest of them — as-made scans of acts from the federation era — carries no structural markup at all, only the numbering in the prose. Those are read from their own numbering, and the result is accepted only when the section numbers it recovers run in order from section 1. When they do not, the tool says the compilation could not be read rather than reporting an act with no sections or filing one section's words under another's number.
Scope
Commonwealth legislation only, by design. State registers either have no open API (Vic), sit behind bot challenges (NSW), or require registration (Qld). Case law databases (AustLII, Jade) do not permit automated access, so there is no case-law tool. ATO rulings are not machine-accessible. If any of that changes, the scope can grow.
Data source and licence
Legislative content comes from the Federal Register of Legislation API and is licensed CC BY 4.0 by the Commonwealth of Australia; every response that reproduces register content carries the register's required attribution. This project is independent: not affiliated with or endorsed by the Office of Parliamentary Counsel or the Australian Government. Output is legal information, not legal advice — the authorised version of any law is the one published on the register.
Code is MIT.
Development
npm install
npm test # build + unit tests (offline)
node scripts/smoke.mjs # live API smoke test
node scripts/protocol-test.mjs # stdio round trip against the live APIAvailable Tools
8 toolscheck_frl_healthCheck the register APIARead-only
Pings the Federal Register of Legislation API and reports latency, so failures elsewhere can be attributed.
Inputs: no named parameters.
compare_versionsCompare an act between two datesARead-only
Shows what changed in an act between two dates: which sections were added, removed or reworded. Give a section number for a line-by-line diff of that provision.
Inputs: dateA (required), dateB (required), titleId (required), page, +1 more.
get_amendment_statusAmendment status of an actARead-only
Reports whether a title is in force, what its latest compilation incorporates, whether commenced amendments are still unincorporated, and which acts have amended it.
Inputs: titleId (required).
get_law_as_atRead an act as it stood on a dateARead-only
Returns the compilation of a Commonwealth act that was in force on the given date — the register keeps every historical version. Same output shape as get_law_text.
Inputs: date (required), titleId (required), full, page, +1 more.
get_law_textRead the current text of an actARead-only
Returns the latest compilation of a Commonwealth act or instrument. Without a section number it lists the table of sections; with one it returns that provision. Set full=true for the whole text, paginated.
Inputs: titleId (required), full, page, section.
search_full_textFull-text search across all legislationARead-only
Searches the body text of every act and instrument on the register for a phrase, ranked by relevance. Slower and broader than search_law.
Inputs: phrase (required), limit, match.
search_lawSearch Australian legislation by nameARead-only
Finds Commonwealth acts and legislative instruments on the Federal Register of Legislation by title. Returns title ids for the other tools. Falls back to full-text matching when nothing matches by name.
Inputs: query (required), limit.
verify_citationsCheck statute citations against the registerARead-only
Extracts Australian statute citations from text and checks each against the Federal Register of Legislation: does the act exist, is it still in force, does the cited section exist in the current compilation. Use before presenting legal citations to a user. An upstream failure is reported as UNVERIFIED, never as a missing law.
Inputs: text (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Most tools have clearly distinct purposes. The only mild ambiguity is between get_law_text and get_law_as_at, but the descriptions make the current-versus-historical distinction explicit. search_law and search_full_text are also separable by title-search versus full-text-search.
All tool names follow a consistent snake_case verb_noun pattern, such as search_law, get_law_text, compare_versions, and verify_citations. The get_ and search_ prefixes group related operations predictably, with no mixed conventions.
Eight tools is well-scoped for a legal research server. Each tool provides a distinct capability without redundancy, and the count feels neither thin nor bloated for the domain.
The toolset covers the core legislative research workflow: finding laws, retrieving current and historical text, checking amendment status, comparing versions, and verifying citations. There are no obvious dead ends or missing operations for the stated purpose of working with the Federal Register of Legislation.
Maintenance
Related MCP Connectors
MCP server for FCA Handbook compliance analysis with verbatim citations.
MCP for CanLII: Canadian case law and legislation metadata (federal, provincial, territorial).
Hosted MCP server for finding authoritative primary data sources and official portals.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server providing AI assistants access to Canadian case law and legislation metadata from CanLII across all jurisdictions, supporting search and citation relationships.735 npm8MIT
- AlicenseAqualityBmaintenanceMCP server for Australia's Federal Register of Legislation. Enables searching and fetching Commonwealth Acts with verifiable citations.375 PyPIApache 2.0
- AlicenseAqualityBmaintenanceMCP server for Swiss federal legislation metadata via Fedlex, enabling search and retrieval of act details with ELI URIs, SR numbers, and multilingual support.334 PyPIApache 2.0
- AlicenseAqualityBmaintenanceMCP server for the Laws of Malaysia Online portal, fetching and citing Malaysian principal Acts with verifiable citations.342 PyPIApache 2.0