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.
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 · 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 · 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 · 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 · 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 · 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 · 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 · 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 · 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, 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 · 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 · 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 · 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_codeonfcc_spectrum_search_licensesand…
Read the thread · 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 · 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 · 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 · 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 · 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 · 2026-10-01 · closed · 1 comment
The remaining reports are on the project's issue tracker.