# io.github.cyanheads/fcc-broadband-mcp-server (remote · fcc-broadband.caseyjhand.com)

FCC broadband availability, coverage analysis, and digital divide data for US geographies.

- Trust score: 71/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `fcc-broadband.caseyjhand.com`: 71/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-fcc-broadband-mcp-server/fcc-broadband.md), [page](https://verifymcp.io/servers/cyanheads-fcc-broadband-mcp-server/fcc-broadband)
- npm · `@cyanheads/fcc-broadband-mcp-server`: 34/100, [markdown](https://verifymcp.io/servers/cyanheads-fcc-broadband-mcp-server/cyanheads-fcc-broadband-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-fcc-broadband-mcp-server/cyanheads-fcc-broadband-mcp-server)

## Channel facts

- Endpoint: `https://fcc-broadband.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.12`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 66/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 9 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 76/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2541 tokens (~254/item across 10 items; 9 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http cyanheads-fcc-broadband-mcp-server https://fcc-broadband.caseyjhand.com/mcp
```

### Codex

```toml
[mcp_servers.cyanheads-fcc-broadband-mcp-server]
url = "https://fcc-broadband.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-fcc-broadband-mcp-server": {
      "type": "remote",
      "url": "https://fcc-broadband.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-fcc-broadband-mcp-server --url https://fcc-broadband.caseyjhand.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-fcc-broadband-mcp-server:
    url: "https://fcc-broadband.caseyjhand.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-fcc-broadband-mcp-server": {
      "type": "http",
      "url": "https://fcc-broadband.caseyjhand.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 69, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 68, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 66, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 66)

First indexed and scored.

## MCP tools (9)

### `fcc_geocode_block` (~156 tokens)

Geocode Census Block

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. Uses the FCC public Geo API — no authentication required.

Input parameters:

- `latitude` (number, required): 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, required): Longitude of the location in decimal degrees (e.g., -122.3321 for Seattle, WA). Negative for western hemisphere.

Output parameters:

- `blockFips` (string): 15-digit census block FIPS code (e.g., "530330081021016"). Pass this to fcc_search_availability to look up broadband providers.
- `countyFips` (string): 5-digit county FIPS code (e.g., "53033" for King County, WA).
- `countyName` (string): Human-readable county name (e.g., "King").
- `stateCode` (string): 2-letter state abbreviation (e.g., "WA").
- `stateFips` (string): 2-digit state FIPS code (e.g., "53" for Washington).
- `stateName` (string): Full state name (e.g., "Washington").

### `fcc_search_availability` (~252 tokens)

Search Broadband Availability

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.

Input parameters:

- `block_fips` (string, required): 15-digit census block FIPS code (e.g., "530330081021016"). Obtain from fcc_geocode_block using address coordinates.
- `consumer` (boolean): Filter to consumer service (true) or business service (false). Omit to return both consumer and business offerings.
- `min_speed_down` (number): Minimum advertised download speed in Mbps to include in results. Omit to return all providers regardless of speed.
- `tech_filter` (array): Technology codes to filter. 50=Fiber to premises, 40–43=Cable modem, 10–12=DSL variants, 60=Satellite, 70=Fixed wireless. Omit to return all technologies.

Output parameters:

- `appliedFilters` (object): Filters applied to this query.
- `blockFips` (string): The queried census block FIPS code.
- `dataVintage` (string): Data vintage — all Form 477 data on FCC Open Data is as of June 2021. For newer BDC data, use fcc_list_downloads.
- `notice` (string): Recovery hint when no providers are found — suggests how to broaden the query. Absent on successful results.
- `providers` (array): ISP offerings reported for this census block.
- `totalProviders` (number): Total number of distinct holding companies offering service at this block.

### `fcc_get_coverage_summary` (~481 tokens)

Get Broadband Coverage Summary

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.

Input parameters:

- `geography_id` (string): 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 c…
- `geography_type` (string, required): 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).…
- `speed_down` (string): Minimum download speed threshold in Mbps. 25 = FCC legacy broadband definition. 100 = BEAD program standard (use this for current policy analysis). "0.2" = any service above 200 Kbps.
- `tech_filter` (string): Technology filter. "acfosw" = any wired or fixed wireless (recommended baseline). "f" = fiber only. "c" = cable only. "a" = ADSL/DSL only. "s" = satellite only. "w" = fixed wireless only. Mix letters…
- `tribal_filter` (string): Filter to tribal ("T") or non-tribal ("N") areas. Use "T" to assess Native American connectivity gaps.
- `urban_rural_filter` (string): Filter to urban ("U") or rural ("R") areas only, or "all" for both combined. Rural breakdown is key for BEAD program analysis.

Output parameters:

- `appliedFilters` (object): Filters applied to this query.
- `breakdown` (array): Per-segment breakdown by urban/rural and tribal/non-tribal.
- `competitivePct` (number): Percentage with two or more providers.
- `coveragePct` (number): Percentage of population with at least one provider at the given speed.
- `dataVintage` (string): Data vintage — Form 477 data as of June 2021.
- `geography` (object): The queried geography.
- `population` (object): Population counts by provider availability tier.
- `speedDownMbps` (number): Download speed threshold used in Mbps.
- `techFilter` (string): Technology filter applied.
- `unservedPct` (number): Percentage with zero providers — FCC "unserved" definition.

### `fcc_search_providers` (~232 tokens)

Search Broadband Providers

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. Data is from FCC Form 477 (as of June 2021).

Input parameters:

- `limit` (integer): Maximum number of distinct providers to return.
- `name_search` (string): Partial holding company name to search (case-insensitive). e.g., "Comcast", "T-Mobile", "Frontier". Omit to list all providers in a state.
- `state` (string): 2-letter state abbreviation (e.g., "WA") to limit results to providers serving that state.
- `tech_filter` (array): Technology codes to filter. 50=Fiber, 40–43=Cable, 10–12=DSL, 60=Satellite, 70=Fixed wireless. Omit for all technologies.

Output parameters:

- `appliedFilters` (object): Filters applied to this query.
- `cap` (number): The limit that was applied. Present when capped.
- `dataVintage` (string): Data vintage — Form 477 data as of June 2021.
- `notice` (string): Recovery hint when no providers are found — suggests how to broaden the search. Absent on successful results.
- `providers` (array): Matching providers, deduplicated by holding company.
- `shown` (number): Number of providers returned. Present when capped.
- `totalFound` (number): Number of distinct providers returned.
- `truncated` (boolean): True when results were capped at the limit and more providers may exist. Absent when not capped.

### `fcc_get_provider` (~108 tokens)

Get Provider Profile

Returns a national-level coverage profile for a specific holding company (by hoconum): states served, technologies deployed, and the number of locations covered at each download speed tier. Use fcc_search_providers to find valid hoconum values. Data is from FCC Form 477 (as of June 2021).

Input parameters:

- `hoconum` (string, required): Holding company number from fcc_search_providers (e.g., "130152" for Comcast). Required identifier for the provider.

Output parameters:

- `dataVintage` (string): Data vintage — Form 477 data as of June 2021.
- `hoconum` (string): Holding company number.
- `holdingCompanyName` (string): Holding company name.
- `speedTierLocations` (array): Download speed tier location counts (national totals).
- `techCodes` (array): Technology codes this provider deploys nationally.
- `techLabels` (array): Human-readable technology descriptions.

### `fcc_compare_areas` (~323 tokens)

Compare Broadband Coverage Across Areas

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).

Input parameters:

- `compare_all_states` (boolean): When true, compares all 50 states + DC. Overrides geography_ids. Requires geography_type="state".
- `geography_ids` (array): Array of FIPS GEOIDs to compare (up to 50). For all 50 states, omit and set compare_all_states=true.
- `geography_type` (string, required): Geographic level to compare. Must be uniform across all geographies in the comparison.
- `sort_by` (string): "unserved_pct" = share of population with no broadband (default). "unserved_pop" = raw headcount for BEAD funding. "coverage_pct" = share with any coverage. "competitive_pct" = share with 2+ provider…
- `speed_down` (string): Download speed threshold in Mbps. 25 = FCC legacy standard. 100 = BEAD program standard.
- `tech_filter` (string): Technology filter. "acfosw" = any wired or fixed wireless. "f" = fiber only. "c" = cable only. "a" = DSL. "s" = satellite. "w" = fixed wireless.

Output parameters:

- `appliedFilters` (object): Filters and parameters applied to this comparison.
- `areas` (array): Ranked comparison of geographies by the selected sort field.
- `dataVintage` (string): Data vintage — Form 477 data as of June 2021.
- `geographyType` (string): Geography type compared.
- `sortBy` (string): Ranking field used.
- `speedDownMbps` (number): Speed threshold in Mbps.
- `techFilter` (string): Technology filter applied.
- `totalAreas` (number): Total number of areas compared.

### `fcc_find_underserved` (~348 tokens)

Find Underserved Areas

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).

Input parameters:

- `geography_type` (string): Geographic granularity for results. "county" is most useful for policy analysis and BEAD eligibility. "cd" = congressional district. "place" = census-designated place. "cbsa" = metro area.
- `limit` (integer): Maximum number of areas to return, ranked by unserved population (descending).
- `min_unserved_pop` (integer): Minimum population with no coverage to include. Use to filter out very small areas (e.g., 500 filters areas with fewer than 500 unserved residents).
- `speed_down` (string): Download speed threshold in Mbps for defining "underserved." 25 = FCC legacy standard. 100 = BEAD program standard.
- `state` (string): 2-letter state code (e.g., "WY", "MS") to limit scope. Omit for nationwide search — returns top areas only.
- `tech_filter` (string): Technology filter. "acfosw" = any wired or fixed wireless. "f" = fiber only. "c" = cable only.
- `urban_rural_filter` (string): Defaults to rural ("R") — where underservice is most concentrated. Use "U" to find underserved urban areas (digital redlining research). Set to "all" for both.

Output parameters:

- `appliedFilters` (object): Filters applied to this query.
- `areas` (array): Ranked list of underserved areas.
- `cap` (number): The limit that was applied. Present when truncated.
- `dataVintage` (string): Data vintage — Form 477 data as of June 2021.
- `geographyType` (string): Geography type returned.
- `notice` (string): Recovery hint when no areas are found — suggests how to broaden the filters. Absent on successful results.
- `shown` (number): Number of areas returned after applying the limit. Present when truncated.
- `speedDownMbps` (number): Speed threshold used in Mbps.
- `totalFound` (number): Total number of areas found before applying the limit filter.
- `truncated` (boolean): True when more areas matched than the limit returned. Absent when not truncated.
- `urbanRuralFilter` (string): Urban/rural filter applied.

### `fcc_list_filing_periods` (~156 tokens)

List Filing Periods

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). 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).

