# Reported issues for fcc-spectrum-mcp-server

Pod holds 17 of 18 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [fcc-spectrum-mcp-server](/mcp/fcc-spectrum-mcp-server).

## Most discussed

### bug(search_frequencies): site scans between 450 MHz and 3.1 GHz take 4-7 s per page

### Server version

0.1.0

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

v26.5.0

### Transport

HTTP and stdio

### Description

`fcc_spectrum_search_frequencies` site scans between about 450 MHz and 3.1 GHz take 4–7 s per page on the full default-group index. Every site scan reads from `frequency_low` minus the widest stored band, and that bound is 3,100 MHz, set by one legitimate wide filing (a 15.7–17.3 GHz radiolocation range, emission `1G50F0N`; the next…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/9) · 2026-10-01 · closed · 2 comments

### bug(fcc_spectrum_search_licenses): hyphenated and ampersand carrier names rank unrelated licensees first

### Server version

0.1.0

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

Node 26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

Licensee search turns each word into a prefix term, so hyphen- and ampersand-joined carrier names split into one-letter prefixes that match almost anything. Searching `T-Mobile` or `AT&T` ranks unrelated licensees first and buries the carrier (27,000 T-Mobile License/T-Mobile MW records sit below them).

### Steps to…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/8) · 2026-10-01 · closed · 2 comments

### bug(uls-index): implausible emission bandwidths match unrelated frequencies and widen every overlap scan

### Server version

0.1.0

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

Node 26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

Implausible emission designators are taken literally when computing the occupied band. Two TV-pickup records filed `5G75C3F` (5.75 GHz) on 470 and 638 MHz assignments, so their occupied band runs from about −2,400 MHz to 3,350 MHz and they match every query in that range. Three radiolocation records filed `24G1N0N` at 24.15…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/7) · 2026-10-01 · closed · 2 comments

### bug(fcc_spectrum_get_license): leases beyond the first 25 have no retrieval path

### Server version

0.1.0

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

Node 26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

`fcc_spectrum_get_license` lists at most 25 of a licensed callsign's leases and discloses the rest only through `leaseCount`. No tool can retrieve the remaining leases: there is no lease offset on `get_license` and no parent filter on `fcc_spectrum_search_licenses`. Sensus Spectrum's WQKM409 has 946 leases; 921 are…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/6) · 2026-10-01 · closed · 2 comments

### bug(market-blocks): partitioned market blocks return as identical duplicate rows

### Server version

0.1.0

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

Node 26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

A partitioned market license files one MF block per partition area, and the output hides the partition area, so `fcc_spectrum_search_frequencies` returns the same block as several identical rows and `fcc_spectrum_get_license` lists it repeatedly. 7,372 license/band pairs in the default index are affected (24,106 rows), and…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/5) · 2026-10-01 · closed · 2 comments

### bug(callsign): prefix-portable callsigns with a 4-character base are rewritten to the prefix

### Server version

0.1.0

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

Node 26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

The callsign normalizer strips a trailing `/[A-Z0-9]{1,4}` as a portable suffix, so a prefix-portable callsign whose base callsign is four characters is rewritten to the prefix instead of being rejected. `KH6/W1AW` searches for `KH6`, and `get_license` offers unrelated `KH6…` candidates. The design rejects prefix-portable…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/4) · 2026-10-01 · closed · 2 comments

### bug(fcc_spectrum_search_frequencies): 3.5 GHz PAL blocks are indexed at 0–10 MHz and never match the 3.5 GHz band

### Server version

0.1.0

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

Node 26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

ULS files every 3.5 GHz Priority Access License (radio service `PL`) market block as `0–10` MHz rather than an absolute frequency. The index stores those values as-is, so `fcc_spectrum_search_frequencies` never returns a PAL for the 3.5 GHz band its description advertises, and returns all ~20,000 PALs for any query between 0…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/3) · 2026-10-01 · closed · 2 comments

### bug(uls-index): sites filed under a shared location_number are dropped by get_license and merged by find_transmitters

### Server version

0.1.0

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

Node 26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

Some ULS licenses file many distinct sites under the same `location_number` (24 licenses in the default index, 231 extra location rows; e.g. WRAT914 files 57 different Georgia sites as location 1). `fcc_spectrum_get_license` returns one of them and silently drops the rest, and `fcc_spectrum_find_transmitters` attaches the…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/2) · 2026-10-01 · closed · 2 comments

## Most recent

### bug(packaging): npx and .mcpb installs on Node cannot read the index

Depends on: cyanheads/mcp-ts-core#473 (a `node:sqlite` driver arm, which needs no native install)

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

v26.5.0

### Transport

stdio

### Description

