Reported issues for fred-mcp-server
Pod holds 16 of 23 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to fred-mcp-server.
Most discussed
bug(fedreserve_get_observations): calendar-invalid dates return series_not_found
Server version
0.2.2
mcp-ts-core version
^0.10.9
Runtime
Bun
Runtime version
Bun 1.3.11 / Node v26.3.1
Transport
HTTP (Streamable HTTP)
OS
macOS 26.1
Description
fedreserve_get_observations validates observation_start / observation_end with ^\d{4}-\d{2}-\d{2}$, which only checks digit shape, not calendar validity. A date like 2024-13-01 (month 13) or 2024-02-30 (Feb 30) matches the regex, reaches FRED, and FRED's resulting 400 is classified as
Read the thread · 2026-05-23 · open · 4 comments
refactor: rename to federal-reserve-mcp-server
Summary
Rename fred-mcp-server → federal-reserve-mcp-server across the entire project and ecosystem. "fred" reads as a person's name — zero signal about Federal Reserve Economic Data. The rename makes the server immediately identifiable.
Continue publishing the npm package under the old name (@cyanheads/fred-mcp-server) alongside the new one so existing installs are not broken. Everything else (repo, Docker, MCP registry) moves to the new name outright.
Touchpoints
GitHub
Read the thread · 2026-05-24 · closed · 2 comments
bug(fred_get_release): both release_id and release_search provided — release_id wins silently
Server version
0.1.5
mcp-ts-core version
0.9.6
Runtime
Bun
Runtime version
Bun 1.3+
Transport
HTTP
Description
The tool description states "Provide exactly one of release_id or release_search." The handler only validates the case where neither is provided. When both are supplied, release_id silently wins and release_search is ignored — no warning, no error.
Steps to reproduce
- Call
fred_get_releasewith `{"release_id": 10, "release_search": "emplo
Read the thread · 2026-05-23 · closed · 2 comments
bug(fred_search_series): offset > 5000 produces opaque HTTP 400 without actionable guidance
Server version
0.1.5
mcp-ts-core version
0.9.6
Runtime
Bun
Runtime version
Bun 1.3+
Transport
HTTP
Description
fred_search_series accepts offset as an integer with no upper-bound validation. FRED's API enforces a maximum of 5000 searchable results (offset + limit ≤ 5000). When the offset exceeds this, the service returns HTTP 400 with body {"error_message":"Bad Request. Exceeded 5000 maximum searchable results"}. The server surfaces this as a generic vali
Read the thread · 2026-05-23 · closed · 2 comments
bug(fred_get_series,fred_get_observations): empty string series IDs pass Zod validation
Server version
0.1.5
mcp-ts-core version
0.9.6
Runtime
Bun
Runtime version
Bun 1.3+
Transport
HTTP
Description
An empty string "" is accepted as a valid series ID by both fred_get_series and fred_get_observations. It passes Zod validation (the array item type is z.string() with no min(1)), reaches FRED, and returns a confusing error message with a blank ID.
Repro:
- Call
fred_get_serieswith{"series_ids": [""]}or{"series_ids": ""} - Ob
Read the thread · 2026-05-23 · closed · 2 comments
bug(fred_get_release,fred_browse_categories): nonexistent ID returns generic 400 instead of NotFound
Server version
0.1.5
mcp-ts-core version
0.9.6
Runtime
Bun
Runtime version
Bun 1.3+
Transport
HTTP
Description
Calling fred_get_release with a nonexistent release_id and fred_browse_categories with a nonexistent category_id both surface a generic upstream error instead of the declared domain error.
Repro — fred_get_release:
- Call
fred_get_releasewith{"release_id": 999999} - Observe:
isError: true,code: -32602(ValidationError), `reaso
Read the thread · 2026-05-23 · closed · 2 comments
bug(fred_get_release): no-input validation error missing recovery hint
Server version
0.1.5
mcp-ts-core version
0.9.6
Runtime
Bun
Runtime version
Bun 1.3.x
Transport
HTTP
Description
When fred_get_release is called with no release_id and no release_search, the handler throws validationError('Provide either release_id or release_search.') instead of ctx.fail(...). This means the error has no data.reason and no data.recovery.hint — the content[0].text shows only "Error: Provide either release_id or release_search."
Read the thread · 2026-05-23 · closed · 2 comments
bug(fred_get_series): empty array input returns silent empty response
Server version
0.1.5
mcp-ts-core version
0.9.6
Runtime
Bun
Runtime version
Bun 1.3.x
Transport
HTTP
Description
When series_ids: [] is passed, the handler calls Promise.allSettled([]), returns { series: [], failed: [] }, and format() produces an empty string. The response content[0].text is "" with no indication that the call did nothing.
Steps to reproduce
- Call
fred_get_serieswith{ "series_ids": [] } - Observe
content[0].textand
Read the thread · 2026-05-23 · closed · 2 comments
Most recent
feat(config): default MCP_SESSION_MODE to stateless across env, Docker, and src
Dockerfile sets ENV MCP_SESSION_MODE="stateless", but .env.example carries a commented # MCP_SESSION_MODE=stateful, whose comment documents the value set as stateful | stateless (default: stateful). The container and the same code run via bunx, npm start, or from source therefore resolve to different session modes — stateless in Docker, stateful everywhere else, since the framework schema defaults to auto and auto resolves to stateful.
Related: cyanheads/mcp-ts-core#376
Read the thread · 2026-08-22 · open · 0 comments
test(enrichment): no coverage for the new totalCount enrichment on three tools
fedreserve_search_series, fedreserve_get_release, and fedreserve_dataframe_query each declare an enrichment: { totalCount } block and call ctx.enrich.total(...) in their handlers, but no test in tests/tools/ asserts that the value is populated.
Affected files
src/mcp-server/tools/definitions/fedreserve-search-series.tool.ts—ctx.enrich.total(resp.count)src/mcp-server/tools/definitions/fedreserve-get-release.tool.ts—ctx.enrich.total(seriesResp.count ?? 0)- `src/
Read the thread · 2026-08-21 · open · 0 comments
bug(fedreserve_get_observations): unbounded requests surface FRED sentinel bounds as the actual observation range
Server version
0.2.2
mcp-ts-core version
^0.12.3
Runtime
Bun
Transport
stdio
Description
When a request omits observation_start/observation_end, the FRED observations endpoint reports its full-table bounds as sentinels — verified live: observation_start: "1600-01-01", observation_end: "9999-12-31" while real data spans ~1948 to present. The tool passes these through verbatim into fields described
Read the thread · 2026-08-21 · open · 0 comments
bug(fedreserve_get_release): scheduled_dates structurally empty — release dates fetched capped at 5 ascending
Server version
0.2.2
mcp-ts-core version
^0.12.3
Runtime
Bun
Transport
stdio
Description
getReleaseDates() hardcodes limit: '5' and sends no sort_order (src/services/fred/fred-service.ts, /release/dates call). The FRED release/dates endpoint returns dates ascending, so the handler's d >= today filter only ever sees the 5 oldest dates on record. Any future-dated release entry is invisible
Read the thread · 2026-08-21 · open · 0 comments
feat(fedreserve_get_observations): name the dataframe tools in the canvas spill response
When observations spill to DataCanvas, fedreserve_get_observations returns an opaque df_XXXXX_XXXXX handle in dataset.name and nothing in structuredContent says how to reach the staged rows. The only runtime pointer is emitted from format(), so it lands in content[] alone — a client that forwards only structuredContent receives the handle with no instruction attached. Callers that miss the pointer report the truncation and stop, or re-call the tool with a narrower date range, re-fe
Read the thread · 2026-08-13 · open · 0 comments
bug(fedreserve_search_series): incomplete filter pairs silently no-op
Server version
0.2.2
mcp-ts-core version
^0.10.9
Runtime
Bun
Runtime version
Bun 1.3.11 / Node v26.3.1
Transport
HTTP (Streamable HTTP)
OS
macOS 26.1
Description
fedreserve_search_series accepts filter_variable and filter_value independently, but either one alone silently behaves like no filter was supplied. That makes typo or partial filter calls look successful while returning broader results than requested.
Steps to reproduce
- Call `fedre
Read the thread · 2026-06-30 · open · 0 comments
bug(fedreserve_get_observations): canvas_id input is ignored
Server version
0.2.2
mcp-ts-core version
^0.10.9
Runtime
Bun
Runtime version
Bun 1.3.11 / Node v26.3.1
Transport
HTTP (Streamable HTTP)
OS
macOS 26.1
Description
fedreserve_get_observations exposes canvas_id as an input for reusing a prior observations canvas, but the handler never reads it. When the second request spills, the server materializes a separate dataframe; when the second request is short enough not to spill, no dataframe is updated at all
Read the thread · 2026-06-30 · open · 0 comments
bug(fred_get_observations): truncateInline starves subsequent series of preview rows when canvas is unavailable
Server version
0.1.5
mcp-ts-core version
0.9.6
Runtime
Bun
Runtime version
Bun 1.3.x
Transport
HTTP
Description
When canvas is unavailable and a multi-series request is made, truncateInline distributes the 20-row preview budget sequentially. The first series consumes all 20 rows; every subsequent series gets observations: [] and observation_count: 0. The agent has no way to tell whether a series with count=0 had no data or was simply crowded out by the tr
Read the thread · 2026-05-23 · closed · 2 comments
The remaining reports are on the project's issue tracker.