cyanheads avatar

Fcc Broadband Mcp Server

cyanheads/fcc-broadband-mcp-server

Wraps the FCC's broadband deployment and coverage APIs for address-level availability lookups, census block geocoding, and digital divide analysis across US geographies. The nine tools cover block-to-FIPS conversion, provider search by coordinates or holding company, coverage summaries at state/county/congressional district/tribal land levels, and comparative ranking by unserved population. Speed thresholds go up to gigabit, with filters for technology type and urban/rural/tribal segments. Includes BDC bulk download manifests for researchers who need raw extracts. Built for BEAD program eligibility work, broadband equity research, and ISP competitive analysis where you need FCC Form 477 or BDC data without writing your own API client.

GitHub stars
1
tools
9
transport
STDIO, HTTP
env vars
11
last updated
Nov 3, 2026

Install

From registry metadata
$ npx add-mcp https://fcc-broadband.caseyjhand.com/mcp --name fcc-broadband

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http fcc-broadband https://fcc-broadband.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 9 tools

Verified live against the running server on Nov 6, 2026.

fcc_geocode_blockConverts a latitude/longitude coordinate to a 15-digit census block FIPS code, plus county FIPS, county name, state FIPS, state code, and state name. This is the required prerequisite for fcc_search_availability since the broadband dataset is indexed by census block, not addre...2 params

Converts a latitude/longitude coordinate to a 15-digit census block FIPS code, plus county FIPS, county name, state FIPS, state code, and state name. This is the required prerequisite for fcc_search_availability since the broadband dataset is indexed by census block, not addre...

Parameters* required
latitude*number
Latitude of the location in decimal degrees (e.g., 47.6062 for Seattle, WA). Must be within the continental US, Alaska, Hawaii, or US territories.
longitude*number
Longitude of the location in decimal degrees (e.g., -122.3321 for Seattle, WA). Negative for western hemisphere.
fcc_search_availabilityQueries broadband providers and advertised speeds at a census block from FCC Form 477 data (as of June 2021). Answers "which ISPs serve this location and what speeds do they offer?" — the core tool for address-level broadband lookup. Requires a 15-digit census block FIPS code;...4 params

Queries broadband providers and advertised speeds at a census block from FCC Form 477 data (as of June 2021). Answers "which ISPs serve this location and what speeds do they offer?" — the core tool for address-level broadband lookup. Requires a 15-digit census block FIPS code;...

Parameters* required
block_fips*string
15-digit census block FIPS code on 2010 census boundaries, the vintage this Form 477 dataset is keyed by (e.g., "530330081002024"). Obtain from fcc_geocode_block using address coordinates — a 2020-...
consumerboolean
Filter to consumer service (true) or business service (false). Omit to return both consumer and business offerings.
min_speed_downnumber
Minimum advertised download speed in Mbps to include in results. Omit to return all providers regardless of speed.
tech_filterarray
Technology codes to filter, from the complete Form 477 taxonomy: 0=All other, 10=Asymmetric xDSL, 11=ADSL2, 12=VDSL, 20=Symmetric xDSL, 30=Other copper wireline, 40=Cable modem, 41=Cable modem DOCS...
fcc_search_geographiesFind states, counties, congressional districts (cd), census places, CBSAs (metro areas), and tribal areas by case-insensitive literal name substring in the 2021 FCC geography lookup. Keep ambiguous matches distinct and choose the geography_type and geography_id to pass to fcc_...4 params

Find states, counties, congressional districts (cd), census places, CBSAs (metro areas), and tribal areas by case-insensitive literal name substring in the 2021 FCC geography lookup. Keep ambiguous matches distinct and choose the geography_type and geography_id to pass to fcc_...

Parameters* required
geography_typevalue
Limit to state, county, cd, place, cbsa, or tribal; omit or leave blank to search all six.
limitinteger
Maximum matches per page (1–100), default 20.default: 20
name*string
Nonblank literal name fragment, such as "Casper, WY". Apostrophes, percent signs and underscores are literal characters.
offsetinteger
Zero-based match offset; start at 0, then use nextOffset.default: 0
fcc_get_coverage_summaryReturns a broadband coverage summary for a geography — population with zero, one, two, or three-plus providers at a given speed threshold, split by urban/rural and tribal/non-tribal segments. The primary tool for digital divide and equity analysis. Supports state, county, cong...6 params

Returns a broadband coverage summary for a geography — population with zero, one, two, or three-plus providers at a given speed threshold, split by urban/rural and tribal/non-tribal segments. The primary tool for digital divide and equity analysis. Supports state, county, cong...

