mcpField
P
PSGC MCP Server

PSGC MCP Server

远程服务
github.com/GodModeArch地图与出行023 周前更新
代码仓库

关于 PSGC MCP Server

PSGC MCP Server 将菲律宾标准地理代码及相关人口、分类数据提供给 LLM 和地理数据应用。它基于菲律宾统计局季度数据,支持按代码、名称、层级和人口查询行政区划。

主要功能

  1. 01按 10 位 PSGC 代码查询
  2. 02按名称搜索并筛选层级
  3. 03获取行政层级与下级实体
  4. 04批量查询最多 50 个代码
  5. 05按人口范围筛选和排序

适用场景

  1. 01核验菲律宾地点的 PSGC 代码
  2. 02查询某地所属的行政层级
  3. 03按人口筛选城市或市镇
  4. 04批量解析地点代码

MCP 相关

该 MCP 服务向 MCP 客户端提供菲律宾地理实体的查询工具,涵盖搜索、层级浏览、批量查询及人口筛选。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://psgc.godmode.ph/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

7
参数类型必填说明
codestring是10 位 PSGC 代码

详细介绍

PSGC MCP Server

npm version Cloudflare Workers TypeScript License: MIT

一个 Model Context Protocol 服务,为大模型提供菲律宾标准地理代码(PSGC)数据。基于 Cloudflare Workers 构建,并使用 KV 存储。

公开、只读,无需身份验证。数据直接来自菲律宾统计局每季度发布的 PSGC 数据。数据缓存在 Cloudflare KV 中,确保可靠性并实现全球低延迟访问。

psgc-mcp MCP server

工具

工具说明
lookup根据 10 位 PSGC 代码获取地理实体
search按名称搜索实体,可选按级别筛选并启用严格模式
get_hierarchy获取完整的行政层级链(从 barangay 到 region)
list_children列出某个父实体的直接子实体
list_by_type列出指定地理级别的所有实体
batch_lookup一次调用查询多个实体(最多 50 个代码)
query_by_population按人口范围查询实体,并支持排序和筛选
地理级别
级别说明数量
RegRegion18
ProvProvince82
DistDistrict(仅限 NCR)4
CityCity149
MunMunicipality1,493
SubMunSub-Municipality(仅限 Manila)16
SGUSpecial Geographic Unit(BARMM)~8
BgyBarangay~42,000

响应格式

所有数据响应均采用标准封装格式:

{
  "_meta": {
    "dataset_version": "PSGC Q4 2025",
    "dataset_date": "2025-12-31",
    "last_synced": "2026-03-02",
    "source": "Philippine Statistics Authority (PSA)",
    "source_url": "https://psa.gov.ph/classification/psgc/"
  },
  "data": { ... }
}

错误响应(isError: true)和提示信息(例如“未找到子实体”)会以纯文本形式返回,不进行封装。

实体结构

lookup、get_hierarchy、list_children、list_by_type、batch_lookup 和 query_by_population 返回的实体对象使用 snake_case 字段名:

字段类型说明
psgc_codestring10 位 PSGC 代码
namestring官方地名
levelstring地理级别(Reg、Prov、Dist、City、Mun、SubMun、SGU、Bgy)
old_namestring | null更名后的原名称
city_classstring | null城市分类:HUC、ICC、CC 或 null
income_classstring | null收入分类(第 1 至第 6 类)
urban_ruralstring | null城乡分类(仅适用于 barangay)
populationnumber | null2024 年人口普查人口数
parent_codestring | null父实体的 PSGC 代码

所有字段始终都会返回。没有数据的字段值为 null,不会省略。

搜索结果

search 工具返回更精简的结果对象:

字段类型说明
psgc_codestring10 位 PSGC 代码
namestring官方地名
levelstring地理级别
严格搜索

search 工具接受可选的布尔参数 strict。当 strict: true 时,仅返回名称完全匹配的结果(标准化后)。不包括部分匹配和子串匹配。如果你知道准确的地名,并希望避免结果含糊不清,这个参数会很有用。

批量查询

batch_lookup 工具接受包含 1-50 个 PSGC 代码的数组,并按输入顺序返回结果。未找到的代码会在对应位置返回 null。

FieldTypeDescription
results(Entity | null)[]按输入顺序排列的实体;未找到时为 null
foundnumber成功解析的代码数量
not_foundnumber返回 null 的代码数量
totalnumber请求的代码总数
按人口查询

query_by_population 工具会查找人口处于指定范围内的实体,并按人口排序。适用于“第 III 区最大的城市”或“人口少于 50,000 的市镇”等问题。

ParameterTypeRequiredDescription
levelstringYes要查询的地理级别
parent_codestring仅 Bgy将结果限定在某个上级实体范围内(前缀匹配)。Barangay 必须提供此参数。
min_populationnumberNo最低人口(含)
max_populationnumberNo最高人口(含)
sortasc | descNo排序顺序(默认:desc)
limitnumberNo最大结果数,1-100(默认:10)

