关于 Wilayah Indonesia
Wilayah Indonesia 是面向 AI 助手的 MCP 服务,可离线查询印度尼西亚各级行政区及 Kemendagri 代码。它支持容错搜索、代码验证和层级浏览,并提供 BMKG 天气接口使用的 adm4 代码。
主要功能
- 01离线查询行政区与代码
- 02容错名称搜索及筛选
- 03查看代码详情与下级区域
- 04验证代码格式和有效性
- 05提供 BMKG adm4 代码
适用场景
- 01查找村庄或地区的 Kemendagri 代码
- 02按行政层级浏览地区列表
- 03为 BMKG 天气查询取得 adm4 代码
MCP 相关
作为 MCP 服务,向客户端提供搜索、详情、列出下级区域和验证代码等只读工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| nama | string | 是 | 区域名称,例如 "Kemayoran"、"kab bandung"、"desa sukamaju garut"。最多 200 个字符。 |
| batas | integer | 否 | 最大结果数(默认值 10,最大值 50)。 |
| jenis | enum | 否 | 可选的精确类别(比 tingkat 更细)。provinsi | kabupaten | kota | kecamatan | kelurahan | desa |
| tingkat | integer | 否 | 可选级别:1 省,2 县/市,3 区,4 村/街道。 |
| kode_induk | string | 否 | 可选的上级代码,用于在其范围内搜索,例如 "32"(Jawa Barat)或 "32.05"(Kab. Garut)。 |
详细介绍
mcp-wilayah-indonesia
一个 MCP 服务,可让你的 AI 助手查询印度尼西亚行政区划及其 Kemendagri 代码:省、县/市、区(Papua 省份称为 distrik)以及村/社区。它使用随附的当前代码列表副本(Kepmendagri No. 300.2.2-2430 Tahun 2025,91,599 个区域)离线运行,并能容忍拼写错误。
示例:“雅加达中部 Kemayoran 社区的 Kemendagri 代码是什么?天气预报该使用哪个 BMKG adm4 代码?”
🇮🇩 Bahasa Indonesia:请见下方部分。
- 单文件,无依赖:只需要 Node.js 18 或更高版本。数据(约 660 KB gzip)随软件包一起提供。
- 无需 API 密钥,不进行网络调用,也不产生费用。只读:服务绝不会写入文件。
- 每个回答都包含完整路径,例如
Kel. Kemayoran, Kec. Kemayoran, Kota Adm. Jakarta Pusat, Prov. Daerah Khusus Ibukota Jakarta。 - 支持带点或不带点的代码(
31.71.03.1001或3171031001)。
工具
| 工具 | 功能 |
|---|---|
cari_wilayah | 按名称搜索,可容忍拼写错误。额外词语可用于指定上级区域("sukamaju garut");前置的 kab/kota/kec/desa/kel 可作为提示;支持常见简称(jogja、DKI、jatim、NTT)。筛选条件:tingkat(1–4)、jenis(provinsi、kabupaten、kota、kecamatan、kelurahan、desa)、kode_induk(在指定上级区域内搜索)、batas(最多 50)。返回代码、类别、级别、完整路径和匹配分数。 |
detail_kode | 根据代码返回名称、类别、从省份开始的所有上级区域,以及其下辖的区域数量。 |
daftar_anak | 返回某代码的直接下级区域(省 → 县/市 → 区 → 村/社区),支持使用 offset 和 batas 分页(最多 200 条)。不指定代码时会列出 38 个省。 |
validasi_kode | 检查格式(2/4/6/10 位数字,以及分段规则,例如 kota = 71–79、kelurahan = 1xxx、desa = 2xxx、desa adat = 3xxx)和代码是否存在。对于未知代码,会指出确实存在的最近上级区域;也能识别并说明岛屿代码(xx.xx.4xxxx)。 |
所有工具均为只读(readOnlyHint: true、openWorldHint: false)。回答为 JSON 文本及 structuredContent。
代码格式
| 级别 | 类别 | 位数 | 示例 |
|---|---|---|---|
| 1 | provinsi | 2 | 32 Jawa Barat |
| 2 | kabupaten(01–69)/ kota(71–79) | 2.2 | 32.73 Kota Bandung |
| 3 | kecamatan(Papua 省份称为 distrik) | 2.2.2 | 32.73.01 Sukasari |
| 4 | kelurahan(1xxx)/ desa(2xxx;Kab. Jayapura 的 14 个 desa adat 使用 3xxx) | 2.2.2.4 | 31.71.03.1001 Kemayoran |
可与 BMKG 天气服务配合使用(adm4)
BMKG 的公共天气预报 API 使用相同的带点的第 4 级 Kemendagri 代码作为村庄标识,即 adm4 参数,例如 https://api.bmkg.go.id/publik/prakiraan-cuaca?adm4=31.71.03.1001(于 2026 年 11 月 11 日检查)。因此,第 4 级搜索结果会包含 bmkg_adm4 字段。将此服务与 mcp-bmkg 配合使用,助手便能从“明天 Kemayoran 的天气”查询到正确的村庄代码,再获取天气预报。
安装
使用 npx(推荐): 无需安装。以下配置会运行 npx -y mcp-wilayah-indonesia,首次启动时下载软件包(一个 .mjs 文件和数据文件,无依赖)。
从源代码安装:
git clone https://github.com/EzkielynaGroup/mcp-wilayah-indonesia.git
cd mcp-wilayah-indonesia
node --test test/ # optional, offline
然后使用 "command": "node",并将 "args": ["/full/path/to/mcp-wilayah-indonesia.mjs"] 替代 npx。
在 Windows 上,如果应用无法启动 npx,请使用 "command": "cmd" 和 "args": ["/c", "npx", "-y", "mcp-wilayah-indonesia"]。JSON 中的路径请使用正斜杠(C:/Users/you/mcp-wilayah-indonesia/mcp-wilayah-indonesia.mjs)或双反斜杠。
Claude Desktop
Settings → Developer → Edit Config(claude_desktop_config.json),然后完全退出并重新打开 Claude Desktop。
{
"mcpServers": {
"wilayah-indonesia": {
"command": "npx",
"args": ["-y", "mcp-wilayah-indonesia"]
}
}
}
Claude Code
claude mcp add wilayah-indonesia -- npx -y mcp-wilayah-indonesia
添加 --scope user,即可在每个项目中使用。运行 claude mcp list 检查。
Cursor
~/.cursor/mcp.json(所有项目)或 .cursor/mcp.json(单个项目),JSON 格式与 Claude Desktop 相同。
OpenCode
项目中的 opencode.json,或用于所有项目的 ~/.config/opencode/opencode.json。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"wilayah-indonesia": {
"type": "local",
"command": ["npx", "-y", "mcp-wilayah-indonesia"],
"enabled": true
}
}
}
配置(环境变量)
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
WILAYAH_DATA_FILE | 否 | 内置的 data/wilayah.json.gz | 使用其他数据文件(.json 或 .json.gz),文件结构需相同。例如,使用 scripts/build-data.mjs 构建的较新版本。 |
安全性与限制
- 离线且只读:不会发起网络请求,也不会写入文件。日志写入 stderr;stdout 仅传输 MCP 消息。
- 输入限制:名称最多 200 个字符;每次最多返回 50 条搜索结果和 200 个子项。
- 错误以简短的工具错误信息返回(印尼语 + 英语),不包含堆栈跟踪或本地路径。
- 数据为快照。地区拆分或更名时,代码和名称会发生变化;如用于法律或行政用途,请查阅相关法令。
数据来源与许可证
| 法律依据 | 内政部部长决定 No. 300.2.2-2430 Tahun 2025(修订 No. 300.2.2-2138 Tahun 2025),据上游数据集所述 |
| 数据集 | cahyadsn/wilayah,文件 db/wilayah.sql,提交 d68e8d5(最近一次数据更改于 2026 年 2 月 13 日),下载于 2026 年 11 月 11 日 |
| 数据集许可证 | MIT,版权所有 (c) 2017-2025 Cahya DSN。完整声明随附于 data/LICENSE-DATA.txt。 |
| 内容 | 38 个省、416 个县、98 个市、7,285 个区、8,496 个城市村、75,266 个乡村(共 91,599 行)。这些总数已与上游 README 中的表格核对。 |
| 更改 | 转换为紧凑型 JSON + gzip;删除了 5 个名称末尾的空格。除此之外没有其他更改。 |
注意:上游 SQL 文件中的注释标题仍提及 No. 300.2.2-2138,而上游 README 及其更改说明指出数据依据 No. 300.2.2-2430;我们以 README 为准。雅加达的省名保留列表中的写法(Daerah Khusus Ibukota Jakarta)。本项目尚未逐行对照法令 PDF 核验数据。
上游数据更新后,重新构建:
curl -sL -o /tmp/wilayah.sql https://raw.githubusercontent.com/cahyadsn/wilayah/master/db/wilayah.sql
node scripts/build-data.mjs /tmp/wilayah.sql --commit <upstream sha> --date <YYYY-MM-DD>
node --test test/
常见问题
我的村庄代码(kode desa / kode kelurahan)是什么?
启用此服务后,向助手提问即可,例如:“kode wilayah Desa Sukamaju, Kec. Cilawu, Garut”。cari_wilayah 会返回 10 位代码(32.05.19.2014)和完整路径。
这是 BMKG 用于天气预报的相同代码(adm4)吗?
是。BMKG 的预报 API 将带点的第 4 级内政部代码作为 adm4,因此可以直接将 bmkg_adm4 传给该 API 或 mcp-bmkg。
印度尼西亚当前列表中有多少个省、县和村庄? 根据 Kepmendagri 300.2.2-2430/2025:38 个省、416 个县、98 个市、7,285 个区、8,496 个城市村和 75,266 个乡村。
这与邮政编码(kode pos)或 BPS 代码相同吗? 不同。内政部地区代码不同于邮政编码,也不同于省级以下的 BPS(统计)代码,后者可能有所不同(例如 Kota Jakarta Pusat)。此服务只包含内政部代码。
需要互联网或 API 密钥吗?
不需要。数据已随包提供;npx 下载过一次软件包后,所有操作都会在本地运行,且无需付费。
这些数据由政府发布吗? 这些代码来自内政部的一项法令,但此软件包使用的是社区编纂的 MIT 许可版本,并非政府服务。如用于法律或行政文件,请查阅内政部发布的法令。
开发
node --test test/
11 项测试会通过标准输入/输出,以真实数据中的 46 行样本为基础启动服务,并检查每个工具、筛选条件、拼写错误、分页、错误情况和损坏的数据文件;同时还会检查内置的完整列表是否能加载,以及公布的总数是否正确。不访问网络。
许可证
代码:MIT,版权所有 (c) 2026 Ezekiel Lieberhart (Ezkielyna)。数据:MIT,版权所有 (c) 2017-2025 Cahya DSN(参见 data/LICENSE-DATA.txt)。本项目与 Kemendagri、BMKG 或上游数据集作者均无关联。
由 Ezkielyna 制作。Ezkielyna 是面向印度尼西亚开发者的独立 AI API 网关(QRIS)。
印度尼西亚语
MCP 服务,让 AI 助手(Claude Desktop、Claude Code、Cursor、OpenCode 和其他 MCP 客户端)能够搜索印度尼西亚行政区划及其 Kemendagri 代码:省、县/市、区(乡镇)和村/街道。基于最新代码列表副本离线运行(Kepmendagri 第 300.2.2-2430 号,2025 年,91,599 个区域),并能容忍拼写错误。
示例问题:“雅加达中部 Kemayoran 街道的区域代码是什么?它的 BMKG adm4 代码是什么?”
- 只需 Node.js 18+,无需依赖项、API key,下载软件包后无需联网,且免费。
- 每条结果都包含完整路径,例如
Desa Sukamaju, Kec. Cilawu, Kab. Garut, Prov. Jawa Barat。 - 代码可带点或不带点(
31.71.03.1001或3171031001)。
工具
| 工具 | 功能 |
|---|---|
cari_wilayah | 按名称搜索(可容忍拼写错误)。可附加上级名称("sukamaju garut");前缀 kab/kota/kec/desa/kel 可作为提示;可识别常见缩写(jogja、DKI、jatim、NTT)。筛选条件:tingkat(1–4)、jenis、kode_induk、batas(最多 50)。 |
detail_kode | 代码 → 名称、类型、从省级到下级的所有上级,以及其下属区域数量。 |
daftar_anak | 按页列出代码下一级的区域(offset、batas,最多 200)。不提供代码时:38 个省。 |
validasi_kode | 检查格式(2/4/6/10 位数字、市级 = 71–79、街道 = 1xxx、村 = 2xxx、传统村 = 3xxx)以及代码是否存在。对于不存在的代码,会指出最近的有效上级。可识别岛屿代码(xx.xx.4xxxx)。 |
与 BMKG 配合使用
BMKG 公共天气预报 API 使用带点的 Kemendagri 村/街道代码作为 adm4 参数,例如 https://api.bmkg.go.id/publik/prakiraan-cuaca?adm4=31.71.03.1001。4 级结果包含 bmkg_adm4 列。可与 mcp-bmkg 搭配使用:助手在此处搜索村级代码,然后在该服务中获取天气预报。
安装
将其添加到应用配置中(与上面的示例相同):
{
"mcpServers": {
"wilayah-indonesia": { "command": "npx", "args": ["-y", "mcp-wilayah-indonesia"] }
}
}
Claude Code:claude mcp add wilayah-indonesia -- npx -y mcp-wilayah-indonesia。在 Windows 上,如果 npx 无法运行,请使用 "command": "cmd" 和 "args": ["/c", "npx", "-y", "mcp-wilayah-indonesia"]。
数据来源与许可证
数据取自 cahyadsn/wilayah 仓库(MIT 许可证,版权所有 (c) 2017-2025 Cahya DSN),文件 db/wilayah.sql,提交版本 d68e8d5(数据最后更新于 2026 年 2 月 13 日,下载于 2026 年 11 月 11 日)。根据该仓库的 README,数据遵循 Kepmendagri 第 300.2.2-2430 号(2025 年)。数量与源仓库 README 中的表格相符:38 个省、416 个县、98 个市、7,285 个区、8,496 个街道、75,266 个村。我们未逐条与 Kepmendagri PDF 核对。如用于法律或行政事务,请查阅 Kemendagri 发布的 Kepmendagri 文件。
常见问题
- 如何查找村级代码? 向助手提问,例如“Desa Sukamaju Cilawu Garut 的区域代码”;
cari_wilayah会返回 10 位代码和完整路径。 - 它与邮政编码相同吗? 不同。Kemendagri 区域代码与邮政编码及 BPS 代码不同。
- 需要联网或 API key 吗? 不需要。数据随软件包一同提供,且完全免费。
代码:MIT。数据:MIT(Cahya DSN)。由 Ezkielyna 制作。Ezkielyna 是面向印度尼西亚开发者的独立 AI API 网关(使用 QRIS 付款)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。