← Peta BumiAtlas

BumiAtlas MCP

Persil tanah Indonesia dari peta pertanahan publik BPN, sebagai tool yang bisa dipanggil asisten AI: cari sertifikat atau NIB, lihat bidang di suatu koordinat, dan cari kode desa BPN.

URL server

https://bumiatlas.com/mcp

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

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 https://bumiatlas.com/mcp
ChatGPT
Settings → Apps & Connectors → Advanced → Developer mode, lalu Create dengan URL-nya dan autentikasi OAuth.
Cursor
di ~/.cursor/mcp.json
{
  "mcpServers": {
    "bumiatlas": {
      "url": "https://bumiatlas.com/mcp"
    }
  }
}

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. 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)
Zoning_get
RDTR zoning (detailed spatial plan) at a location, or one zone by id (Parcel_get's zona.ids). Pass query as 'latitude, longitude' (e.g. -6.4601, 107.0093), or id. Each zone has kodzon/namzon (zone, e.g. R Zona Perumahan), kodszn/namszn (sub-zone, e.g. R-2 Perumahan Kepadatan Tinggi), lindung (true = protected zone, false = cultivation zone), the planning hierarchy (kodewp planning area, kodswp sub-area, kodblk block, kodsbl sub-block), kecamatan and desa as the plan names them, luas (m², the whole zone polygon) and rdtr, the plan with its regulation (peraturan) and a link to it (pp). ketentuan holds the special provisions that apply, keyed by code: krb disaster-prone, lp2b protected food farmland, kkop airport flight safety, ksmpdn setback, teb disaster evacuation, tod transit-oriented development, cagbud cultural heritage, resair water catchment, hankam defence, kkarst karst, ptbgmb mining, mgrsat wildlife migration, rdbumi underground space, puslit research centre, tpz zoning technique (TPZ). An empty result at a point means no RDTR plan covers it in this data, not that the land is unzoned: the regional plan (RTRW) still applies. Where plans overlap, more than one zone is returned.
querystring
'latitude, longitude'
idstring
Zone id, e.g. 21A5-125300
include_geometryboolean
Include each zone's boundary as a GeoJSON MultiPolygon(bawaan false)
Zoning_summary
How much of a village or regency/city the RDTR plans zone for each use: area by zone, and within each zone by sub-zone, largest first. Pass desa, an 8-digit BPN village code (from Parcel_find_village), or kabupaten, a regency/city name or 4-digit Kemendagri code. Regency names are bare for a kabupaten and prefixed for a city: 'Bogor' or 'Kabupaten Bogor' is the regency, 'Kota Bogor' the city; an ambiguous name returns the candidates to choose from. luasWilayah is the area of the village or regency (m²), luasZonasi the area its RDTR zones cover and shareZonasi the fraction covered; plans are usually for towns, so a rural regency is often mostly unplanned. Zone share is of the zoned area, not of the whole area. For a village, zones are clipped to its boundary. For a regency, it counts the plans assigned to it in full, even where one crosses into a neighbour. plans lists the RDTR plans involved with their regulations. Zone codes are named the same across plans but names vary, so each code shows its most common name. A large regency can take a second or two.
desastring
8-digit BPN village code
kabupatenstring
Regency/city name or 4-digit Kemendagri code
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