{
  "markdown": "# civic-library-mcp\n\n**An MCP server that gives AI agents clean, token-efficient access to US civic & property data — geocoding, census tracts, Opportunity Zones, ACS demographics, and FEMA flood zones — sourced entirely from free federal open data.**\n\nNo scraping, no paid keys for the core tools, no proprietary databases. Just the official sources (U.S. Census Bureau, U.S. Treasury CDFI Fund, FEMA), wrapped in a small set of well-described tools that return compact JSON instead of the bloated payloads most data MCPs dump into your context window.\n\nBuilt for developers working on **proptech, real-estate, fintech, civic tech, GIS, and housing research** with AI agents.\n\n---\n\n## Tools\n\n| Tool | What it does | API key? |\n|---|---|---|\n| `geocode_address` | US street address → lat/lng + state, county, and 2020 census tract GEOID | None |\n| `lookup_census_tract` | lat/lng → the 2020 census tract (with county/state) containing that point | None |\n| `check_opportunity_zone` | Is this address / point / tract in a designated Qualified Opportunity Zone? | None |\n| `get_tract_demographics` | ACS 5-Year indicators (income, population, home value, poverty rate, …) for a tract | Free Census key |\n| `check_flood_zone` | lat/lng → FEMA flood-hazard zone + whether it's a Special Flood Hazard Area | None |\n\nFour of the five tools work with **zero configuration**. Only `get_tract_demographics` needs a free Census API key (see below).\n\n---\n\n## Install\n\n### Claude Desktop / Cursor / any MCP client\n\nAdd to your MCP config (e.g. `claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"civic-library\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"civic-library-mcp\"],\n      \"env\": {\n        \"CENSUS_API_KEY\": \"your-free-census-key-optional\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add civic-library -- npx -y civic-library-mcp\n```\n\nThe `CENSUS_API_KEY` line is optional — leave it out and four of the five tools still work.\n\n### Census API key (only for demographics)\n\n`get_tract_demographics` calls the U.S. Census ACS Data API, which requires a free key. Get one in ~30 seconds at **<https://api.census.gov/data/key_signup.html>** and set it as `CENSUS_API_KEY` in the server's environment.\n\n---\n\n## Examples\n\n**Check whether a property is in an Opportunity Zone:**\n\n```jsonc\n// check_opportunity_zone({ \"address\": \"900 Camp St, New Orleans, LA 70130\" })\n{\n  \"is_opportunity_zone\": true,\n  \"tract_geoid_2010\": \"22071013400\",\n  \"designation_type\": \"Low-Income Community\",\n  \"round\": \"1.0\",\n  \"authority\": \"Tax Cuts and Jobs Act of 2017 (26 U.S.C. § 1400Z-1)\",\n  \"resolved_from\": \"address\",\n  \"source\": \"U.S. Treasury CDFI Fund (designated 2018-12-14)\"\n}\n```\n\n**Flood risk for a coordinate:**\n\n```jsonc\n// check_flood_zone({ \"latitude\": 29.9511, \"longitude\": -90.0715 })\n{\n  \"flood_zone\": \"X\",\n  \"zone_subtype\": \"0.2 PCT ANNUAL CHANCE FLOOD HAZARD\",\n  \"in_special_flood_hazard_area\": false,\n  \"zone_description\": \"Moderate-to-minimal risk (outside the 1% annual-chance floodplain).\",\n  \"source\": \"FEMA National Flood Hazard Layer\"\n}\n```\n\n**Tract demographics (needs a key):**\n\n```jsonc\n// get_tract_demographics({ \"tract_geoid\": \"22071013400\",\n//   \"fields\": [\"population\", \"median_household_income\", \"poverty_rate\"] })\n{\n  \"tract_geoid\": \"22071013400\",\n  \"tract_name\": \"Census Tract 134, Orleans Parish, Louisiana\",\n  \"acs_dataset\": \"ACS 5-Year 2023\",\n  \"population\": 2276,\n  \"median_household_income\": 41250,\n  \"poverty_rate\": 0.231\n}\n```\n\n---\n\n## A note on correctness: Opportunity Zones use 2010 census tracts\n\nOpportunity Zone designations are keyed to **2010** census tract boundaries, but the default Census geocoder returns **2020** tracts — and tract GEOIDs changed between the two vintages. A naive lookup that matches a 2020 GEOID against the OZ list will silently return wrong answers near any boundary that moved.\n\n`check_opportunity_zone` handles this correctly: it re-resolves the address/coordinate to its **2010** tract before matching. (You can see the difference — the same address can yield GEOID `…980000` from `geocode_address` and `…006202` from `check_opportunity_zone`.) If you pass `tract_geoid` directly, it's treated as a 2010 GEOID.\n\n---\n\n## Data sources & licensing\n\n| Data | Source | Notes |\n|---|---|---|\n| Geocoding & census tracts | [U.S. Census Bureau Geocoder](https://geocoding.geo.census.gov/) | Public domain |\n| Opportunity Zones | [U.S. Treasury CDFI Fund](https://www.cdfifund.gov/opportunity-zones) | Round 1 (2018) designations, 8,764 tracts, bundled |\n| Demographics | [U.S. Census ACS 5-Year](https://www.census.gov/data/developers/data-sets/acs-5year.html) | Public domain; free key required |\n| Flood zones | [FEMA National Flood Hazard Layer](https://www.fema.gov/flood-maps/national-flood-hazard-layer) | Public domain |\n\nAll underlying data is U.S. federal open data (public domain). This software is MIT-licensed.\n\nThe bundled Opportunity Zone list is regenerated with `npm run build:oz`.\n\n---\n\n## Roadmap\n\n- **OZ 2.0** — designations under the One Big Beautiful Bill Act (2025) once finalized/published.\n- **More ACS fields** — educational attainment, race/ethnicity, housing tenure, commute.\n- **County parcel / CAD lookups** — added per-county only where the source's terms of use permit automated access.\n- **Census place & ZIP geographies**, FEMA base flood elevations.\n\n---\n\n## Disclaimer\n\nThis tool surfaces public government data for informational purposes. It is **not** legal, financial, tax, insurance, or investment advice. Opportunity Zone, flood-zone, and demographic determinations should be confirmed against the official source of record before relying on them for any transaction. Data is provided \"as is\" with no warranty.\n\n## Contributing\n\nIssues and PRs welcome — especially additional federal open-data sources and ACS fields. Keep responses compact (token cost is a feature) and every data point attributed to its source.\n\n## License\n\nMIT © 2026 Adrian Cisneros\n",
  "bytes": 5972,
  "sha": "463685b2a1ef04bfa99a1c0823596cc6aec6bf619010a28f1db5db58088cffe3",
  "repo_slug": "adriancisnerosspeed-hub/civic-library-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_adriancisnerosspeed_hub_civic__d73e074c/readme"
}