Parameters* required
geography_idstring
FIPS GEOID for the geography. State: 2-digit (e.g., "06" for California). County: 5-digit (e.g., "06037" for LA County). Congressional district: 4-digit state+district (e.g., "0601"). CBSA: 5-digit...
geography_type*string
Geographic aggregation level. "nation" = US-wide totals (geography_id not needed). "cd" = congressional district. "place" = census-designated place. "cbsa" = core-based statistical area (metro area...one of nation · state · county · cd · place · cbsa
speed_downstring
Download key for a download/upload threshold pair in Mbps: 0.2=0.2/0.2, 4=4/1, 10=10/1, 25=25/3, 100=100/10, 250=250/25, 1000=1000/100. These historical population aggregates cannot establish curre...one of 4 · 10 · 25 · 100 · 250 · 1000default: 25
tech_filterstring
Any nonempty alphabetical combination of a=ADSL/DSL, c=cable, f=fiber, o=other (symmetric DSL, other copper, power line), s=satellite, w=fixed wireless. Default acfow excludes satellite; explicit a...one of a · ac · acf · acfo · acfos · acfoswdefault: acfow
tribal_filterstring
Filter to tribal ("T") or non-tribal ("N") areas. Use "T" to assess Native American connectivity gaps.one of all · T · Ndefault: all
urban_rural_filterstring
Filter to urban ("U") or rural ("R") areas only, or "all" for both combined. An empty segment in a confirmed geography returns zero population with a notice.one of all · R · Udefault: all
fcc_search_providersSearches for ISPs by holding company name, filtered by state and technology type. Returns a deduplicated list of matching providers with hoconum identifiers for follow-up calls to fcc_get_provider. Answers "which ISPs serve Washington with fiber?" and "find all Comcast entitie...5 params

Searches for ISPs by holding company name, filtered by state and technology type. Returns a deduplicated list of matching providers with hoconum identifiers for follow-up calls to fcc_get_provider. Answers "which ISPs serve Washington with fiber?" and "find all Comcast entitie...

Parameters* required
limitinteger
Maximum number of distinct providers to return.default: 50
name_searchstring
Partial holding company name to search (case-insensitive). e.g., "Comcast", "T-Mobile", "Frontier". Omit to list all providers in a state.
offsetinteger
Number of sorted distinct providers to skip. Live continuation covers the sampled set only; samples may differ between calls.default: 0
statestring
2-letter state abbreviation (e.g., "WA") to limit results to providers serving that state. Matches individual deployment filings, so every filter given must hold on one filing together — a provider...
tech_filterarray
Technology codes to filter, from the complete Form 477 taxonomy: 0=All other, 10=Asymmetric xDSL, 11=ADSL2, 12=VDSL, 20=Symmetric xDSL, 30=Other copper wireline, 40=Cable modem, 41=Cable modem DOCS...
fcc_get_providerReturns a national-level coverage profile for a specific holding company (by hoconum): technologies deployed and the population covered at each download speed tier. Population figures come from the FCC provider summary table and count each person once, regardless of how many t...1 params

Returns a national-level coverage profile for a specific holding company (by hoconum): technologies deployed and the population covered at each download speed tier. Population figures come from the FCC provider summary table and count each person once, regardless of how many t...

Parameters* required
hoconum*string
Holding company number from fcc_search_providers — digits only, e.g. "130317" for Comcast Corporation.
fcc_compare_areasCompares broadband coverage metrics across multiple geographies of the same type and returns a ranked table sorted by unserved or underserved population. Compares historical population coverage gaps; it cannot establish current BEAD eligibility or address service. Compares the...6 params

Compares broadband coverage metrics across multiple geographies of the same type and returns a ranked table sorted by unserved or underserved population. Compares historical population coverage gaps; it cannot establish current BEAD eligibility or address service. Compares the...

Parameters* required
compare_all_statesboolean
When true, compares all 50 states + DC. Overrides geography_ids. Requires geography_type="state".default: false
geography_idsarray
FIPS GEOIDs to compare. The first 300 distinct IDs are queried; remaining distinct IDs are disclosed as excluded. For all 50 states, omit and set compare_all_states=true.
geography_type*string
Geographic level to compare. Must be uniform across all geographies in the comparison.one of state · county · cd · place · cbsa · tribal
sort_bystring
"unserved_pct" = share of population with no broadband (default). "unserved_pop" = raw headcount. "coverage_pct" = share with any coverage. "competitive_pct" = share with 2+ providers. Every option...one of unserved_pct · unserved_pop · coverage_pct · competitive_pctdefault: unserved_pct
speed_downstring
Download key for a download/upload threshold pair in Mbps: 0.2=0.2/0.2, 4=4/1, 10=10/1, 25=25/3, 100=100/10, 250=250/25, 1000=1000/100. These historical population aggregates cannot establish curre...one of 4 · 10 · 25 · 100 · 250 · 1000default: 25
tech_filterstring
Any nonempty alphabetical combination of a=ADSL/DSL, c=cable, f=fiber, o=other (symmetric DSL, other copper, power line), s=satellite, w=fixed wireless. Default acfow excludes satellite; explicit a...one of a · ac · acf · acfo · acfos · acfoswdefault: acfow
fcc_find_underservedFinds geographic areas with limited or no broadband coverage at a given speed threshold, ranked by unserved population. Supports historical population screening and broadband equity research; it cannot establish current BEAD eligibility or address service. Accepts a state abbr...8 params

Finds geographic areas with limited or no broadband coverage at a given speed threshold, ranked by unserved population. Supports historical population screening and broadband equity research; it cannot establish current BEAD eligibility or address service. Accepts a state abbr...

Parameters* required
geography_typestring
Geographic granularity for historical population screening. "county" = county. "cd" = congressional district. "place" = census-designated place. "cbsa" = metro area.one of county · cd · place · cbsadefault: county
limitinteger
Maximum number of areas to return, ranked by unserved population (descending).default: 20
min_unserved_popinteger
Minimum population with no coverage to include. Defaults to 1, which keeps fully covered areas out of a ranking of underserved ones. Set to 0 to rank every area regardless of unserved population, o...default: 1
offsetinteger
Number of globally ranked matching areas to skip.default: 0
speed_downstring
Download key for a download/upload threshold pair in Mbps: 0.2=0.2/0.2, 4=4/1, 10=10/1, 25=25/3, 100=100/10, 250=250/25, 1000=1000/100. These historical population aggregates cannot establish curre...one of 4 · 10 · 25 · 100 · 250 · 1000default: 25
statestring
2-letter USPS state or territory code (e.g., "WY", "MS", "PR") to limit scope. An unrecognized code is rejected, not ignored. Omit for nationwide search — returns top areas only.
tech_filterstring
Any nonempty alphabetical combination of a=ADSL/DSL, c=cable, f=fiber, o=other (symmetric DSL, other copper, power line), s=satellite, w=fixed wireless. Default acfow excludes satellite; explicit a...one of a · ac · acf · acfo · acfos · acfoswdefault: acfow
urban_rural_filterstring
Defaults to rural ("R") — where underservice is most concentrated. Use "U" to find underserved urban areas (digital redlining research). Set to "all" for both.one of all · R · Udefault: R
fcc_list_filing_periodsReturns available data vintages: Form 477 filing periods (hardcoded Jun 2015 – Jun 2021, always available) and BDC as-of dates from the authenticated API (Jun 2022 onward, requires credentials). When hasBdcCredentials is true, call this before fcc_list_downloads to determine v...1 params

Returns available data vintages: Form 477 filing periods (hardcoded Jun 2015 – Jun 2021, always available) and BDC as-of dates from the authenticated API (Jun 2022 onward, requires credentials). When hasBdcCredentials is true, call this before fcc_list_downloads to determine v...

Parameters* required
include_bdcboolean
When true, also fetches BDC as-of dates from the authenticated API (requires FCC_BDC_USERNAME and FCC_BDC_HASH_VALUE). When false (default), returns only hardcoded Form 477 periods.default: false

Sponsors

Configuration

FCC_BDC_USERNAME

FCC account email for BDC API. Required for fcc_list_downloads and BDC filing periods.

FCC_BDC_HASH_VALUE

API token hash from broadbandmap.fcc.gov Manage API Access page.

FCC_OPENDATA_APP_TOKEN

Socrata app token for FCC Open Data. Increases rate limits; not required.

FCC_MIRROR_ENABLEDdefault: false

Serve Form 477 queries from a local SQLite mirror when its coverage allows (bootstrap with `bun run mirror:init`). Default: false.

FCC_MIRROR_PATHdefault: data/fcc-mirror

Directory holding the Form 477 mirror SQLite files.

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/fcc-broadband-mcp-server

Access FCC broadband availability, coverage analysis, and digital divide data for US geographies and census blocks via MCP. STDIO or Streamable HTTP.

10 Tools • 2 Resources • 1 Prompt • 1 Skill

Details

Repository
github.com/cyanheads/fcc-broadband-mcp-server
Category
Data & Analytics
Package
@cyanheads/fcc-broadband-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
2
Prompts
1
Tools verified
Nov 6, 2026

More from cyanheads

Related Data & Analytics MCP servers

View all
1docupipe avatarDocuPipedocupipe/docupipe-mcpUpload documents and extract structured JSON from Claude Code, Codex, Cursor and other MCP clients.1stars
2estaite-solutions avatarEstaite Mcpestaite-solutions/estaite-mcpCurrent US rental market data for AI agents: 1,500+ submarkets, monthly rent + vacancy + trends.1stars
3fetter-io avatarFetter MCPfetter-io/fetter-mcpReal-time Python package and vulnerability data for AI coding agents.1stars
4flowiesner avatarFronius Mcpflowiesner/fronius-mcpReal-time Fronius inverter data in Claude — PV, battery, grid and smart meter via local Solar API.1stars
5generect avatarGenerectgenerect/generect_mcpB2B lead and company data for AI agents: free search, pay only for emails, phones, profiles.1stars
6gregario avatarAstronomy Oraclegregario/astronomy-oracleAstronomical catalog data and observing session planner. 13,000+ objects from OpenNGC.1stars