Under Node, the index store needs [`better-sqlite3`](https://github.com/WiseLibs/better-sqlite3), which the package declares only as an optional peer dependency. Installing the package with npm does not install it. That covers the README's npx…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/20) · 2026-10-02 · open · 0 comments

### bug(get_license): frequency-only location numbers are skipped when max_frequencies cuts their rows

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Bun

### Runtime version

1.4.2

### Transport

stdio

### Description

ULS can file a location number only on frequency (FR) rows, with no site or antenna. `fcc_spectrum_get_license` counts such a number in its location window (`locationTotal`, `nextLocationOffset`, the "Listing N of" notice), but builds the `locations` list from site, antenna, and frequency rows, and the frequency rows are cut at `max_frequencies`. When…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/18) · 2026-10-02 · closed · 1 comment

### feat(get_license): start the location window at a location number

### Use case

`fcc_spectrum_find_transmitters` and `fcc_spectrum_search_frequencies` return a site's `locationNumber`, but `fcc_spectrum_get_license` pages by ordinal `location_offset`. On large licenses, numbering often starts at 0 or skips: 65 of the 137 licenses with more than 50 sites do (2026-09-27 weekly snapshot). Reading the antennas, heights, and azimuths of a site found by radius then means guessing offsets. For example, `{ "callsign": "WRAT914", "location_offset": 1200 }` lists from…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/17) · 2026-10-01 · closed · 1 comment

### feat(search_frequencies, search_licenses): filter by market code, and by FRN on search_frequencies

### Use case

A spectrum analyst asking who holds what in one market (`PEA016`, `CMA020`) gets the code back on every market row, but neither search tool accepts it (`Unrecognized key: "market_code"`). The answer today is a state-wide band sweep read by name: 600 MHz–40 GHz, `kind: "market"`, `state: "WA"` matches 3,376 rows, 17 pages of about 136 KB at `limit` 200, and some markets never match a state (#13).

### Proposed behavior

- `market_code` on `fcc_spectrum_search_licenses` and…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/16) · 2026-10-01 · closed · 1 comment

### bug(uls-index): placeholder and malformed values are returned as ASR numbers

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

v26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

`fcc_spectrum_find_transmitters` and `fcc_spectrum_get_license` return the LO tower registration field as `asrNumber` whatever it holds. The FCC defines an Antenna Structure Registration number as seven digits, but 90,459 of the 232,028 filed values in the default index (2026-09-27 weekly snapshot) are not registration numbers:…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/15) · 2026-10-01 · closed · 1 comment

### bug(find_transmitters): mobile and temporary-fixed operating areas are listed as transmitter sites without their radius

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

v26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

ULS files mobile (`M`) and temporary-fixed (`T`) locations as an area center plus a radius of operation; 150,921 `M` and 4,804 `T` locations in the default index carry both. `fcc_spectrum_find_transmitters` returns them as transmitter sites ranked by distance, with no `radiusKm` and only the raw `locationTypeCode`, while its…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/14) · 2026-10-01 · closed · 1 comment

### bug(search_frequencies): market state filter misses markets whose name carries no state code

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

v26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

The market-side `state` filter of `fcc_spectrum_search_frequencies` matches only USPS codes after the last comma of the 30-character market name (`marketStates()` in `ingest.ts`). A market whose name carries none never matches: rural CMAs (`Washington 3 - Ferry`), every MTA, MEA, REA, EAG, and RPC, P35 GSAs, and names cut before…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/13) · 2026-10-01 · closed · 1 comment

### bug(get_license): a redacted individual's name can surface through the site name field

### Server version

0.1.1

### mcp-ts-core version

0.13.10

### Runtime

Node.js

### Runtime version

v26.5.0

### Transport

HTTP (Streamable HTTP)

### Description

With `FCC_SPECTRUM_REDACT_INDIVIDUALS` on, `fcc_spectrum_get_license` and `fcc-spectrum://license/{callsign}` null an individual's `licensee.name` but still return each site's filed `name` (LO location name). Some individuals file their own name as the site name, so the withheld name reaches both `structuredContent` and…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/12) · 2026-10-01 · closed · 1 comment

### feat(ingest): run scheduled HTTP ingest in a child process

### Use case

Over HTTP the weekly rebuild (Sundays 16:00) and daily refresh (17:00) run on the serving thread, and SQLite calls are synchronous under both drivers. Each step's insert transaction is one blocking span: on the default groups, the LMpriv technical insert holds the thread for 30–40 s and the amateur records insert for about 19 s, and every daily refresh ends with a 4–24 s recompute of per-group counts. Tool calls and `/healthz` wait for the span to finish, and an image healthcheck…

[Read the thread](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues/10) · 2026-10-01 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/cyanheads/fcc-spectrum-mcp-server/issues).
