菲律宾金融接入MCP服务器
A. 模型上下文协议 向LLM提供菲律宾金融访问数据的服务器。587家BSP监管机构、37834个金融接入点(银行办公室、ATM、NSSLA),以及使用PSGC和2024年人口普查数据进行覆盖分析。基于Cloudflare Workers构建,具有静态JSON数据。
工具
机构工具
| 工具 | 说明 |
|---|---|
search_institutions | 按名称搜索587家BSP监管机构(注册和商号模糊匹配)。 |
get_institution | 按代码查找机构。包括联系方式、总部地址。 |
list_institutions | 列出具有可选过滤器的机构:类型、PSGC位置、状态。 |
get_institution_stats | 按类型、地区和状态汇总计数。 |
接入点工具
| 工具 | 说明 |
|---|---|
search_access_points | 按机构或地点名称搜索37834个BSP注册的金融接入点。按地区、省、镇、行业、ATM可用性过滤。每条记录都是一个访问点。一个有多台自动取款机的实体办公室可能会显示为多条记录。 |
get_access_point | 按ID查找单个接入点 |
覆盖率分析工具
| 工具 | 说明 |
|---|---|
get_coverage | 任何巴黎圣日耳曼地区的覆盖报告:按行业(银行、仅ATM、NSSLA)、独特机构、人口比例统计的接入点数量。 |
find_unbanked_areas | 查找没有接入点的城市。按人口排序(最大的未服务人口排在首位)。 |
find_underserved_areas | 按每个接入点的人口比率对地区或省份进行排名。 |
get_institution_footprint | 绘制一家机构的全国接入点分布图:按地区/省份统计、ATM统计数据、行业细分。 |
compare_coverage | 两个PSGC区域的并排覆盖比较。 |
行业类型
接入点数据包括三种行业分类:
| 行业 | 计数 | 描述 |
|---|---|---|
BANK | 26675 | 银行办公室接入点(包括在银行办公室注册的个人自动取款机) |
ATM ONLY | 10961 | 独立自动柜员机不与银行办公室位于同一地点 |
NSSLA | 198 | 非股票储蓄和贷款协会 |
重要提示: 每个BSP注册的接入点都是一个单独的记录。在这个数据集中,一个有3台自动取款机的实体分行可能会显示为3-4条记录。这些数据衡量的是金融访问覆盖率,而不是实体分行数量。
机构类型
| 类型 | 计数 | 描述 |
|---|---|---|
universal_commercial | 53 | 全能银行和商业银行(包括外国银行分行、海外业务单位、代表处) |
thrift | 42 | 储蓄/储蓄银行和私人开发银行 |
rural | 351 | 农村银行(包括面向小额信贷的农村银行) |
cooperative | 21 | 合作银行 |
digital | 6 | 数字银行 |
quasi_bank | 5 | 具有类似银行职能的非银行机构 |
non_bank_fi | 109 | 非银行金融机构(NSSLA、融资公司、证券交易商等) |
覆盖率报告
这 get_coverage 该工具返回任何PSGC地区(地区、省或市)的财务访问报告。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
psgc_code | string | 是 | 10位PSGC代码 |
industry | string | 否 | 按行业类型筛选 |
响应包括 total_access_points, by_industry (仅限银行/ATM/NSLA计数), unique_institutions, with_atm, population,以及 population_per_access_point.
机构足迹
这 get_institution_footprint 该工具使用模糊名称匹配绘制机构的全国接入点分布图。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
institution_name | string | 是 | 要搜索的机构名称(例如“BDO”、“METROBANK”) |
响应包括 institution_name (规范), total_access_points, by_region, by_province, with_atm,以及 by_industry.
用例
金融包容性分析
- “哪些省份的人均接入点最少?”
find_underserved_areas在省一级。 - “哪些城市没有金融准入?”
find_unbanked_areas. - “BARMM与CALABARZON相比如何?”
compare_coverage具有区域PSGC代码。并排的人口、接入点和密度比。
银行扩张/竞争情报
- “BDO、Metrobank和BPI在哪里?”
get_institution_footprint对于每一个。比较区域集中度和接入点数量。 - “甲米地的竞争格局如何?”
get_coverage鱼子酱。接入点数量、独特机构、按行业细分。 - “哪些省份有银行业务,但没有NSSLA?”
find_underserved_areas按行业筛选NSSLA.
金融科技市场规模
- “只有ATM机的地方在哪里,没有银行办事处?”
search_access_points按行业筛选ATM ONLY在一个省,与get_coverage行业比率。 - “哪些地区ATM机很多,但银行却很少?”
get_coverage跨地区。比较BANK对比ATM ONLY在by_industry数字银行市场已经成熟。
政策/监管
- “有多少数字银行在运营?”
list_institutions随着institution_type: "digital"六张执照。 - “国家机构类型细分?”
get_institution_stats587个机构,涵盖7个类别。 - “哪些农村银行为棉兰老岛服务?”
list_institutions带有地区PSGC代码+institution_type: "rural".
房地产/市政规划
- “这个城市有财政渠道吗?”
get_coverage其PSGC代码。快速的是/否加上服务深度。 - “我们的小镇和邻近的相比怎么样?”
compare_coverage.人口标准化比较。
新闻/数据故事
- “没有银行的十大城镇”
find_unbanked_areas按人口排序。 - “菲律宾银行业有多集中?”
get_institution_footprint排名前五的银行。仅BDO就拥有37834个接入点中的7479个(19.8%)。
响应格式
所有数据响应都封装在一个标准信封中:
{
"_meta": {
"dataset_version": "1.0.0",
"dataset_date": "2026-03-12",
"last_synced": "2026-03-12",
"source": "Bangko Sentral ng Pilipinas (BSP)",
"source_url": "https://www.bsp.gov.ph/SitePages/financialstability/Directories.aspx"
},
"data": { ... }
}接入点和覆盖工具增加了人口来源:
{
"_meta": {
"...": "...",
"population_source": "Philippine Statistics Authority (PSA)",
"population_year": "2024",
"population_dataset": "2024 Census of Population, PSGC Q4 2025 Publication"
}
}分页回复添加:
{
"pagination": { "total": 7479, "offset": 0, "limit": 20, "has_more": true }
}错误响应(isError: true)作为纯文本JSON返回,没有包装。
接入点记录架构
| 字段 | 类型 | 描述 | |
|---|---|---|---|
id | string | 接入点标识符 | |
institution_name | string | 母机构名称 | |
branch_name | string | 接入点名称(BSP字段名) | |
industry | string | BANK, ATM ONLY,或 NSSLA | |
address | string | 街道地址 | |
town | string | 市/城市名称 | |
province | string | 省份名称 | |
region | string | 地区名称 | |
latitude | `number\ | null` | 纬度(城市/地区质心,而非地址级别) |
longitude | `number\ | null` | 经度(城市/地区质心,而非地址级别) |
has_atm | boolean | 接入点是否有ATM | |
psgc_muni_code | string | 10位PSGC市政/城市代码 | |
region_code | string | 10位PSGC地区代码 | |
province_code | string | 10位巴黎圣日耳曼省代码 |
机构记录模式
| 字段 | 类型 | 始终存在 | 描述 |
|---|---|---|---|
institution_code | string | 是 | BSP SharePoint列表项ID。在ETL运行中稳定。 |
registration_name | string | 是 | BSP官方注册名称 |
bank_type | string | 是 | 标准化分类(见上述类型) |
status | string | 是的 | active, closed, under_receivership,或 merged |
head_office_address | string | 是 | BSP列出的总部地址 |
psgc_muni_code | string | 否 | 10位PSGC市/城市代码 |
region_code | string | 无 | 10位PSGC地区代码 |
province_code | string | 否 | 10位巴黎圣日耳曼省代码 |
contact_person | string | 否 | 总裁/首席执行官/董事长姓名 |
contact_title | string | 否 | 头衔(例如“总裁兼首席执行官”) |
contact_email | string | 否 | 联系电子邮件地址 |
contact_phone | string | 否 | 联系电话 |
website | string | 否 | 机构网站URL |
fax | string | 否 | 传真号码 |
num_offices | number | 否 | 办事处/分支机构数量 |
date_sourced | string | 是 | 数据提取日期(ISO格式) |
source_document | string | 是 | 数据源标识符 |
连接
添加到MCP客户端配置中:
{
"mcpServers": {
"ph-financial-access": {
"url": "https://ph-financial-access.godmode.ph/mcp"
}
}
}适用于Claude Desktop、Cursor、Windsurf、Claude Code和任何兼容MCP的客户端。
快速测试
curl -X POST https://ph-financial-access.godmode.ph/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_access_points",
"arguments": { "query": "BDO", "limit": 3 }
}
}'数据源
| 来源 | 年份 | 记录 | 描述 |
|---|---|---|---|
| 战略规划局机构API | 2026年3月 | 587 | BSP监管的金融机构(SharePoint REST API) |
| BSP FSAP API | 2026年3月 | 37834 | 具有地理坐标的金融服务访问点(SharePoint REST API) |
| 2024年人口普查 | 第973号公告 | 1756个地区 | 通过PSGC-MCP进行人口统计 |
| 巴黎圣日耳曼集团2025年第四季度出版物 | 2026年1月13日 | 1656个城市 | 地理代码和等级制度 |
最后同步时间:2026年3月12日。
已知数据问题
- 地理坐标质量。 37834个接入点记录中有411个的坐标在菲律宾境外。167默认为纽约州波基普西(41.60,-73.09),101默认为北卡罗来纳州大福克斯(47.93,-97.03),可能是地理编码工具的默认值。3个是合法的海外接入点(BDO香港)。其余140个分布在全球各地(地理编码错误)。所有记录都被清空,但保留用于文本查询的记录。
- 地理坐标精度。 BSP的地理编码分配的是城市或地区的中心点,而不是实际地址。在37423个具有有效坐标的接入点中,只有18975个唯一的坐标对存在。4917个接入点与10多个其他接入点共享一个坐标。最糟糕的情况是拉古纳卡兰巴的一个点上有79个接入点。
- 接入点不是物理分支。 BSP单独注册每个金融服务接入点。一家拥有3台自动取款机的银行分行可能会产生3-4条记录。这些数据衡量的是财务访问覆盖密度,而不是实体办公室数量。
- 马尼拉市区粒度。 BSP将马尼拉接入点标记为“马尼拉市”,而不是单个地区(Tondo、Sampaloc、Malate等)。这意味着马尼拉的14个城区(SubMun级PSGC实体)在
find_unbanked_areas即使这些地区存在接入点。接入点与马尼拉市实体相匹配(1380600000),而不是地区级代码。 - 机构PSGC比赛。 587所机构中有586所符合巴黎圣日尔曼大区市政法规(99.8%)。唯一一家无与伦比的机构是BPI汇款中心香港,这是一家地址为香港的海外办事处。
- 机构代码。 来源于BSP的SharePoint列表项
Id现场。只要BSP不重建列表,ETL运行稳定。不是BSP颁发的监管标识符。 - 状态字段。 BSP API不公开关闭状态。所有提取的机构都已标记
active已关闭的银行已从BSP的目录中完全删除。 - 人口为2024年人口普查。 时间点计数,而不是实时估计。快速增长的城市地区的实际人口可能要高得多。
- 机构名称碎片化。 FSAP数据产生9623个唯一的机构名称字符串,其中许多是同一家银行,但略有变化(缩写、拼写错误)。这
get_institution_footprint该工具使用模糊匹配来整合这些信息,这意味着对“BDO”的查询也将捕获客户办公室内的ATM安装(例如,“BDO UNIBANK INC-WHITE&CASE GLOBAL OPERATIONS CENTER MANILA LLP”)。这些是真正的BSP注册接入点,但可能会让只期望零售分行的用户感到惊讶。
相关项目
菲律宾公共数据MCP服务器套件的一部分:
- PSGC-MCP --菲律宾地理代码。从镇到地区的42000多个实体,2024年人口普查人口。与此服务器一起用于PSGC代码查找。
- ts MCP --DHSUD菲律宾房地产项目销售许可证验证。
- PH假期MCP --菲律宾假期日历
所有服务器都是免费的、公共的、只读的。数据来自菲律宾政府官方消息来源。
贡献和问题
发现数据错误、PSGC匹配边缘情况或接入点坐标错误?打开一个问题。上面的已知数据问题部分涵盖了最常见的问题,但BSP数据有自己的怪癖,问题列表是跟踪它们的最佳位置。
BSP会定期更新其目录。如果数据看起来过时,打开一个问题,它将被刷新。
数据管道
BSP网站从SharePoint列表中动态呈现其目录。我们直接查询SharePoint REST API,返回结构化JSON。这种方法优于抓取或PDF解析:我们得到HTML表没有显示的字段(传真号码、办公室计数、多种类型ID、地理坐标)。
1.获取机构
node scripts/fetch-bsp-api.js从587个机构中提取 _api/web/lists/getbytitle('Institutions')/items使用BSP的三层类型ID系统将每种类型分类为7个标准化类型 bank_type 价值观。输出 data/banks.json.
2.巴黎圣日耳曼俱乐部加入(机构)
node scripts/psgc-join.js模糊将总部地址与巴黎圣日耳曼城市代码进行匹配。策略:马尼拉大都会快速通道,从逗号分隔的地址部分提取候选地址,规范化(扩展Sta./Sto.,条形邮政编码),精确匹配,拼写变体(s/z交换),子字符串回退。结果:586/587匹配(99.8%)。使丰富 data/banks.json 到位。
3.获取接入点
node scripts/fetch-branches.js从以下位置获取37834个接入点 _api/web/lists/getbytitle('FSAP')/items。将标题字段拆分为机构/接入点名称。根据菲律宾边界框(4.5-21.5 lat,116-127 lng)验证地理坐标,取消411条界外记录。输出 data/branches.json.
4.PSGC连接(接入点)
node scripts/branch-psgc-join.js将城镇/省/地区文本字段与PSGC市政代码匹配。四种策略方法:NCR快速路径(11824)、直接归一化匹配(20501)、省/地区消歧(5401)、子字符串回退(53)。结果:37779/3779范围匹配(100%)。跳过55项海外记录。使丰富 data/branches.json 到位。
5.建立人口查找
node scripts/build-population-lookup.js从PSGC-MCP中提取1756个地区/省/市/直辖市的人口记录 data/population.json.
6.验证和部署
npm test
npm run typecheck
npm run deployETL是幂等的。每次运行都会覆盖之前的数据文件。部署前检查差异。
需要 PSGC-MCP 作为步骤2、4和5的兄弟目录。如果满足以下条件,则不需要开发 data/*.json 文件已存在。
检查更新
./scripts/check-updates.sh检查BSP自上次同步以来是否已更新其目录。
发展
git clone https://github.com/GodModeArch/ph-financial-access-mcp.git
cd ph-financial-access-mcp
npm install
npm run dev开发服务器启动时间 http://localhost:8787。将您的MCP客户端连接到 http://localhost:8787/mcp.
npm test # Run tests
npm run typecheck # TypeScript strict mode check项目结构
src/
index.ts # Cloudflare Worker entry, McpAgent class
tools.ts # 11 MCP tool definitions with Zod schemas
data.ts # Institution search, filter, stats functions
access-point-data.ts # Access point search, coverage, footprint functions
response.ts # Response envelope helpers
types.ts # TypeScript interfaces
data/
banks.json # 587 institutions (bundled into worker)
branches.json # 37,834 access points (bundled into worker)
population.json # 2024 Census population by area (1,756 records)
scripts/
fetch-bsp-api.js # Institution ETL from BSP SharePoint API
fetch-branches.js # Access point ETL from BSP FSAP SharePoint list
psgc-join.js # Institution address -> PSGC code matching
branch-psgc-join.js # Access point town/province -> PSGC code matching
build-population-lookup.js # Population data extraction
check-updates.sh # BSP update checker
test/
data.test.ts # Institution function tests
access-point-data.test.ts # Access point function tests建筑
使用持久对象在Cloudflare Workers上运行。所有数据在构建时都打包为静态JSON(总共2.5MB gzip)。运行时没有数据库,没有外部API调用。查询在内存中对捆绑的数据集执行。
建造于
亚伦·扎拉 --CTO分数 Godmode数码
该MCP源于人工智能代理对结构化、可查询的菲律宾银行数据的需求。BSP发布所有这些数据,但不是以机器可以轻松使用的格式。我们编写了ETL管道、PSGC地理富集和可查询的API层。数据是公开的。代码是食谱,托管实例是餐厅。
对于企业SLA、自定义集成或其他PH数据源: godmode.ph
许可证
麻省理工学院
