← All BumiAtlas MCP endpoints

BumiAtlas MCP

Vietnam: land parcels by number, Đà Nẵng and HCMC planning zones

Vietnamese land parcels and planning zones as tools an AI assistant can call: find a parcel by its code or by the sheet and parcel number on its certificate, see what the plan allows there, and see it on a map with its neighbours.

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/vietnam

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-vietnam https://bumiatlas.com/mcp/vietnam
ChatGPT
Settings → Apps & Connectors → Advanced → Developer mode, then Create with the URL and OAuth authentication.
Cursor
in ~/.cursor/mcp.json
{
  "mcpServers": {
    "bumiatlas-vietnam": {
      "url": "https://bumiatlas.com/mcp/vietnam"
    }
  }
}

Tools

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

VN_parcel_search
Find Vietnamese land parcels by number or location. query takes the 12-digit parcel code (ma_thua_dat, e.g. 104890320091), the sheet and parcel number as a certificate writes them ('tờ 32 thửa 91', 'thửa đất số 91, tờ bản đồ số 32', 'sheet 32 parcel 91') with an optional place ('tờ 32 thửa 91 Hương Sơn', or several comma-separated parts to narrow it: 'tờ 32 thửa 91, Hương Sơn, Mỹ Đức'; communes, districts or provinces, old or 2025 names, diacritics optional), or coordinates as 'latitude, longitude' (e.g. 10.7769, 106.7009). With coordinates it returns parcels containing the point (distance 0), then the nearest within `radius` metres, closest first. Each parcel has id, code, sheet, number, landUse (cadastral codes) with landUseEn, area (stated, m²), mapArea, province, commune and place, communeOld and placeOld, site (where the record came from) and bbox. Not every parcel is covered. Use VN_parcel_get for the zoning over a parcel.
query*string
'104890320091', 'tờ 32 thửa 91 Hương Sơn', or 'latitude, longitude'
radiusnumber
Search radius in metres around coordinates(default 25)
limitinteger
Maximum results(default 20)
offsetinteger
Skip this many matches of a number or name search, to page through them(default 0)
include_geometryboolean
Include each boundary as a GeoJSON MultiPolygon(default false)
VN_parcel_get
One Vietnamese parcel by id (from VN_parcel_search): its fields as in the search, and zones, the planning zones covering at least 5% of it (Đà Nẵng and HCMC only), detailed plans first: id, level (qh_chi_tiet detailed, qh_phan_khu zoning, qh_chung general plan), landUse (the plan's code), landUseName, otherUses (the other plan codes the block allows), purpose, floorsMax, densityMax (%), farMax and share of the parcel (0–1). Use VN_zoning_get with a zone id for all its rules. Set include_geometry for the boundary as GeoJSON.
id*string
Parcel id from VN_parcel_search, e.g. 202120070274
include_geometryboolean
Include the boundary as a GeoJSON MultiPolygon(default false)
VN_zoning_get
Planning zones at a location in Đà Nẵng or Ho Chi Minh City, or one zone by id. Pass query as 'latitude, longitude' (e.g. 10.7769, 106.7009), or id. Each zone has id, level (qh_chi_tiet detailed plan, qh_phan_khu zoning plan, qh_chung general plan), province, provinceName, commune, communeName, block (the plan's block code), landUse (the city's own plan code) with landUseName as written and zoneClass/zoneClassEn, purpose (HCMC: what the zone is for), area (stated, m²), mapArea, population (planned, HCMC), and HCMC's building rules: densityMin/Max (coverage %), farMin/Max (floor area ratio), floorsMin/Max, heightMin/Max (m). Empty fields are left out. A block that allows several uses is one zone: landUse is its main use, and uses lists the others (landUse, landUseName, zoneClass/zoneClassEn, and a rule pair where that use's rules differ from the zone's). Detailed plans come first; they apply where they exist. An empty result means no plan is loaded there (only Đà Nẵng and HCMC are).
querystring
'latitude, longitude'
idstring
Zone id
include_geometryboolean
Include each zone's boundary as a GeoJSON MultiPolygon(default false)
VN_parcel_image
A map image centred on a Vietnamese parcel (id from VN_parcel_search) or a point (query), with every loaded parcel in view outlined and labelled with its parcel number (thửa), so you can see which parcel is where. The parcel passed as id is drawn in red with a larger label; a query point is a red dot. Returns the parcels in view as JSON (label, id, sheet, code, 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. Parcel outlines are yellow on imagery and magenta on maps. Not every parcel is covered, so some areas show none. 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
Parcel id from VN_parcel_search, 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