← Semua endpoint MCP BumiAtlas

BumiAtlas MCP

Persil tanah ATR/BPN

Persil tanah Indonesia dari peta pertanahan publik ATR/BPN, sebagai tool yang bisa dipanggil asisten AI: cari nomor sertifikat atau NIB, lihat bidang di suatu koordinat, cek tumpang tindih dengan hak dan konsesi lain, lihat bidang di citra satelit dan cek bahaya banjir.

URL server

Streamable HTTP dengan OAuth. Saat pertama terhubung, klien membuka jendela browser untuk masuk dengan Google; tanpa API key.

https://bumiatlas.com/mcp/parcels

Hubungkan

Claude (claude.ai, desktop)
Settings → Connectors → Add custom connector, tempel URL-nya, lalu Connect dan masuk dengan Google.
Claude Code
claude mcp add --transport http bumiatlas-parcels https://bumiatlas.com/mcp/parcels
ChatGPT
Settings → Apps & Connectors → Advanced → Developer mode, lalu Create dengan URL-nya dan autentikasi OAuth.
Cursor
di ~/.cursor/mcp.json
{
  "mcpServers": {
    "bumiatlas-parcels": {
      "url": "https://bumiatlas.com/mcp/parcels"
    }
  }
}

Tool

Nama dan deskripsi tool dalam bahasa Inggris, yang paling dipahami model; asisten tetap menjawab dalam bahasa Anda.

