MCP Server

zipexplore-mcp

io.github.andrew-sondgeroth/zipexplore-mcp

What this MCP does

Searches and compares US ZIP codes using demographic, housing, cost, weather, crime, education, healthcare, business, transit, tax, voting, and disaster data.

compare_zips
Side-by-side full profiles for 2–5 ZIP codes. Use when the user has finalists and needs to choose between them. Returns the same profile shape as get_zip_profile for each ZIP.
Input schema
{'type': 'object', 'title': 'compare_zipsArguments', 'required': ['zips'], 'properties': {'zips': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Zips'}}}
get_air_quality_profile
Detailed air quality data for one ZIP code. Use when get_zip_profile's air quality section isn't sufficient depth. Includes EPA AQS pollutant levels (PM2.5, PM10, ozone, NO2, SO2, CO) and AQI summary.
Input schema
{'type': 'object', 'title': 'get_air_quality_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_article
Returns the full prose of a specific ZipExplore research article. Use this for editing, fact-checking, detailed analysis, or when get_research summaries aren't enough. Valid slugs: disappearing-towns, hazard-premium, snap-economy, wealthy-retirees. Each article includes all body sections and methodology notes exactly as published.
Input schema
{'type': 'object', 'title': 'get_articleArguments', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'title': 'Slug'}}}
get_business_profile
Detailed business and employment data for one ZIP code. Use when get_zip_profile's business section isn't sufficient depth. Includes top industries, sector breakdowns, total establishments, employment, and annual payroll from Census BDS/CBP data.
Input schema
{'type': 'object', 'title': 'get_business_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_census_profile
Detailed Census / demographics data for one ZIP code. Use when get_zip_profile's demographics section isn't sufficient depth. Includes population, housing, income distribution, education attainment, economic indicators, internet access, and public assistance rates.
Input schema
{'type': 'object', 'title': 'get_census_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_cost_profile
Detailed cost of living data for one ZIP code. Use when get_zip_profile's cost section isn't sufficient depth. Includes fair market rents, housing cost burden, regional price indices, and affordability metrics.
Input schema
{'type': 'object', 'title': 'get_cost_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_crime_profile
Detailed crime data for one ZIP code. Use when get_zip_profile's crime section isn't sufficient depth. Includes violent crime rate, property crime rate, and data quality flags (coverage level, Bayesian shrinkage).
Input schema
{'type': 'object', 'title': 'get_crime_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_disaster_risk_profile
Detailed natural disaster risk data for one ZIP code. Use when get_zip_profile's disaster risk section isn't sufficient depth. Includes FEMA NRI overall risk score, individual hazard scores (hurricane, tornado, earthquake, wildfire, flood, etc.), and expected annual loss estimates.
Input schema
{'type': 'object', 'title': 'get_disaster_risk_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_education_profile
Detailed school data for one ZIP code. Use when get_zip_profile's education section isn't sufficient depth. Includes school counts, student-teacher ratios, graduation rates, per-pupil spending, Title I percentage, and budget breakdown (instruction vs. admin vs. capital). May reflect data from the nearest ZIP if no schools are in this ZIP.
Input schema
{'type': 'object', 'title': 'get_education_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_healthcare_profile
Detailed healthcare data for one ZIP code. Use when get_zip_profile's healthcare section isn't sufficient depth. Includes hospital count and ratings, nursing homes, beds per capita, primary care and mental health shortage area designations, pharmacy count, and urgent care count.
Input schema
{'type': 'object', 'title': 'get_healthcare_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_methodology
Returns ZipExplore's data interpretation guide: reasoning guardrails (associations vs. causes, small-ZIP noise, averages hiding distributions, editorial score weights, drawing conclusions about people from geographic data), quality flag definitions, known data limitations, coverage gap explanations, and per-domain vintage summary. Call this when you have questions about data quality, what a quality_flag code means, why a ZIP has no data, or how to reason carefully about scores and correlations.
Input schema
{'type': 'object', 'title': 'get_methodologyArguments', 'properties': {}}
get_research
Returns ZipExplore's published research articles — original data findings on topics including disaster risk vs. housing costs (the Hazard Premium), food insecurity in fully-employed communities (SNAP economy), economically declining towns vs. retirement communities, and income variation among America's oldest ZIP codes. Each entry includes the key finding, specific quantitative results, caveats, and a URL to the full article. Call this when a user asks about these topics or when published findings would add context to a live data lookup.
Input schema
{'type': 'object', 'title': 'get_researchArguments', 'properties': {}}
get_search_fields
Lists every field name, type, and description available for search criteria. Call this when you're unsure what field names to pass to search_zips, or when the user asks what data ZipExplore has.
Input schema
{'type': 'object', 'title': 'get_search_fieldsArguments', 'properties': {}}
get_tax_profile
Detailed tax data for one ZIP code. Use when get_zip_profile's tax section isn't sufficient depth. Includes state income tax, sales tax, property tax effective rates, excise taxes, and IRS income statistics.
Input schema
{'type': 'object', 'title': 'get_tax_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_transit_profile
Detailed public transit data for one ZIP code. Use when get_zip_profile's transit section isn't sufficient depth. Includes bus stop count, subway station count, rail station count, light rail count, ferry terminal count, total transit stops, transit commute percentage, and nearest subway/rail distances.
Input schema
{'type': 'object', 'title': 'get_transit_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_voting_profile
Detailed voting and political data for one ZIP code. Use when get_zip_profile's voting section isn't sufficient depth. Includes presidential election results, partisan lean, congressional and state legislative districts, and state officials.
Input schema
{'type': 'object', 'title': 'get_voting_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_weather_profile
Detailed climate data for one ZIP code. Use when get_zip_profile's climate section isn't sufficient depth. Includes annual/monthly temperature averages, precipitation, humidity, and nearest weather station info.
Input schema
{'type': 'object', 'title': 'get_weather_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
get_zip_centroids
Get the latitude/longitude centroid for one or more ZIP codes (max 200). Use when you need map coordinates for a set of ZIPs.
Input schema
{'type': 'object', 'title': 'get_zip_centroidsArguments', 'required': ['zips'], 'properties': {'zips': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Zips'}}}
get_zip_profile
Full location profile for one ZIP code across all 12 data domains: demographics, climate, tax, crime, cost of living, voting, education, healthcare, business, air quality, disaster risk, and transit. Use this to get detail on a ZIP after search, or when the user asks about a specific ZIP. For deeper data on one domain, use the domain-specific tools.
Input schema
{'type': 'object', 'title': 'get_zip_profileArguments', 'required': ['zip'], 'properties': {'zip': {'type': 'string', 'title': 'Zip'}}}
ping
Returns server status and tool/resource counts. Use this to verify the ZipExplore MCP connection is live.
Input schema
{'type': 'object', 'title': 'pingArguments', 'properties': {}}
reverse_geocode
Convert a latitude/longitude coordinate to a ZIP code. Use when the user provides an address or map coordinates rather than a ZIP code.
Input schema
{'type': 'object', 'title': 'reverse_geocodeArguments', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number', 'title': 'Lat'}, 'lon': {'type': 'number', 'title': 'Lon'}}}
search_zips
Find ZIP codes matching one or more criteria. Returns a ranked list with scores. Use this first when the user wants recommendations (e.g. "find a low-crime suburb near Denver"). Call get_search_fields first if you're unsure what field names to use. criteria: list of {"field": str, "level": "low"|"medium"|"high"} area_types: "CITY" | "SUBURB" | "SMALL_TOWN" | "RURAL" regions: "northeast" | "southeast" | "midwest" | "southwest" | "west"
Input schema
{'type': 'object', 'title': 'search_zipsArguments', 'required': ['criteria'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 10}, 'states': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'States', 'default': None}, 'regions': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Regions', 'default': None}, 'criteria': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Criteria'}, 'area_types': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Area Types', 'default': None}, 'minimum_completeness': {'type': 'number', 'title': 'Minimum Completeness', 'default': 0.7}}}
Added
get_transit_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_disaster_risk_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_air_quality_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_business_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_healthcare_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_education_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_voting_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_cost_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_crime_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_tax_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_weather_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_zip_centroids
Sept. 17, 2026, 12:40 p.m.
Added
reverse_geocode
Sept. 17, 2026, 12:40 p.m.
Added
get_census_profile
Sept. 17, 2026, 12:40 p.m.
Added
get_search_fields
Sept. 17, 2026, 12:40 p.m.
Added
compare_zips
Sept. 17, 2026, 12:40 p.m.
Added
get_zip_profile
Sept. 17, 2026, 12:40 p.m.
Added
search_zips
Sept. 17, 2026, 12:40 p.m.
Added
get_research
Sept. 17, 2026, 12:40 p.m.
Added
get_methodology
Sept. 17, 2026, 12:40 p.m.
Added
ping
Sept. 17, 2026, 12:40 p.m.
Added
get_article
Sept. 17, 2026, 12:40 p.m.

Arcgis Kinston

io.github.pipeworx-io/arcgis-kinston

Provides access to Kinston, North Carolina ArcGIS open geospatial layers, including schemas and SQL-like feature queries, alongsi…

Arcgis Kingston

io.github.pipeworx-io/arcgis-kingston

Provides access to Kingston, Ontario ArcGIS open geospatial layers, including schemas and SQL-like feature queries, alongside Pip…

Arcgis Lubbock

io.github.pipeworx-io/arcgis-lubbock

Provides access to Lubbock, Texas ArcGIS open geospatial layers, including schemas and SQL-like feature queries, alongside Pipewo…

Arcgis Marioncountyor

io.github.pipeworx-io/arcgis-marioncountyor

Provides access to Marion County, Oregon ArcGIS open geospatial layers, including schemas and SQL-like feature queries, alongside…

Arcgis Monocounty

io.github.pipeworx-io/arcgis-monocounty

Provides access to Mono County and Mammoth Lakes, California ArcGIS open geospatial layers, including schemas and SQL-like featur…

Arcgis Mckinney

io.github.pipeworx-io/arcgis-mckinney

Provides access to McKinney, Texas ArcGIS open geospatial layers, including schemas and SQL-like feature queries, alongside Pipew…

Arcgis Lakeland

io.github.pipeworx-io/arcgis-lakeland

Provides access to Lakeland, Florida ArcGIS open geospatial layers, including schemas and SQL-like feature queries, alongside Pip…

Arcgis Linncounty

io.github.pipeworx-io/arcgis-linncounty

Provides access to Linn County, Iowa ArcGIS open geospatial layers, including schemas and SQL-like feature queries, alongside Pip…