Query U.S. Census Bureau data, variables, and geography via MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Query U.S. Census Bureau data, variables, and geography via MCP. STDIO or Streamable HTTP.
Public Hosted Server: https://census.caseyjhand.com/mcp
8 tools covering the full Census data workflow β from dataset discovery and variable search through geography resolution and ranked comparisons:
| Tool | Description |
|---|---|
census_list_datasets | Browse available Census Bureau datasets (ACS5, ACS1, Population Estimates, Decennial, County Business Patterns, Economic Census, Nonemployer Statistics) with vintage years and dataset codes. |
census_list_geographies | List the geography levels supported by a dataset and year, with parent requirements and example FIPS values. |
census_search_variables | Keyword search across variable labels and concept groups. On ACS, returns estimate and margin-of-error codes together. |
census_get_variable | Fetch full metadata for one or more variable codes β label, concept, predicate type, universe, MOE sibling. |
census_list_predicate_values | List the codes a filter dimension accepts (EMPSZES, LFO, POPGROUP, NAICS2017β¦), from the dataset dictionary or a live wildcard enumeration. |
census_resolve_geography | Convert place names (e.g., "King County, WA") or street addresses to Census FIPS identifiers via TIGERweb and Census Geocoder. |
census_query_data | Query a Census dataset for variables at a specific geography. Returns estimates with MOE, suppression codes resolved to readable reasons, and predicate filtering for the business datasets. |
census_compare_geographies | Rank and compare variables across multiple geographies β all counties in a state, all states nationally, or a named set. Sorted table output, with the same predicate filtering. |
census_list_datasetsBrowse available Census Bureau datasets.
cbp), Economic Census (ecnbasic), and Nonemployer Statistics (nonemp)acs/acs5) are the values to pass to other toolsavailable_years is exhaustive, not a sample: any other year fails with year_not_available before a request goes out, naming the years that do work. It is narrower than what the Census API hosts β pep/charv reaches its 2020-2022 estimates through the YEAR filter inside the 2023 vintage, and the cbp/nonemp vintages left out reject the NAME column every query here sendscensus_search_variablesSearch Census variables by keyword.
NAICS2017 in cbptotal_matches indicates how many matched before the limitcensus_list_predicate_valuesList the codes a filter dimension accepts, so a predicates map can be written without guessing.
NAICS* and POPGROUP always publish one (thousands of codes β narrow them with query); on the current vintages EMPSZES, LFO, RCPSZES, TAXSTAT, and TYPOP publish none, so the live route is the only place their codes appeardec/ddhca declares 5,543 POPGROUP codes and publishes 2,996, cbp declares 6,694 NAICS2017 codes and publishes 2,003. The declared list is checked against the dataset's own published rows and the dead codes are dropped; source says whether that check ran and the notice says how many were withheld. A keyword that matched only withheld codes names them, so "total population" on dec/ddhca reports that 001 is declared and serves nothing rather than reading like a typoquery matches code and label; results are sorted by code and a truncated list is disclosed rather than passed off as completeecnbasic publishes TAXSTAT and TYPOP per industry, so within_naics scopes the enumeration β and the notice says the result is complete for that industry alone. A per-industry dimension is left unchecked for the same reason, since an unscoped check would withhold codes a scoped query does returncensus_resolve_geographyConvert place names and addresses to Census FIPS identifiers.
geography_type overrides itgeography_type. The value is the level's own Census API name, so it feeds geography_level unchangedcounty_fips pins a tract name to one county, since a tract name is unique only inside its county. Only county and tract sit within a county, so it restricts resolution to those two levels rather than being dropped on a layer that cannot apply itambiguous_name, with every candidate carrying the code resolving it would have returned, plus the state that separates same-named placesstate_fips (β parent_fips) and fips_summary (β geography_fips) ready to pass to other tools; a statistical area omits state_fips, since it can span several states and takes no parentcensus_query_dataQuery a Census dataset for one or more variables at a specific geography.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/census-mcp-server)<a href="https://allmcps.com/mcp/census-mcp-server"><img src="https://allmcps.com/api/badge/census-mcp-server?style=directory" alt="Census MCP Server on AllMCPs" /></a>