RoyceCo — Victorian Property Data MCP connector
An authless remote MCP server that gives Claude live access to free, open Victorian government spatial data for property due diligence.
There are no API keys, no secrets and no accounts. Every upstream service is public and keyless, and all of it is licensed CC BY 4.0 — which means, unlike commercial property data, you may reproduce it in a report you send to a financier or a joint venture partner, with attribution.
What it gives you
| Tool | What it answers |
|---|---|
vic_site_screen |
Start here. Everything below in one call, plus a gating_items list of issues that must be priced or conditioned before going unconditional. |
vic_find_address |
Resolve an address to Vicmap candidates with coordinates and property PFI. |
vic_planning_controls |
Zone, every overlay, urban growth boundary, urban growth area, bushfire prone area. |
vic_parcel_details |
Parcel SPI and PFI, plan and lot number, land area in true square metres, council property number, mapped easements, Crown land tenure. |
vic_contamination_screen |
EPA Priority Sites Register, EPA audits and licences, landfill register, PRSA, groundwater restricted use zones, Environmental Audit Overlay. |
vic_heritage_screen |
Victorian Heritage Register, Heritage Inventory, Heritage Overlay, Aboriginal cultural heritage sensitivity, Registered Aboriginal Parties. |
vic_flood_screen |
Statutory flood overlays (LSIO, SBO, FO, RFO, UFZ) and modelled extents with reliability and method. |
vic_growth_and_gaic_screen |
Urban growth boundary, land added since 2005, potential GAIC land, Precinct Structure Plan, Urban Growth Zone. |
Every response carries caveats and an authoritative_source. The caveats are
not boilerplate — they record where the data will mislead you. Read them.
Install
You need Node 20+ and a free Cloudflare account.
cd royceco-vic-property-mcp
npm install
Step 1 — run the smoke test FIRST
npm test
This calls the live Victorian services and checks the results are sane. The important assertion is the spatial filter test: it queries two points in different municipalities and proves they return different answers.
That test exists because during development a different fetch layer silently ignored the point geometry and returned the first feature in the layer — a public park in Banyule, for an address in Pakenham. It looked like a clean answer. A tool that can do that is worse than no tool.
If the spatial filter test fails, do not connect this to Claude. A wrong planning zone invalidates an entire due diligence report.
Step 2 — deploy
npx wrangler login # opens your browser, one time only
npm run deploy
Wrangler prints the deployed URL, something like:
https://royceco-vic-property.<your-subdomain>.workers.dev
Open that URL in a browser. You should see a RoyceCo-branded status page listing the tools. If you do, it is running.
Cost: this sits inside Cloudflare's free tier — 100,000 requests a day. A busy month of due diligence will not come close.
Step 3 — connect it to Claude
- Go to claude.ai → Settings → Connectors → Add custom connector
- Paste the MCP endpoint, which is your deployed URL with
/mcpon the end:https://royceco-vic-property.<your-subdomain>.workers.dev/mcp - Save. No authentication is required.
- Start a new conversation and ask: "Run a Victorian site screen on 75 Main Street, Pakenham."
Step 4 — verify it end to end
Ask Claude to screen an address you already know well — ideally a site RoyceCo has transacted on. Check the zone, the overlays and the land area against your own records before you rely on it for a live deal.
Local development
npm run dev # http://localhost:8787
npm run tail # live logs from the deployed worker
Test the deployed endpoint directly:
curl -s https://<your-worker>/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | head -40
What this is not
- Not a substitute for the authoritative record. A report cites a dated VicPlan planning property report and a LANDATA title search, not this connector. Use it to find the issue fast; cite the source that stands up.
- Not a title search. Easements here come from a mapping layer. Registered easements, restrictive covenants and s173 agreements come from the title and the s32, and nowhere else.
- Not a title area. Areas are computed from parcel geometry and are approximate. The plan of subdivision governs.
- Not evidence of absence. A nil result from a contamination or flood register means not listed or not modelled. It never means not affected.
Data sources
All CC BY 4.0 via DataVic, verified live on 17 August 2026:
- Vicmap Address, Property, Parcel, Planning, Crown Land Tenure, Admin, Easements — Department of Transport and Planning
- VicPlan planning scheme overlays, heritage, growth areas
- Victorian Flood Database — CFA, DEECA
- Victoria Unearthed — EPA Victoria priority sites, audits, licences, landfills
- Victorian Planning Authority — precinct structure plans, potential GAIC land
Attribution is emitted with every tool response and must be carried into any document that reproduces the data:
Contains Vicmap data © State of Victoria (Department of Transport and Planning), licensed under CC BY 4.0.
Maintenance
Government endpoints move. If a tool starts failing, run npm test — it will
tell you which service broke. Endpoint URLs and layer IDs are all in
src/services.js, one object per service, with a comment explaining the
coordinate reference system trap for each. Nothing else needs to change.
Re-run the smoke test quarterly alongside the statutory review in the
royceco-property-analyst skill.