npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

psgc-mcp

v1.1.0

Published

Philippine Standard Geographic Code MCP Server - provides hierarchical geographic data for the Philippines

Readme

PSGC MCP Server

A Model Context Protocol (MCP) server that provides access to the Philippine Standard Geographic Code (PSGC) API, offering hierarchical geographic data for the Philippines.

Features

  • Complete Geographic Hierarchy: Access to island groups, regions, provinces, cities, municipalities, barangays, and districts
  • Search Capabilities: Find geographic entities by name across all levels
  • Code Validation: Validate PSGC codes and get complete hierarchy information
  • Real-time Data: Direct access to the official PSGC API
  • Type-safe: Built with TypeScript for reliable data structures

Installation

From NPM (Published Package)

npm install -g psgc-mcp

Configuration for MCP Clients

Cursor/Windsurf

Add to your MCP configuration file:

{
  "mcpServers": {
    "psgc-mcp": {
      "command": "npx",
      "args": ["-y", "psgc-mcp"],
      "transport": "stdio"
    }
  }
}

Claude Desktop

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "psgc-mcp": {
      "command": "npx",
      "args": ["-y", "psgc-mcp"],
      "transport": "stdio"
    }
  }
}

Local Development

  1. Clone the repository
  2. Install dependencies: npm install
  3. Build the project: npm run build
  4. Run locally: npm start

Available Tools

The server provides a comprehensive set of tools for accessing PSGC data, categorized by geographic level.

Island Group Tools

  • get_island_groups: List all island groups.
  • get_island_group: Get a specific island group by its code (e.g., "luzon").
  • get_island_group_regions: Get all regions within a specific island group.
  • get_island_group_provinces: Get all provinces within a specific island group.
  • get_island_group_districts: Get all districts within a specific island group.
  • get_island_group_cities: Get all cities within a specific island group.
  • get_island_group_municipalities: Get all municipalities within a specific island group.
  • get_island_group_cities_municipalities: Get all cities and municipalities within a specific island group.
  • get_island_group_sub_municipalities: Get all sub-municipalities within a specific island group.
  • get_island_group_barangays: Get all barangays within a specific island group.

Region Tools

  • get_regions: List all regions.
  • get_region: Get a specific region by its code (e.g., "130000000").
  • get_region_provinces: Get all provinces within a specific region.
  • get_region_districts: Get all districts within a specific region.
  • get_region_cities: Get all cities within a specific region.
  • get_region_municipalities: Get all municipalities within a specific region.
  • get_region_cities_municipalities: Get all cities and municipalities within a specific region.
  • get_region_sub_municipalities: Get all sub-municipalities within a specific region.
  • get_region_barangays: Get all barangays within a specific region.

Province Tools

  • get_provinces: List all provinces.
  • get_province: Get a specific province by its code (e.g., "012800000").
  • get_province_cities: Get all cities within a specific province.
  • get_province_municipalities: Get all municipalities within a specific province.
  • get_province_cities_municipalities: Get all cities and municipalities within a specific province.
  • get_province_sub_municipalities: Get all sub-municipalities within a specific province.
  • get_province_barangays: Get all barangays within a specific province.

District Tools

  • get_districts: List all districts.
  • get_district: Get a specific district by its code (e.g., "133900000").
  • get_district_cities: Get all cities within a specific district.
  • get_district_municipalities: Get all municipalities within a specific district.
  • get_district_cities_municipalities: Get all cities and municipalities within a specific district.
  • get_district_sub_municipalities: Get all sub-municipalities within a specific district.
  • get_district_barangays: Get all barangays within a specific district.

City Tools

  • get_cities: List all cities.
  • get_city: Get a specific city by its code (e.g., "012805000").
  • get_city_barangays: Get all barangays within a specific city.

Municipality Tools

  • get_municipalities: List all municipalities.
  • get_municipality: Get a specific municipality by its code (e.g., "012801000").
  • get_municipality_barangays: Get all barangays within a specific municipality.

Sub-Municipality Tools

  • get_sub_municipalities: List all sub-municipalities.
  • get_sub_municipality: Get a specific sub-municipality by its code (e.g., "133901000").
  • get_sub_municipality_barangays: Get all barangays within a specific sub-municipality.

Combined City/Municipality Tools

  • get_cities_municipalities: List all cities and municipalities.
  • get_city_municipality: Get a specific city or municipality by its code.
  • get_city_municipality_barangays: Get all barangays within a specific city or municipality.

Barangay Tools

  • get_barangays: List all barangays.
  • get_barangay: Get a specific barangay by its code (e.g., "012805001").

Search and Discovery Tools

  • search_by_name: Search for geographic entities by name across all levels.
  • get_hierarchy: Get the complete hierarchy for a specific PSGC code.
  • validate_code: Validate if a geographic code exists and get its details.

Available Resources

  • Static Data: Access pre-loaded static data for all geographic levels.
  • Dynamic Queries: Perform parameterized queries to fetch specific datasets.
  • Hierarchical Data: Use resource templates to retrieve complete hierarchical information for any given PSGC code.

Available Templates (Prompts)

  • Common Queries: Use pre-defined prompts for common geographic questions (e.g., "What is the capital of [province]?").
  • Guided Discovery: Interactive prompts to help you explore the geographic hierarchy.
  • Data Validation: Prompts to validate PSGC codes and geographic names.

Usage Examples

Get All Regions

{
  "tool": "get_regions",
  "arguments": {}
}

Get Provinces in a Region

{
  "tool": "get_provinces",
  "arguments": {
    "region_code": "130000000"
  }
}

Search by Name

{
  "tool": "search_by_name",
  "arguments": {
    "query": "Manila",
    "type": "city"
  }
}

Get Complete Hierarchy

{
  "tool": "get_hierarchy",
  "arguments": {
    "code": "133900000"
  }
}

API Reference

The server connects to the official PSGC API at https://psgc.gitlab.io/api/.

PSGC Code Format

PSGC codes follow a hierarchical format:

  • Island Groups: 010000000, 020000000, 030000000
  • Regions: 130000000 (NCR), 140000000 (CAR), etc.
  • Provinces: 133900000 (Manila), 137400000 (Cebu), etc.
  • Cities/Municipalities: 133903000 (Manila City), 137404000 (Cebu City), etc.
  • Barangays: 133903001 (Barangay 1, Manila), etc.

Development

Prerequisites

  • Node.js 18 or higher
  • npm or yarn

Setup

git clone https://github.com/your-username/psgc-mcp.git
cd psgc-mcp
npm install

Build

npm run build

Development Mode

npm run dev

Testing

npm test

Inspect with MCP Inspector

npm run inspect

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes
  4. Add tests for new functionality
  5. Run tests: npm test
  6. Commit your changes: git commit -am 'Add feature'
  7. Push to the branch: git push origin feature-name
  8. Submit a pull request

License

MIT License - see LICENSE file for details.

Support

For issues and questions, please open an issue on the GitHub repository.