Search / io.github.cyanheads/fcc-broadband-mcp-server
fcc-broadband-mcp-server
R0· no sign-inFCC broadband availability, coverage analysis, and digital divide data for US geographies.
v0.3.0 · active · repository · descriptor JSON · versions
Search / io.github.cyanheads/fcc-broadband-mcp-server
R0· no sign-inFCC broadband availability, coverage analysis, and digital divide data for US geographies.
v0.3.0 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"fcc-broadband-mcp-server": {
"type": "http",
"url": "https://fcc-broadband.caseyjhand.com/mcp"
}
}
}claude mcp add --transport http fcc-broadband-mcp-server https://fcc-broadband.caseyjhand.com/mcp[mcp_servers.fcc-broadband-mcp-server]
url = "https://fcc-broadband.caseyjhand.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"fcc-broadband-mcp-server": {
"type": "remote",
"url": "https://fcc-broadband.caseyjhand.com/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"fcc-broadband-mcp-server": {
"type": "http",
"url": "https://fcc-broadband.caseyjhand.com/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=fcc-broadband-mcp-server&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZmNjLWJyb2FkYmFuZC5jYXNleWpoYW5kLmNvbS9tY3AifQ%3D%3D"
}{
"servers": {
"fcc-broadband-mcp-server": {
"type": "http",
"url": "https://fcc-broadband.caseyjhand.com/mcp"
}
}
}{
"mcpServers": {
"fcc-broadband-mcp-server": {
"httpUrl": "https://fcc-broadband.caseyjhand.com/mcp"
}
}
}extensions:
"fcc-broadband-mcp-server":
enabled: true
name: "fcc-broadband-mcp-server"
type: streamable_http
uri: "https://fcc-broadband.caseyjhand.com/mcp"
timeout: 300
protocol.modernsupports 2026-07-28 (server/discover)protocol.statelessanswers without a sessionprotocol.transportstreamable HTTPprotocol.list_ttltool list is cacheable (ttlMs 3600000)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length1 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations9 of 9 tools declare readOnlyHint or destructiveHinttools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: fcc_search_availability (destructiveHint); fcc_search_geographies (destructiveHint); fcc_get_coverage_summary (destructiveHint); …tools.token_costabout 4,078 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes9 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvabledeps.dev does not know @cyanheads/[email protected], @cyanheads/[email protected]fcc_list_downloadsremovedLists 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); a date that is not on the calendar, or that falls before the first BDC period, is rejected without credentials, while a well-formed date the BDC API does not publish is rejected once credentials let the published set be read. One as-of date can carry thousands of per-provider files, so results come back a page at a time: totalFiles counts every file matching the filters, the response reports the offset and the count on this page, and it carries a nextOffset to pass back for the following page until the last one, which omits it.
fcc_list_filing_periodschangeddescriptionReturns 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).
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).
fcc_get_coverage_summarychangedoutput schemafcc_search_geographiesaddedFind 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.
fcc_search_availabilitychangedoutput schemafcc_geocode_blockchangedoutput schemafcc_find_underservedchangedinput schemafcc_compare_areaschangedinput schemafcc_get_coverage_summarychangedinput schemaFull history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +reachable +uptime-100% +updated-2d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
@cyanheads/[email protected] npmthis version is not known to the dependency resolver
@cyanheads/[email protected] npmthis version is not known to the dependency resolver
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://fcc-broadband.caseyjhand.com/mcp streamable-http | none | yes | 100% | 190 ms | 2026-07-28 | 2026-10-20 |
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
@cyanheads/fcc-broadband-mcp-server | npm | 0.3.0 | npx | |
@cyanheads/fcc-broadband-mcp-server | npm | 0.3.0 | npx |
fcc_compare_areasread-only | 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). |
fcc_find_underservedread-only | 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). |
fcc_geocode_blockread-only | 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. |
fcc_get_coverage_summaryread-only | 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. |
fcc_get_providerread-only | 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). |
fcc_list_filing_periodsread-only | 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). |
fcc_search_availabilityread-only | 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. |
fcc_search_geographiesread-only | 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. |
fcc_search_providersread-only | 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). |
Schemas: list_tools.
And 140 more from this publisher.
{
"name": "io.github.cyanheads/fcc-broadband-mcp-server",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://fcc-broadband.caseyjhand.com/mcp",
"type": "streamable-http"
}
],
"version": "0.3.0",
"packages": [
{
"version": "0.3.0",
"transport": {
"type": "stdio"
},
"identifier": "@cyanheads/fcc-broadband-mcp-server",
"runtimeHint": "npx",
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"environmentVariables": [
{
"name": "FCC_BDC_USERNAME",
"format": "string",
"description": "FCC account email for BDC API. Required for fcc_list_downloads and BDC filing periods."
},
{
"name": "FCC_BDC_HASH_VALUE",
"format": "string",
"description": "API token hash from broadbandmap.fcc.gov Manage API Access page."
},
{
"name": "FCC_OPENDATA_APP_TOKEN",
"format": "string",
"description": "Socrata app token for FCC Open Data. Increases rate limits; not required."
},
{
"name": "FCC_MIRROR_ENABLED",
"format": "string",
"default": "false",
"description": "Serve Form 477 queries from a local SQLite mirror when its coverage allows (bootstrap with `bun run mirror:init`). Default: false."
},
{
"name": "FCC_MIRROR_PATH",
"format": "string",
"default": "data/fcc-mirror",
"description": "Directory holding the Form 477 mirror SQLite files."
},
{
"name": "MCP_LOG_LEVEL",
"format": "string",
"default": "info",
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
}
]
},
{
"version": "0.3.0",
"transport": {
"url": "http://localhost:3010/mcp",
"type": "streamable-http"
},
"identifier": "@cyanheads/fcc-broadband-mcp-server",
"runtimeHint": "npx",
"registryType": "npm",
"registryBaseUrl": "https://registry.npmjs.org",
"environmentVariables": [
{
"name": "MCP_TRANSPORT_TYPE",
"value": "http",
"format": "string",
"description": "Selects the HTTP transport."
},
{
"name": "FCC_BDC_USERNAME",
"format": "string",
"description": "FCC account email for BDC API. Required for fcc_list_downloads and BDC filing periods."
},
{
"name": "FCC_BDC_HASH_VALUE",
"format": "string",
"description": "API token hash from broadbandmap.fcc.gov Manage API Access page."
},
{
"name": "FCC_OPENDATA_APP_TOKEN",
"format": "string",
"description": "Socrata app token for FCC Open Data. Increases rate limits; not required."
},
{
"name": "FCC_MIRROR_ENABLED",
"format": "string",
"default": "false",
"description": "Serve Form 477 queries from a local SQLite mirror when its coverage allows (bootstrap with `bun run mirror:init`). Default: false."
},
{
"name": "FCC_MIRROR_PATH",
"format": "string",
"default": "data/fcc-mirror",
"description": "Directory holding the Form 477 mirror SQLite files."
},
{
"name": "MCP_HTTP_HOST",
"format": "string",
"default": "127.0.0.1",
"description": "The hostname for the HTTP server."
},
{
"name": "MCP_HTTP_PORT",
"format": "string",
"default": "3010",
"description": "The port to run the HTTP server on."
},
{
"name": "MCP_HTTP_ENDPOINT_PATH",
"format": "string",
"default": "/mcp",
"description": "The endpoint path for the MCP server."
},
{
"name": "MCP_AUTH_MODE",
"format": "string",
"default": "none",
"description": "Authentication mode to use: 'none', 'jwt', or 'oauth'."
},
{
"name": "MCP_LOG_LEVEL",
"format": "string",
"default": "info",
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
}
]
}
],
"repository": {
"url": "https://github.com/cyanheads/fcc-broadband-mcp-server",
"source": "github"
},
"description": "FCC broadband availability, coverage analysis, and digital divide data for US geographies."
}