RoyceCo Victorian Property Data MCP
by JDuRieu26
README.md
# 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+](https://nodejs.org) and a free
[Cloudflare account](https://dash.cloudflare.com/sign-up).
```bash
cd royceco-vic-property-mcp
npm install
```
### Step 1 — run the smoke test FIRST
```bash
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
```bash
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
1. Go to claude.ai → **Settings → Connectors → Add custom connector**
2. Paste the MCP endpoint, which is your deployed URL **with `/mcp` on the end**:
`https://royceco-vic-property.<your-subdomain>.workers.dev/mcp`
3. Save. No authentication is required.
4. 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
```bash
npm run dev # http://localhost:8787
npm run tail # live logs from the deployed worker
```
Test the deployed endpoint directly:
```bash
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](https://discover.data.vic.gov.au), 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.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues