io. github. cyanheads/ fcc-broadband-mcp-server
by cyanheads · remote · local (npm) · no sign-in to list tools · v0.3.0 · published by GitHub user cyanheads
FCC broadband availability, coverage analysis, and digital divide data for US geographies.
9 tools: 1 change things and 8 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads8Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http fcc-broadband https://fcc-broadband.caseyjhand.com/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "fcc_geocode_block" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
The description mentions "credentials".
What this check looks forMatched text
description: "...rm 477 mirror enabled, and needs no BDC credentials. Follow nextOffset until absent; no tot..."
The description mentions "credentials".
What this check looks forMatched text
description: "...nticated API (Jun 2022 onward, requires credentials). When hasBdcCredentials is true, call..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
9 tools
Changes things 1Claude Code: ask
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.1 finding
Why it is in this group
- The description's first verb is "convert": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "fcc_geocode_block" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
Description, as the server wrote it 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 address. The block is resolved against 2010 census boundaries, the vintage the Form 477 deployment dataset is keyed by, so the returned blockFips can be passed straight to fcc_search_availability; a 2020-vintage block ID from another source will not match. Uses the FCC public Geo API — no authentication required.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- idempotentHint: true
Only reads 8Claude Code: allow
fcc_compare_areasCompares broadband coverage metrics across multiple geographies of the same type and returns a ranked table sorted by unserved or underserved population.No findings
Why it is in this group
- The name "fcc_compare_areas" says "compare": a word for reading.
Description, as the server wrote it Compares broadband coverage metrics across multiple geographies of the same type and returns a ranked table sorted by unserved or underserved population. Answers "which counties in this state have the worst broadband access?" and drives BEAD funding prioritization. Provide up to 50 geography IDs, or set compare_all_states=true for all 50 states + DC. Data is from FCC Form 477 (as of June 2021).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- idempotentHint: true
fcc_find_underservedFinds geographic areas with limited or no broadband coverage at a given speed threshold, ranked by unserved population.No findings
Why it is in this group
- The name "fcc_find_underserved" says "find": a word for reading.
Description, as the server wrote it Finds geographic areas with limited or no broadband coverage at a given speed threshold, ranked by unserved population. The core tool for BEAD program analysis and broadband equity research. Accepts a state abbreviation to narrow scope or runs nationwide. Defaults to rural areas where underservice is most concentrated. Data is from FCC Form 477 (as of June 2021).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- idempotentHint: true
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-triba…No findings
Why it is in this group
- The name "fcc_get_coverage_summary" says "get": a word for reading.
Description, as the server wrote it 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, congressional district, census place, CBSA (metro area), tribal area, and national level. Data is from FCC Form 477 (as of June 2021). Use 100 Mbps as the speed threshold for BEAD program policy analysis.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- idempotentHint: true
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.No findings
Why it is in this group
- The name "fcc_get_provider" says "get": a word for reading.
Description, as the server wrote it 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 technologies the provider uses to reach them. Use fcc_search_providers to find valid hoconum values. Data is from FCC Form 477 (as of June 2021).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- idempotentHint: true
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…1 finding
Why it is in this group
- The name "fcc_list_filing_periods" says "list": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...nticated API (Jun 2022 onward, requires credentials). When hasBdcCredentials is true, call..."
Description, as the server wrote it 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 valid as_of_date values. Note: there is a data gap between June 2021 (last Form 477) and June 2022 (first BDC filing period).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- idempotentHint: true
fcc_search_availabilityQueries broadband providers and advertised speeds at a census block from FCC Form 477 data (as of June 2021).No findings
Why it is in this group
- The name "fcc_search_availability" says "search": a word for reading.
Description, as the server wrote it 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; use fcc_geocode_block to convert coordinates first. Data reflects ISP-reported availability at the block level, which may overstate actual coverage for some addresses.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- idempotentHint: true
fcc_search_geographiesFind census places and CBSAs (metro areas) by case-insensitive literal name substring in the 2021 FCC geography lookup.1 finding
Why it is in this group
- The name "fcc_search_geographies" says "search": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...rm 477 mirror enabled, and needs no BDC credentials. Follow nextOffset until absent; no tot..."
Description, as the server wrote it Find census places and CBSAs (metro 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_get_coverage_summary. Include a location qualifier in name to narrow results; CBSA codes do not encode state membership. Always queries live FCC Open Data, even with the Form 477 mirror enabled, and needs no BDC credentials. Follow nextOffset until absent; no total match count is computed.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- idempotentHint: true
fcc_search_providersSearches for ISPs by holding company name, filtered by state and technology type.No findings
Why it is in this group
- The name "fcc_search_providers" says "search": a word for reading.
Description, as the server wrote it 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 entities." Geographic filtering is state-level; sub-state granularity requires cross-referencing block data. Against the live FCC API the search reads a bounded window of deployment rows to find which holding companies match, so when scanTruncated comes back true the providers are a sample of the matches rather than every one of them and no true match count is available; a narrower filter raises the share of matches the sample surfaces but cannot make it complete, and only a deployment running the local Form 477 mirror returns every match. The sample is of which companies come back — every company that does carries its complete national footprint, since statesServed and techCodes are resolved per company rather than read off the window, at the cost of one lookup per provider returned. Data is from FCC Form 477 (as of June 2021).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
- idempotentHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.3.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http fcc-broadband https://fcc-broadband.caseyjhand.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__fcc-broadband__fcc_search_availability",
"mcp__fcc-broadband__fcc_search_geographies",
"mcp__fcc-broadband__fcc_get_coverage_summary",
"mcp__fcc-broadband__fcc_search_providers",
"mcp__fcc-broadband__fcc_get_provider",
"mcp__fcc-broadband__fcc_compare_areas",
"mcp__fcc-broadband__fcc_find_underserved",
"mcp__fcc-broadband__fcc_list_filing_periods"
],
"ask": [
"mcp__fcc-broadband__fcc_geocode_block"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as fcc-broadband. Review it before you use it.
