Skip to content
Agentmart
Submit a tool

PH Civic Data

PH civic data as MCP tools: the full PSA OpenSTAT catalog, hazards, procurement.

Connector by xmpuspus · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 5
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/xmpuspus-ph-civic-data-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

PH civic data as MCP tools: the full PSA OpenSTAT catalog, hazards, procurement. 41 tools.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
41 read · 0 write · 0 deleteRead-only
Secrets
1 (API keys, tokens or passwords)
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 41

Read from the source code; the running server may list different tools.

Read 41 · Look things up without changing anything.

  • assess_area_risk
  • browse_election_results
  • browse_psa_catalog
  • compare_areas
  • describe_psa_dataset
  • flag_infra_anomalies
  • get_active_typhoons
  • get_air_quality
  • get_area_profile
  • get_data_freshness
  • get_earthquake_bulletin
  • get_election_return
Show 29 more tools
  • get_flood_forecast
  • get_health_indicators
  • get_historical_typhoons_ph
  • get_inflation_stats
  • get_infra_project
  • get_labor_stats
  • get_latest_earthquakes
  • get_location_hierarchy
  • get_official_gazette_feed
  • get_population_stats
  • get_poverty_stats
  • get_procurement_summary
  • get_solar_and_climate
  • get_usgs_earthquakes_ph
  • get_vegetation_index
  • get_volcano_status
  • get_weather_alerts
  • get_weather_forecast
  • get_world_bank_indicator
  • list_admin_units
  • list_pagasa_advisory_files
  • query_psa_dataset
  • resolve_ph_location
  • search_hdx_datasets
  • search_infra_projects
  • search_procurement
  • search_psa_catalog
  • search_psic_codes
  • summarize_infra_spending

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • PAGASA_API_TOKEN

Files it touches

  • Any path the agent passes to its tools

