← All BumiAtlas MCP endpoints

BumiAtlas MCP

Hong Kong: Lands Department land lots and lease terms

Hong Kong land lots from the Lands Department, as tools an AI assistant can call: find a lot by name, PRN or coordinates, read its register entry, and see the lease's terms and building restrictions.

Server URL

Streamable HTTP with OAuth. The first time you connect, your client opens a browser window to sign in with Google; no API key needed.

https://bumiatlas.com/mcp/hongkong

Connect

Claude (claude.ai, desktop)
Settings → Connectors → Add custom connector, paste the URL, then Connect and sign in with Google.
Claude Code
claude mcp add --transport http bumiatlas-hongkong https://bumiatlas.com/mcp/hongkong
ChatGPT
Settings → Apps & Connectors → Advanced → Developer mode, then Create with the URL and OAuth authentication.
Cursor
in ~/.cursor/mcp.json
{
  "mcpServers": {
    "bumiatlas-hongkong": {
      "url": "https://bumiatlas.com/mcp/hongkong"
    }
  }
}

Tools

Tool names and descriptions are in English, which models understand best; your assistant still answers in your language.

HK_lot_search
Find Hong Kong land lots (Lands Department) by name, PRN or location. query takes a lot as LandsD writes it (IL 2782, NKIL 5317A, Lot 155 in DD 9, DD9-155), a Land Registry PRN (C4800223), a bare lot number (matches in several series), a LotCSUID, or coordinates as 'latitude, longitude' (e.g. 22.2818, 114.1581). With coordinates it returns the lots containing the point (distance 0), then the nearest within `radius` metres, closest first. To search an address, geocode it first; a radius of 25–100 m helps with geocoded points. Each lot has id (the LotCSUID), name (with the DD added for demarcation-district lots), series, number, section, class, prn, area (m²) and bbox. Use HK_lot_get with an id for the register description, lease terms and boundary.
query*string
Lot name (IL 2782, DD 9 Lot 155), PRN, lot number, LotCSUID, or 'latitude, longitude'
radiusnumber
Search radius in metres around coordinates(default 25)
limitinteger
Maximum results(default 20)
HK_lot_get
One Hong Kong lot by id (LotCSUID from HK_lot_search; a PRN or an unambiguous name like 'IL 2782' works too): name, series, number and section, class (Old Schedule Lot, New Grant Lot, …), prn (Land Registry), description, closed register flag, updated (when the register last changed) and area (m², computed by LandsD). lease, where a grant document is loaded: grant docType and docNo, area, commenced, expires (New Territories 1997 leases shown extended to 2047-06-30), term, renewal, userType (permitted uses) and the building restrictions maxHeight, storeys, siteCoverage, maxGfa, minGfa, buildingCovenant and clauses. Set include_geometry for the boundary as GeoJSON.
id*string
LotCSUID, PRN, or an unambiguous name (e.g. IL 2782)
include_geometryboolean
Include the boundary as a GeoJSON MultiPolygon(default false)
HK_lot_image
A map image centred on a Hong Kong lot (id, the LotCSUID from HK_lot_search; a PRN or unambiguous name works too) or a point (query), with every lot in view outlined and labelled with its lot name (e.g. IL 2782; DD lots carry only their number), so you can see which lot is where. The lot passed as id is drawn in red with a larger label; a query point is a red dot. Returns the lots in view as JSON (label, with /2 on a name repeated in view; id, lot, area in m²; labelled: false where its label didn't fit), then one JPEG per basemap. Basemaps: satellite (Esri World Imagery, often a few years old), hybrid (the same imagery with road and place names), streets and topo (Esri's street and topographic maps). Pass several to compare, e.g. ['satellite', 'streets'] to match buildings with street names. Lot outlines are yellow on imagery and magenta on maps. Imagery is not always aligned with the cadastre: offsets of a few metres are possible. A scale bar is at bottom left. Labels are left off where they'd overlap; call again with a smaller radius to read them. Each image costs about as much context as 1,000 words, so ask for what you need.
idstring
LotCSUID, PRN or unambiguous name, drawn in red
querystring
'latitude, longitude' to centre on instead of a parcel
radiusnumber
Metres from the centre to the image edge. Default: fits the parcel with a margin, or 80 m around a point
basemapsarray
One image per basemap(default ["satellite"])
sizeinteger
Image width and height in pixels(default 768)

Try asking

About the data