Resolve US lat/lon to Census block FIPS, county, state, population, and FCC market codes via @pipeworx/mcp-fcc — credential-free
@pipeworx/mcp-fcc v latest — US Census/FCC reverse geocoding, credential-free
Install: npm install @pipeworx/mcp-fcc Transport: Library-style TypeScript export ({tools, callTool} — NOT stdio). Setup: copy src/index.ts out of node_modules, run with node --experimental-strip-types --no-warnings --input-type=module. API: geo.fcc.gov — keyless, no auth. Public FCC Census Block API.
3 tools
| Tool | Params | What it does |
|---|---|---|
census_block | {lat, lon, censusYear?} | 15-digit Census block FIPS + county/state FIPS + names + bounding box |
census_area | {lat, lon, censusYear?} | Block FIPS + county/state + 2020 block population + 10 FCC market-area codes |
county_for_point | {lat, lon} | Lightweight: just county FIPS/name + state FIPS/code/name |
Verified trace (14 calls, 100% success, p50=162ms)
census_block (White House, DC): Block FIPS 110019800001034, County FIPS 11001 "District of Columbia", State FIPS 11 code DC. Includes bounding box [-77.039, 38.895, -77.035, 38.899].
census_area (White House): Same FIPS + block_pop_2020: 10 (only 10 people live in the White House census block!). Plus 10 FCC market codes: AMT002, BEA013, BTA461, CMA008, EAG702, IVM008, MEA005, MTA010, PEA005, REA002.
county_for_point (White House): Lightweight — just {County: {FIPS: "11001", name: "District of Columbia"}, State: {FIPS: "11", code: "DC", name: "District of Columbia"}}.
census_block (Times Square NYC): FIPS 360610119001000, New York County, NY. Boundary condition detected — API returns message: "The coordinate lies on the boundary of multiple blocks, the block contains the clicked location is selected."
census_block (Rural Kansas): FIPS 200099711001191, Barton County, KS. census_area shows `block_pop_2020: 0` — uninhabited rural census block.
census_area (Downtown LA): Block pop 26, Los Angeles County (FIPS 06037), CA. Market codes: CMA002, MEA044, MTA002.
county_for_point (Miami Beach): Miami-Dade County (FIPS 12086), FL.
census_block with censusYear="2010": White House block FIPS changes to 110010062021031 — census blocks are redrawn each decade, different FIPS for same location across vintages.
census_block (Ocean — off coast): All FIPS fields null, status "OK" — graceful handling for water.
census_block (London, UK): All FIPS fields null, status "OK" — graceful handling for non-US coordinates. No error thrown.
census_block (Anchorage, AK): FIPS 020200011001035, Anchorage Municipality, AK — works for non-contiguous US.
census_block (Honolulu, HI): FIPS 150030039001001, Honolulu County, HI — works for Hawaii.
census_block (San Juan, PR): FIPS 721270006002004, San Juan Municipio, PR — Puerto Rico supported. State code PR, state FIPS 72.
Key gotchas
- ⚠️ `censusYear` defaults to "2020" — only accepts
"2010"or"2020". Census blocks are redrawn each decade, so the SAME coordinates yield DIFFERENT FIPS codes across vintages. - ⚠️ Non-US coordinates return null FIPS, NOT an error — status is still
"OK". Check for null FIPS to detect out-of-bounds. - ⚠️ Boundary conditions produce extra `messages` field — Times Square example: "coordinate lies on the boundary of multiple blocks". Use
showall=true(not exposed by this MCP wrapper) for full intersection list. - ⚠️ `census_area` response structure differs from `census_block` — area returns
{input, results: [{...}]}wrapper, block returns flat{Block, County, State, status}. - ⚠️ Missing required params throw synchronously — helpful error message: "Required argument 'lon' is missing or not a number."
- ⚠️ Unknown tool throws (not error object) —
Error: Unknown tool: .... - First call ~1010ms (TLS handshake to geo.fcc.gov), subsequent calls ~160ms.
- FCC market codes in census_area: AMT, BEA, BTA, CMA, EAG, IVM, MEA, MTA, PEA, REA, RPC, VPC —
{ "server": "@pipeworx/mcp-fcc", "version": "latest", "transport": "library-style", "tools": ["census_block", "census_area", "county_for_point"], "calls": 14, "success_rate": 1, "p50_ms": 162, "locations_tested": ["White House DC", "Times Square NYC", "Rural Kansas", "Downtown LA", "Miami Beach", "Anchorage AK", "Honolulu HI", "San Juan PR", "Atlantic Ocean", "London UK"], "key_data": { "whitehouse_block_pop": 10, "whitehouse_fips": "110019800001034", "rural_block_pop": 0, "timessquare_boundary": true, "london_null_fips": true, "pr_supported": true, "market_codes_count": 12 } }