Tools (41)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • assess_area_riskMulti-hazard risk snapshot for a placeread-only

    Multi-hazard risk assessment combining PHIVOLCS + PAGASA. Makes parallel upstream calls to PHIVOLCS (earthquakes, volcano alert levels) and PAGASA (active typhoons, weather alerts). Expect 3-6 second response time. earthquake_risk_level is a heuristic reading of recent seismic activity, never an official PHIVOLCS hazard assessment. Examples: assess_area_risk("Manila") assess_area_risk("Batangas") On failure: this tool never raises. A failed PHIVOLCS or PAGASA sub-call shows up as a caveats entry naming the source, and the other sources still report. data_status is "success" when every s…

  • browse_election_resultsBrowse the COMELEC 2025 election results treeread-only

    Walk the COMELEC 2025 election results tree: region down to precinct. Starts at the 20 regions when `code` is "0", the default. Pass a child's `code` from the response to go one level deeper. A barangay's children are its precincts, since the geography tree stops at the barangay level and precincts sit in a separate family. Examples: browse_election_results() the 20 regions browse_election_results(code="R001000") provinces of Region I browse_election_results(code="2801000") barangays of Adams, Ilocos Norte browse_election_results(code="2801001") precincts of one …

  • browse_psa_catalogBrowse the PSA OpenSTAT catalogread-only

    List one level of the PSA OpenSTAT statistical catalog. OpenSTAT publishes roughly 2,900 tables across 27 subjects. This walks that tree one level at a time, so an agent can find a dataset without guessing a table id. A `dataset` entry is a `.px` table. Pass its `path` to describe_psa_dataset before calling query_psa_dataset. Folder depth varies by subject, so keep browsing until entries come back as datasets. Examples: browse_psa_catalog() the 27 top-level subjects browse_psa_catalog("1F") one level into the Poverty subject browse_psa_catalog("1F/FY") the Full Year Pov…

  • compare_areasCompare civic indicators across placesread-only

    Compare civic indicators for two to five Philippine places, side by side. Calls get_area_profile for each place and builds one row per place, so an agent does not have to call the profile tool once per place and merge the results itself. locations needs 2 to 5 entries. metrics, when given, must come from a fixed allowlist of eight names, and it defaults to all eight. format is "json" or "csv". "csv" adds a CSV string under `export`. Examples: compare_areas(["Cebu City", "Davao City"]) compare_areas(["Cebu City", "Davao City"], metrics=["population"]) On failure: a rejected request, such…

  • describe_psa_datasetDescribe a PSA OpenSTAT datasetread-only

    Read the dimensions and valid value codes of one PSA OpenSTAT dataset. Call this before query_psa_dataset. The query tool needs an explicit value code for every dimension, and those codes live here. total_cells is the size of the full cube. A query must select down to max_cells_per_query or fewer, so pick explicit codes per dimension. Examples: describe_psa_dataset("1F/FY/0241F3DF013.px") dimensions and value codes for one table On failure: data_status is "invalid_request" for a rejected argument and "unavailable" for an OpenSTAT outage. A path that is not a `.px` dataset sets validatio…

  • flag_infra_anomaliesFlag infrastructure spending anomaliesread-only

    Flag PhilGEPS infrastructure projects that warrant further review by cross-referencing PHIVOLCS earthquakes and PAGASA typhoon footprints. This tool emits heuristic anomaly indicators, not accusations. Every flagged item ships with the rule that fired and a disclaimer noting that patterns may have legitimate explanations. Heuristic rules: - duplicate_titles_same_agency: same agency files multiple notices with effectively identical titles (case-insensitive) within the window - high_cost_no_published_progress: cost_php exceeds min_cost_php. The PhilGEPS open listing publishes no progress d…

  • get_active_typhoonsActive tropical cyclones in the PARread-only

    Get active tropical cyclones in/near the Philippine Area of Responsibility (PAR). Returns an empty list when no cyclone is active. This tool parses the live PAGASA bulletin page with regular expressions. A bulletin wording change can miss a cyclone, but the "no active" state itself is reliably detected. Examples: get_active_typhoons() # only call form, no arguments On failure: When the PAGASA bulletin page is unreachable, this tool returns data_status "unavailable", upstream_error: true, results: [], and the real error in caveats. That shape never matches a genuine "no …

  • get_air_qualityAir quality at a Philippine locationread-only

    Real-time air quality for a Philippine city via Open-Meteo (no API key). Returns PM2.5, PM10, CO, NO2, SO2, and O3, plus European AQI and US AQI with category interpretation. Covers about 80 major PH cities through a local coordinate table. measured_at is always UTC, never Asia/Manila time. Examples: get_air_quality("Manila") # current readings for Metro Manila get_air_quality("Cebu City") # current readings for Cebu City get_air_quality("Davao") # current readings for Davao City On failure: a location not in the coordinate table returns data_status "invalid_request", with v…

  • get_area_profileOne-call civic profile for a placeread-only

    One-call correlated civic profile for a Philippine location. Resolves the place once to its PSA Standard Geographic Code, then composes demographics (population, poverty), economy (regional inflation, national labor), procurement activity, multi-hazard risk, and the short-range weather outlook — in a single agent turn instead of eight. Adds derived cross-source context (e.g. infrastructure notices per 100k residents) so the caller does not have to normalize raw counts itself. Examples: get_area_profile("Cebu City") city-level demographics, hazard, weather get_area_profile("NCR") …

  • get_data_freshnessServer health and data-source catalogread-only

    Server health and data-source catalog probe. Doubles as the version and health endpoint: returns server_version so an agent can confirm which release it is talking to. Also returns the full upstream-source catalog: cache TTLs, freshness expectations, and licenses. Use it to judge whether a stale cached response is fine or a re-fetch is needed. Examples: get_data_freshness() # the only call, it takes no arguments On failure: this tool calls no upstream itself, so it always returns a dict. source_health is a process-local, in-memory registry, not a database. It starts empty on a cold proce…

  • get_earthquake_bulletinPHIVOLCS earthquake bulletinread-only

    Get the full bulletin for a PHIVOLCS earthquake event. Parses the bulletin page PHIVOLCS publishes for one event: magnitude, depth, location, date and time, and per-municipality intensity reports. Give the bulletin_url a prior get_latest_earthquakes call returned. A hand-built or off-host URL is refused before any fetch is attempted. Examples: get_earthquake_bulletin("https://phivolcs.dost.gov.ph/index.php") # real bulletin URL shape On failure: an empty, malformed, or non-PHIVOLCS bulletin_url, or a 404 on the page itself, returns a dict with url, source, caveats, and data_retrieved_at …

  • get_election_returnCOMELEC 2025 precinct election returnread-only

    One precinct's official vote tally from the COMELEC 2025 archive. Give the 8-digit precinct code from browse_election_results. Returns every national and local contest counted at that precinct, with each candidate's vote count and share. Examples: get_election_return("28010001") Adams, Ilocos Norte, precinct 0001 On failure: a code that is not 8 digits gives validation_error true and data_status "invalid_request", with no request sent. A code the archive does not recognize (a 403 body carrying its AccessDenied marker) gives the same shape. A body missing 'information', where 'national' …

  • get_flood_forecastRiver flood forecast for a Philippine locationread-only

    Daily river discharge forecast for a Philippine place, from Open-Meteo's GloFAS model. Returns a daily river_discharge_m3s series for the nearest river cell to the resolved location, plus its max and min bounds, in cubic meters per second. This is a model estimate, not a gauge reading, so treat it as one signal among many for flood risk. Examples: get_flood_forecast("Cagayan de Oro") # 7-day default forecast get_flood_forecast("Marikina", forecast_days=14, past_days=3) # 14 days ahead, 3 days back On failure: an unresolved location, or a forecast_days or past_d…

  • get_health_indicatorsPhilippine health indicatorsread-only

    National health indicators from PSA OpenSTAT (subject 1D). With no argument, returns the curated national headline set: maternal mortality ratio and total fertility rate. Pass a free-text `indicator` to fuzzy-match any table published under the Health subject. The available list is browse-discovered, never hardcoded. Examples: get_health_indicators() maternal mortality ratio and fertility rate get_health_indicators(indicator="fertility") one matching table On failure: a catalog browse failure sets data_status "unavailable" and upstream_error true, with an empty indic…

  • get_historical_typhoons_phHistorical typhoon tracks through the PARread-only

    Historical tropical cyclone tracks that passed through the Philippine AOR. Sourced from NOAA IBTrACS (International Best Track Archive), the authoritative global archive for tropical cyclone tracks. Filtered to the Western Pacific basin and coordinates inside the Philippine Area of Responsibility, aggregated per storm. The result streams the source CSV row by row and returns the most recent storms that crossed the PAR, sorted by start time. Returns peak intensity, minimum pressure, and track period. Examples: get_historical_typhoons_ph() # last 3 years, up to 30 storms …