响应包含 results(实体数组)、total_matching(限制数量前的匹配总数)和 returned(实际返回数量)。人口为 null 的实体会被排除。

连接

添加到 MCP 客户端配置中:

{
  "mcpServers": {
    "psgc": {
      "url": "https://psgc.godmode.ph/mcp"
    }
  }
}
快速测试
curl -X POST https://psgc.godmode.ph/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "search",
      "arguments": { "query": "Carmona", "level": "Mun" }
    }
  }'

PSGC 代码格式

PSGC 代码为 10 位数字,不含空格。各字段编码了完整的地理层级:

1 4 0 2 1 0 0 0 0 0
│ │ └─┬─┘ └─┬─┘ └─┬─┘
│ │   │     │     └── Barangay (last 3 digits)
│ │   │     └──────── Municipality/City (3 digits)
│ │   └────────────── Province (2 digits)
│ └────────────────── Island Group modifier
└──────────────────── Region (1 digit)

前导零有意义——014021000000 和 14021000000 是不同的代码。请始终使用完整的 10 位字符串。

已知边界情况:

  • NCR 使用 Districts 代替 Provinces(Dist 级别)
  • Cotabato City 在行政上属于 BARMM,但地理上属于 Region XII——它显示在 Prov 代码 124700000(Maguindanao del Norte)下
  • BARMM 特殊地理单位(SGU)不遵循标准层级,且没有 Province 上级实体

数据来源

SourceVintageDescription
PSA PSGC PublicationQ4 2025 (January 13, 2026)地理代码、名称、级别和分类
2024 Census of PopulationProclamation No. 973各实体的人口数量
PSA PSGC Old Names columnQ4 2025历史/旧地名
PSA PSGC Urban/Rural columnQ4 2025Barangay 城乡分类

上次同步:2026 年 3 月 2 日。

重大变更(v1.1.0+)

  • 现在所有数据响应都包装在 { _meta, data } 中。使用方必须从响应中解包 data。
  • 实体字段名称已改为 snake_case:code 现为 psgc_code,parent 现为 parent_code,cityClass 现为 city_class,等等。
  • 搜索结果现在使用 psgc_code,而非 code。
  • 所有实体字段始终都会出现。之前可选的字段现在会显示为 null,而非省略。
  • 内部字段 regionCode 和 provinceCode 不再通过 API 响应公开。

相关项目

这是菲律宾公共数据 MCP 服务系列的一部分:

  • PSGC MCP(本仓库)
  • LTS MCP - DHSUD License to Sell 验证
  • PH Holidays MCP -> 即将推出
  • BSP Bank Directory MCP -> 即将推出

所有服务均免费、公开且只读。数据取自菲律宾政府官方来源。

贡献与问题反馈

发现数据错误或尚未处理的边界情况?请提交 issue。上方的特殊情况部分涵盖了最常见的问题,但 PSGC 数据在数十年的 LGU 重新分类过程中积累了许多不一致之处,issues 列表是跟踪这些问题的最佳方式。

PSA 每季度发布更新。如果数据看起来已经过时,请提交 issue,我们会在下一次计划同步之前更新数据。

数据管道

PSGC 数据从 PSA 发布的 Excel 文件中解析,并存储在 Cloudflare KV 中。更新步骤如下:

1. 下载 PSGC Excel 文件

从 PSA PSGC 获取最新发布的文件,并将其放入 scripts/data/。

2. 比较差异(可选)
npm run diff-psgc -- "scripts/data/Q3 2025/PSGC-3Q-2025-Publication-Datafile.xlsx" "scripts/data/PSGC-4Q-2025-Publication-Datafile (1).xlsx"

比较两个季度的 Excel 文件,并报告新增项、删除项、名称变更和字段变更。在完整解析之前运行此步骤,以核实 PSA 的变更日志。

3. 解析
npm run parse-psgc

读取 Excel 文件,推导父级关系,并将分块的 JSON 文件写入 scripts/data/output/。

4. 上传到 KV
npm run upload-kv

通过 wrangler 将所有 JSON 分块批量上传到 Cloudflare KV。

5. 部署
npm run deploy

开发

npm install
npm run dev

开发服务器将在 http://localhost:8787 启动。将 MCP 客户端连接到 http://localhost:8787/mcp。

设置

首次部署前,创建 KV 命名空间:

npx wrangler kv namespace create PSGC_KV

使用返回的命名空间 ID 更新 wrangler.jsonc。

构建者

Aaron Zara - Godmode Digital 的兼职 CTO

此前构建了 REN.PH,这是一个程序化房地产平台,拥有 60,000 多个结构化地理页面,覆盖菲律宾的每个 barangay、城市和省份。PSGC MCP 源于为 AI Agent 寻找可靠、可查询的菲律宾地理数据,却未找到合适数据的需求。

如需企业级 SLA、定制集成或其他菲律宾数据源: → godmode.ph

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。