Parcel_search
Find parcels by certificate number, NIB or location. query takes a certificate number (nomor, 14 digits; dots or spaces allowed, e.g. 22.01.05.03.1.00123), a NIB (parcel number, e.g. 02007), the village code plus NIB as certificates print it (13 digits, e.g. 22.03.09.03.04753 = village 22030903, NIB 04753), or coordinates as 'latitude, longitude' (e.g. -6.4601, 107.0093). A NIB is only unique within a village, so pass `desa` to narrow it; otherwise matches come from all over the country. With coordinates it returns the parcels containing the point (distance 0), then the nearest within `radius` metres, closest first, plus the village containing the point. To search an address, geocode it first; geocoded points are often tens of metres off, so a radius of 25–100 m helps. No parcels at a location means BPN publishes no parcel there, not that the land is unregistered. Each parcel has id, nib, nomor, tipehak, declared area (luas, m²), year (tahun) and bbox; number searches also give the village (wilayah: via 'nomor' = the village coded in the certificate number, 'lokasi' = the village containing the parcel). Use Parcel_get with an id for the full record.
query*string
Certificate number (14 digits), village code + NIB as printed on certificates (13 digits, e.g. 22.03.09.03.04753), NIB, or 'latitude, longitude'
radiusnumber
Search radius in metres around coordinates(bawaan 25)
desastring
8-digit BPN village code to search a NIB within (from Parcel_find_village)
limitinteger
Maximum results(bawaan 20)
Parcel_get
Full record of one parcel by id: certificate number, NIB, right type, declared area (luas) next to the area of the mapped polygon (luasHitung) and their difference in percent, year, survey method (alatukur), mapping accuracy (akurasibidang, unit unknown), the village, perimeter and side lengths in metres, and center, a [longitude, latitude] point inside the parcel. zona lists the RDTR zoning sub-zones covering the parcel (kodzon/namzon zone, kodszn/namszn sub-zone, share of the parcel 0–1), largest first; empty where no detailed spatial plan is loaded. znt lists the land value zones (Zona Nilai Tanah) covering the parcel from each land office's latest year: kelas 1–9 stands for a range in Rp/m² (1 < 100k, 2 100k–200k, 3 200k–500k, 4 500k–1M, 5 1M–2M, 6 2M–5M, 7 5M–10M, 8 10M–20M, 9 > 20M), with tahun and share of the parcel; empty where no ZNT is loaded. banjir lists the BNPB flood hazard classes covering the parcel (kelas 1 rendah/low, 2 sedang/medium, 3 tinggi/high, with share of the parcel), largest first; empty means BNPB maps no flood hazard there. The hazard map has 100 m cells, so it rates the neighbourhood rather than the exact plot. lsdShare is the parcel's share (0-1) within the loaded 2021 LSD protected rice-field dataset; null means no mapped overlap, not proof that land is unprotected. A large area difference can point to a mapping error or an outdated certificate. nilai is almost always empty in the source. Set include_geometry for the boundary as GeoJSON.
id*string
Parcel id from Parcel_search
include_geometryboolean
Include the boundary as a GeoJSON MultiPolygon(bawaan false)
Parcel_overlaps
Other parcels, HGU (plantation lease) rights, concessions and conservation areas whose boundaries overlap a parcel, largest overlap first. overlap is the shared area in m²; shareOfParcel and shareOfOther are that area as a fraction (0–1) of this parcel and of the other one. Both near 1 means two certificates on the same land (or a duplicate record); a small share is usually a mapping offset between neighbours. Slivers under 1% of the smaller polygon are left out, since neighbouring BPN boundaries rarely line up exactly. A Hak Guna Usaha parcel usually overlaps its own HGU record. konsesi are mining licences (jenis TAMBANG; izin IUP, IUPK, KK, PKP2B, IPR, or WIUP/WIUPK for a licence area not yet licensed; berakhir is the licence end date, often past; komoditas is the commodity as ESDM names it, komoditasEn the same in English), natural-forest logging licences (HPH) and pulpwood plantations (HTI). konservasi are national parks, nature reserves and other conservation areas (fungsi as KLHK names it). Their boundaries are accurate to ~11 m only, so a parcel within a few metres of the edge may be either side. Set include_geometry for the overlapping areas as GeoJSON.
id*string
Parcel id from Parcel_search
include_geometryboolean
Include each overlapping area as a GeoJSON MultiPolygon(bawaan false)
Parcel_image
A map image centred on a parcel (id) or a point (query), with every parcel in view outlined and labelled with its NIB, 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: the NIB, with /2 on a repeated one and #n on parcels without one; id, nib, nomor, tipehak, luas, tahun; 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; buildings adds Google Open Buildings footprints in cyan (Bali only so far). A scale bar is at bottom left. Imagery is not always aligned with BPN boundaries: offsets of a few metres are common. 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 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(bawaan ["satellite"])
sizeinteger
Image width and height in pixels(bawaan 768)
buildingsboolean
Draw building footprints (Google Open Buildings)(bawaan false)
Flood_get
BNPB InaRISK flood hazard (bahaya banjir) at a location: kelas 1 rendah (low), 2 sedang (medium) or 3 tinggi (high), BNPB's three classes of its national 0–1 flood hazard index, cut at 1/3 and 2/3. Pass query as 'latitude, longitude' (e.g. -6.4601, 107.0093). For a parcel, Parcel_get's banjir gives the classes over its whole area. banjir is null where BNPB maps no flood hazard (dry ground or sea), not proof that it never floods. The map has 100 m cells and is a national model, not a record of past floods: use it to screen a location, not to judge a single plot.
query*string
'latitude, longitude'
Parcel_find_village
Look up BPN villages (desa/kelurahan) by name, code or certificate number. Names match as substrings and are often ambiguous (hundreds of villages share a name), so combine nama with kecamatan, kabupaten or provinsi. Names don't tell a Kota from a Kabupaten (both stored as e.g. 'Bogor'); the 4-digit code prefix does. kode accepts a prefix: 2 digits (province office), 4 (land office), 6 (kecamatan) or 8 (village). nomor decodes a 14-digit certificate number into its parts and returns the village it was registered in. Returns each village's 8-digit code, names, type and bbox; a code occasionally appears on more than one village after a split.
namastring
Village name
kecamatanstring
District name
kabupatenstring
Regency or city name
provinsistring
Province name
kodestring
BPN code or code prefix
nomorstring
Certificate number to decode (14 digits)
limitinteger
Maximum villages(bawaan 20)

Coba tanyakan

Tentang data