Show 26 more tools
  • get_inflation_statsPhilippine consumer-price inflationread-only

    Headline consumer-price inflation (year-on-year, all items) from PSA. Source: PSA OpenSTAT Consumer Price Index, 2018-based. The tool discovers the current CPI series by text, never a hardcoded table id, and returns the most recently published month's year-on-year change. PSA publishes with a lag, so the reported period is the latest one PSA has, not always the current month. Examples: get_inflation_stats() national headline inflation, latest month get_inflation_stats(area="NCR") one region On failure: every failure, including an area name PSA does not list, sets data_stat…

  • get_infra_projectInfrastructure notice detailread-only

    Return the full record for one infrastructure project by project_id. This tool looks up project_id inside the same latest ~100-notice PhilGEPS window search_infra_projects reads. An id from an older window returns matched: false, not an error, because the window has already moved on. Examples: get_infra_project("PHILGEPS-INF-003") get_infra_project("DOES-NOT-EXIST") On failure: an empty project_id or a project missing from the current window both return matched: false with a caveat, no upstream_error, and no data_status. A PhilGEPS fetch failure returns matched: false, data_status "unav…

  • get_labor_statsPhilippine labor-force indicatorsread-only

    Key labor-force indicators from the PSA Labor Force Survey. Returns labor-force participation, employment, unemployment, and underemployment rates for the latest published reference period. The PSA key-indicator series is national only. Passing `region` does not filter the figure. It only adds an explanatory caveat, because this table has no regional breakdown. Examples: get_labor_stats() national rates, latest reference period get_labor_stats(region="Cebu") same national rates, plus a caveat On failure: an OpenSTAT discovery or query failure sets data_status "unavailable…

  • get_latest_earthquakesLatest PHIVOLCS earthquakesread-only

    Get the latest earthquake events from PHIVOLCS. Reads the live PHIVOLCS earthquake list, the same table shown at earthquake.phivolcs.dost.gov.ph. Give center_lat, center_lon, and radius_km together to filter events near one place, and each matched event then carries a distance_km field. Give all three together, or leave out all three. Examples: get_latest_earthquakes() latest events, default filters get_latest_earthquakes(min_magnitude=4.0, limit=10) strong events only get_latest_earthquakes(center_lat=14.5995, center_lon=120.9842, radius_km=50) near Mani…

  • get_location_hierarchyFull PSGC hierarchy for a placeread-only

    Return the full chain region -> province -> city/municipality -> barangay for one PSGC code. This tool checks that psgc_code is well-formed before it sends any request. A malformed code never reaches the network. An unknown but well-formed code, or a PSGC mirror outage, both produce an empty chain instead of a match. Check the fields named below to tell the two apart. Examples: get_location_hierarchy("072217000") Cebu City, chain walks up through province and region get_location_hierarchy("999999999") well-formed but unknown code get_location_hierarchy("not-a-code") malformed, rej…

  • get_official_gazette_feedOfficial Gazette RSS feedread-only

    Latest issuances from the Official Gazette of the Republic of the Philippines. Reads the government's own RSS feed of proclamations, memorandum circulars, and other issuances, ten items per page, newest first. Examples: get_official_gazette_feed() # page 1, the newest 10 issuances get_official_gazette_feed(page=2) # the next 10 issuances On failure: a page outside 1 to 50 returns data_status "invalid_request" with validation_error true and no fetch attempted. A Cloudflare block page, the only other response this host sends on a bad call, returns data_status "unavailable" wit…

  • get_population_statsPhilippine population statisticsread-only

    Population from the PSA Census of Population, discovered live on OpenSTAT. Defaults to the latest census PSA publishes: the 2024 Census of Population, reference date 2024-07-01, as of 2026-09. Pass `year` for an older census (2010, 2015, 2020). Every result names its census, reference date and geography level, and for the 2024 tables the PSGC code PSA keyed the row on. Examples: get_population_stats() national total, latest census get_population_stats(region="NCR") one region, province or HUC by PSA label get_population_stats(region="Cebu", year=2020) …

  • get_poverty_statsPhilippine poverty incidenceread-only

    Poverty incidence from the PSA Full Year Poverty Statistics table. PSA publishes this once a year, with a lag. As of 2026-09 the latest published year is 2023. The tool discovers the current table live, so a later release shows up without a code change. It also returns the subsistence incidence when PSA publishes both tables for the same year. Examples: get_poverty_stats() national poverty incidence, latest year get_poverty_stats(region="Bicol") one region, PSA label get_poverty_stats(region="NCR") National Capital Region On failure: a discovery failure, a missin…

  • get_procurement_summarySummarize PhilGEPS procurementread-only

    Aggregate procurement statistics over the latest notices cached from PhilGEPS. This tool aggregates the same latest ~100-notice window search_procurement reads (6h cache). rules_evaluated names which breakdowns ran, by_mode and by_region. rules_not_computable explains why total_value_php stays null: PhilGEPS open notices do not publish approved budget amounts. Examples: get_procurement_summary() get_procurement_summary(agency="DPWH", year=2025) On failure: data_status "unavailable", upstream_error true, totals zero and by_mode/by_region/top_agencies empty, with the real PhilGEPS error i…

  • get_solar_and_climateSolar irradiance and climate at a pointread-only

    Daily solar irradiance and climate variables from NASA POWER for any coordinate. Returns daily solar irradiance, 2m temperature, corrected precipitation, and 2m wind speed, in kWh per m2, Celsius, mm, and m per second. Useful for solar-site screening, farm planning, and historical climate checks. Examples: get_solar_and_climate(14.5995, 120.9842) # Manila, last 14 days get_solar_and_climate(14.5995, 120.9842, "2026-04-01", "2026-04-02") # a fixed 2-day window On failure: an upstream fetch failure or a non-object response body returns data_status "unavailabl…

  • get_usgs_earthquakes_phUSGS earthquakes near the Philippinesread-only

    Philippine-region earthquakes from USGS, cross-reference to PHIVOLCS. Returns events inside the PH bounding box (lat 4..22, lng 115..130) that USGS catalogs, including international-standard Mww/Mwc magnitudes and depth solutions. Complements PHIVOLCS with global-network analysis. Give center_lat, center_lon, and radius_km together to filter to one place, and each matched event then carries a distance_km field. Give all three together, or leave out all three. Examples: get_usgs_earthquakes_ph() last 30 days, magnitude 4.0+ get_usgs_earthquakes_ph(start_date="…

  • get_vegetation_indexMODIS vegetation index at a pointread-only

    NASA MODIS MOD13Q1 NDVI and EVI vegetation index at any coordinate. NDVI (Normalized Difference Vegetation Index) ranges -1 to 1. Higher values indicate denser healthy vegetation. EVI is more sensitive in high-biomass areas. The composite period is 16 days at 250m resolution. Useful for farm monitoring, deforestation tracking, and drought checks. Examples: get_vegetation_index(15.58, 121.0) # last ~90 days at a point in Isabela get_vegetation_index(15.58, 121.0, "2026-08-01", "2026-08-15") # a fixed 15-day window On failure: both MODIS bands failing returns…

  • get_volcano_statusPhilippine volcano alert levelsread-only

    Get current alert level for Philippine volcanoes. Reads the WOVODAT bulletin list PHIVOLCS publishes for its monitored volcanoes: Mayon, Taal, Kanlaon, Bulusan, Pinatubo, Hibok-Hibok, and Parker. When one volcano's bulletin fetch fails, that entry carries upstream_error true and a caveat with the real error, not a null alert_level. Examples: get_volcano_status() all monitored volcanoes, one call get_volcano_status("Mayon") one volcano by name get_volcano_status("Taal") On failure: WOVODAT list unreachable or empty gives data_status "unavailable", upstream_error true, result…

  • get_weather_alertsPAGASA weather alertsread-only

    Get active PAGASA weather alerts and advisories. The PAGASA homepage embeds alert names such as "Heavy Rainfall Warning" in its navigation menu and breadcrumbs, as well as in real active-warning sections. This tool reliably detects the "No Active Warnings" state, but it cannot yet isolate a real active warning from that navigation text. To avoid a fabricated advisory, this tool returns a bare empty list only for the confirmed "no active warnings" marker. For real-time advisories, call bagong.pagasa.dost.gov.ph directly. Examples: get_weather_alerts() no region argument get_w…

  • get_weather_forecastPhilippine weather forecastread-only

    Get the weather forecast for a Philippine location. Uses the PAGASA TenDay API when PAGASA_API_TOKEN is set, and falls back to Open-Meteo when the token is absent or the PAGASA call fails. This tool sets no `data_status` field on a success or an unknown-location result. Check `data_source` and `caveats` instead. Examples: get_weather_forecast("Manila") 3-day default forecast get_weather_forecast("Cebu City", days=2) 2-day forecast get_weather_forecast("Wakanda") unknown location, no coordinates found On failure, a location with no known coordinates returns day…

  • get_world_bank_indicatorWorld Bank indicator for the Philippinesread-only

    World Bank macroeconomic and social indicator for the Philippines. Accepts a World Bank indicator code, such as "NY.GDP.MKTP.CD", or a friendly alias, such as "gdp", "poverty_ratio", "inflation", or "urban_population_pct". The tool checks the indicator code shape before it reaches the URL, so a bad value cannot redirect the request to another country's data. Examples: get_world_bank_indicator("gdp") # GDP, latest 20 years get_world_bank_indicator("NY.GDP.MKTP.CD", per_page=5) # same indicator, 5 years get_world_bank_indicator("poverty_ratio") # pov…

  • list_admin_unitsList Philippine administrative unitsread-only

    Browse children of a PSGC node, or top-level regions when parent_code is None. An unrecognized parent_code or level filter matches no children and returns an empty list. This tool never returns validation_error. A malformed argument degrades to an empty result instead of a failure. Examples: list_admin_units() top-level regions list_admin_units(parent_code="072200000") children of Cebu province list_admin_units(level="city-municipality", limit=10) first 10 cities and municipalities On failure, only a PSGC API outage returns a failure en…

  • list_pagasa_advisory_filesPAGASA public advisory, bulletin, and storm surge filesread-only

    List PAGASA public PDF files from a pubfiles directory listing, newest first. Reads the nginx directory index PAGASA publishes at pubfiles.pagasa.dost.gov.ph/tamss/weather/<kind>/ and returns each PDF's name, URL, last-modified time, and size. This tool returns file URLs only, never PDF bytes, so fetch a PDF yourself if you need its contents. Examples: list_pagasa_advisory_files() latest weather advisories list_pagasa_advisory_files(kind="bulletin", limit=5) 5 newest cyclone bulletins list_pagasa_advisory_files(kind="stormsurge") storm surge fo…

  • query_psa_datasetQuery a PSA OpenSTAT datasetread-only

    Run one bounded query against a PSA OpenSTAT dataset. Every dimension needs an explicit list of value codes from describe_psa_dataset. That is a hard requirement, not a convention. PXWeb expands an unselected dimension to all of its values, and PSA answers the resulting full-cube request with an HTTP 403. PSA writes a missing cell as "..", and those come back as null, never zero. Examples: # one dataset, every dimension given an explicit code list query_psa_dataset( "1F/FY/0241F3DF013.px", {"Year": ["2"], "Major Island Group": ["0", "2"], "Among Families/Population": […

  • resolve_ph_locationResolve a Philippine place name to PSGCread-only

    Fuzzy-resolve a Philippine place name to its canonical PSGC record. Handles common nicknames directly, such as "QC", "Gensan", "CDO", and "Metro Manila". An ambiguous name such as "San Juan" still returns one best match, plus an `alternatives` list of the other candidates. This tool sets no `data_status` field on any path. Check `matched` and `upstream_error` instead. Examples: resolve_ph_location("Cebu City") exact city match resolve_ph_location("QC") nickname resolves to Quezon City resolve_ph_location("San Juan") ambiguous name, returns alternatives On failure, a clean n…

  • search_hdx_datasetsSearch HDX for Philippine humanitarian datasetsread-only

    Search HDX for Philippine humanitarian datasets by keyword. Calls the CKAN `package_search` action filtered to the Philippines country group and returns matching datasets, most recently modified first, each with its own license and up to 20 resources. Examples: search_hdx_datasets("flood") datasets matching "flood" search_hdx_datasets("food prices", rows=5) 5 most recently modified matches On failure: an empty query, a query over 200 characters, a query with a control character, or a rows value outside 1 to 50 gives validation_error true and data_status "invalid…

  • search_infra_projectsSearch infrastructure noticesread-only

    Search Philippine government infrastructure projects. Backed by PhilGEPS open notice listing filtered for infra-related work (construction / road / bridge / flood control / drainage / school building / civil works). Source: https://www.philgeps.gov.ph/. Approved budget amounts are not published in the open notice listing, so cost_php is null in most records. min_cost_php almost never matches, because the open listing omits approved budget for nearly every record. The DPWH transparency portal API is currently blocked by Cloudflare and not used. Examples: search_infra_projects(keyword="flood…

  • search_procurementSearch PhilGEPS procurement noticesread-only

    Search PH government procurement from PhilGEPS open data. Note: the PhilGEPS public portal does not expose server-side search for external clients, so this tool fetches the latest ~100 bid notices and filters them in-memory. Data is cached 6 hours. Keyword/agency/region filters are applied client-side (case-insensitive substring match). Examples: search_procurement(keyword="flood") search_procurement(keyword="", agency="DPWH", limit=10) On failure: returns {results: [], upstream_error: true, data_status: "unavailable", caveats: [...]} instead of a bare list, so an outage is never read a…

  • search_psa_catalogSearch the PSA OpenSTAT catalogread-only

    Find a PSA OpenSTAT dataset by keyword, without browsing level by level. Matches a case-insensitive substring against every dataset title and path in the catalog. The first call after a cold start walks the whole ~2,900-table tree and can take a few minutes. The flattened index then caches for 24 hours, so a later search answers from memory. Examples: search_psa_catalog("fertility") datasets with "fertility" in the title or path search_psa_catalog("poverty incidence", limit=5) at most 5 matches On failure: data_status is "invalid_request" for an empty keyword or a bad li…

  • search_psic_codesPSIC industrial classification searchread-only

    Find a PSIC code by description keyword or by code prefix. Matches a query of only digits against the PSIC code prefix. Matches any other query by whole-word text against the class description, case-insensitive. PSA publishes the full table (roughly 1,360 rows) on one page, so the first call fetches and caches it for 24 hours. Examples: search_psic_codes("rice") every description with "rice" as a whole word search_psic_codes("0111") every code that starts with "0111" search_psic_codes("mining", limit=5) at most 5 matches On failure: data_status is "invalid_req…

  • summarize_infra_spendingSummarize infrastructure spendingread-only

    Aggregate infrastructure procurement statistics over the latest PhilGEPS window. This tool aggregates the same infra-keyword-matched notice window search_infra_projects reads (cached 6h). rules_evaluated names which breakdowns ran, today by_category and by_region. rules_not_computable names by_funding_source, retired to an always-empty dict because PhilGEPS notices carry no funding source field. sample_size and sufficient_for_per_capita flag whether the window, today under the 500-notice threshold, is large enough for a per-100k rate. Examples: summarize_infra_spending() summarize_infra_…

Signals

Stars
5
Forks
2
Open issues
1
Weekly downloads
70
Last commit
Sep 4, 2026 (1 month ago)
Last release
Sep 4, 2026 (1 month ago)
Last package publish
Sep 4, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.xmpuspus/ph-civic-data-mcp
Version
0.8.0
Auth
API key
Packages
pypi ph-civic-data-mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from xmpuspus

Cite this page

PH Civic Data MCP server. Agent Mart. https://agentmart.dev/connectors/xmpuspus-ph-civic-data-mcp (last updated 2026-10-24)