Input parameters:

- `include_bdc` (boolean): 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.

Output parameters:

- `bdcCount` (number): Number of BDC periods returned (0 when credentials not configured or include_bdc=false).
- `dataNote` (string): Note on data availability and the Form 477 vs. BDC gap.
- `form477Count` (number): Number of Form 477 periods returned (always available).
- `hasBdcCredentials` (boolean): Whether BDC API credentials are configured in this deployment.
- `periods` (array): Available filing periods sorted newest first.

### `fcc_list_downloads` (~274 tokens)

List BDC Downloads

Lists downloadable BDC data files for a specific as-of date — fixed availability by state and provider, mobile coverage, and challenge data — with file metadata (provider, state, technology, record count). Download URLs are included for each file. Requires FCC BDC API credentials (FCC_BDC_USERNAME and FCC_BDC_HASH_VALUE). Use fcc_list_filing_periods first to determine valid as_of_date values (BDC dates start June 2022).

Input parameters:

- `as_of_date` (string, required): BDC as-of date in YYYY-MM-DD format (e.g., "2024-06-30"). Get valid dates from fcc_list_filing_periods with include_bdc=true.
- `category` (string): File category. "State" = per-state coverage files. "Provider" = per-provider files. "Summary" = aggregate coverage tables.
- `data_type` (string): "availability" = ISP-reported coverage files (by state and provider). "challenge" = consumer and government dispute records.
- `provider_name` (string): Partial provider holding company name to filter results (case-insensitive).
- `state` (string): Filter to one state's files (2-letter abbreviation, e.g., "WA").
- `technology_type` (string): Filter to a specific technology type of coverage data.

Output parameters:

- `appliedFilters` (object): Filters applied to this query.
- `asOfDate` (string): The queried as-of date.
- `dataType` (string): Data type queried (availability or challenge).
- `files` (array): Downloadable BDC files matching the filters.
- `notice` (string): Recovery hint when no files are found — suggests how to broaden the search. Absent on successful results.
- `totalFiles` (number): Total number of files returned after filtering.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-fcc-broadband-mcp-server/fcc-broadband#diagnostics

## Score history

- 2026-08-03: 71
- 2026-08-02: 70
- 2026-08-01: 70
- 2026-07-31: 69
- 2026-07-30: 68
- 2026-07-29: 68
- 2026-07-28: 67
- 2026-07-27: 66
- 2026-07-26: 66

## Links

- Remote endpoint: https://fcc-broadband.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/fcc-broadband-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-fcc-broadband-mcp-server/fcc-broadband/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-fcc-broadband-mcp-server/fcc-broadband/changelog.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-fcc-broadband-mcp-server/fcc-broadband
