Reported issues for openfda-mcp-server
Pod holds 16 of 16 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 openfda-mcp-server.
Most discussed
feat(drug_profile): accept drug_name as an alias of drug
Use case
openfda_drug_profile takes the drug as drug. A caller that sends { "drug_name": "aspirin" } gets -32602 (drug: expected string, received undefined, Unrecognized key: "drug_name"). drug_name is the name a model reaches for first, its meaning is not in doubt, and the tool has only the one parameter it could map to.
Proposed behavior
Accept drug_name (and name) as aliases of drug, so the call succeeds instead of costing a retry. The advertised schema keeps…
Read the thread · 2026-09-18 · closed · 2 comments
bug(count_values): uncountable fields lead to a suffix-toggle recovery loop
Server version
0.7.7
mcp-ts-core version
0.13.6
Runtime
Bun
Runtime version
Bun 1.4.0
Transport
HTTP (Streamable HTTP)
Description
Some advertised fields cannot be aggregated by openfda_count_values in either bare or .exact form. The bare field answers a 5xx illegal_argument_exception, and .exact answers 404 Nothing to count. Each not_aggregatable message suggests the other form, then falls back to openfda_describe_fields. That tool lists these…
Read the thread · 2026-08-11 · closed · 2 comments
bug(get_drug_label): selected table sections return raw SPL markup
Server version
0.7.8
mcp-ts-core version
0.13.6
Runtime
Bun
Runtime version
Bun 1.4.0
Transport
HTTP (Streamable HTTP)
Description
openfda_get_drug_label writes SPL *_table sections into content[] as raw SPL table markup with encoded entities. format() joins every section value verbatim, so a caller that selects a table section (or follows an outline that recommends one) must parse <table>, <content styleCode>, colspan/rowspan, and †…
Read the thread · 2026-08-11 · closed · 2 comments
bug(search_recalls): staged device/recall rows drop identity and status columns
Server version
0.7.8
mcp-ts-core version
0.13.6
Runtime
Bun
Runtime version
Bun 1.4.0
Transport
HTTP (Streamable HTTP)
Description
openfda_search_recalls with stage: true stages rows against RECALLS_CANVAS_SCHEMA, which lists only enforcement fields. The canvas ignores fields outside the schema, so staged device/recall rows lose their identity (product_res_number), status (recall_status), root_cause_description, and event_date_* columns. SQL…
Read the thread · 2026-09-22 · closed · 1 comment
bug(count_values): "Nothing to count" on a countable field reports not_aggregatable
Server version
0.7.7
mcp-ts-core version
0.13.6
Runtime
Bun
Runtime version
Bun 1.4.0
Transport
stdio
Description
openfda_count_values reports not_aggregatable for a countable field when the search matches only records that lack the field. openFDA answers that case with 404 Nothing to count, which classifyError maps to not_aggregatable with a "drop .exact" correction. The field counts fine; the matched set simply carries no values for it, so the…
Read the thread · 2026-09-22 · closed · 1 comment
bug(canvas): staging search tools don't declare canvas_not_found or canvas_capacity_exhausted
Server version
0.7.5
mcp-ts-core version
0.13.6
Runtime
Bun
Runtime version
Bun 1.4.0
Transport
stdio
Description
The eight search tools that stage to DataCanvas (openfda_search_*, openfda_lookup_ndc) accept a canvas_id, but their errors[] contracts omit the two failures canvas.acquire() raises: canvas_not_found (a well-formed id that expired or never existed) and canvas_capacity_exhausted (minting a canvas at the tenant cap). Both reach the…
Read the thread · 2026-09-22 · closed · 1 comment
feat(canvas): staged responses never name openfda_dataframe_describe
Use case
Every openFDA search tool that stages to a DataCanvas hands back a canvas_id pointing only at openfda_dataframe_query — openfda_dataframe_describe is never named, in the enrichment notice, content[], the output-field descriptions, or any tool's own description. An agent holding the handle has the table name but no route to the column names, so it writes SQL against a schema it hasn't seen — a field the inline preview renders out of a JSON block…
Read the thread · 2026-08-13 · closed · 1 comment
bug(pagination): exhausted pages reset known totals to zero
Server version
0.7.7
mcp-ts-core version
0.13.6
Runtime
Bun
Runtime version
Bun 1.4.0
Transport
HTTP (Streamable HTTP)
Description
A search page requested past the end of its result set returns totalResults: 0. openFDA answers any skip at or beyond the match count with the same 404 No matches found! it uses for a zero-match query, and OpenFdaService.classifyError turns that 404 into meta.total: 0 without recovering the real total. The response then…
Read the thread · 2026-08-11 · closed · 1 comment
Most recent
feat(search_recalls): retain affected-lot codes in enforcement staging
Use case
A pharmacist analyzing staged drug recalls needs to identify affected lots and expiry dates. Enforcement records return code_info, but the staged table discards it, so that step cannot be completed through SQL.
Proposed behavior
Add nullable code_info to the enforcement staging schema in openfda_search_recalls and expose it through openfda_dataframe_describe.
Example: stage {"category":"drug","search":"openfda.generic_name:\"METFORMIN HYDROCHLORIDE\"","limit":2}.…
Read the thread · 2026-09-30 · open · 0 comments
feat(search): bounded retrieval for oversized single records
Use case
An exploratory openfda_search_adverse_events call can return a single 100 KB record even with limit:1. Reducing the page size cannot help a client that needs a bounded view of that report.
Related: #39
Proposed behavior
Add selective record-field retrieval or an outline for an oversized single record, retaining its identity and a concrete re-call route. Keep both response surfaces aligned and never render a real match as an empty page. Always disclose an over-budget…
Read the thread · 2026-09-30 · open · 0 comments
bug(search_animal_events): masked brands break the advertised search
Server version
0.7.9
mcp-ts-core version
0.13.6
Runtime
Bun
Runtime version
1.4.2
Transport
HTTP (Streamable HTTP)
Description
openfda_search_animal_events advertises drug.brand_name:"Bravecto", but the provider masks veterinary brands as MSK. Empty-result recovery recommends the same masked field and does not explain the limitation.
Steps to reproduce
- Search
animal.species:"Dog" AND drug.brand_name:"Bravecto": zero reports. - Count…
Read the thread · 2026-09-30 · open · 0 comments
bug(sort): unsupported directions silently return unsorted results
Server version
0.7.9
mcp-ts-core version
0.13.6
Runtime
Bun
Runtime version
1.4.2
Transport
HTTP (Streamable HTTP)
Description
The shared sort pattern accepts unsupported directions. openFDA returns success while ignoring the requested ordering; HTTP 200 does not establish that sorting worked.
Related: #38
Steps to reproduce
Call openfda_search_recalls with:
{"category":"drug","search":"openfda.generic_name:\"METFORMIN…
[Read the thread](https://github.com/cyanheads/openfda-mcp-server/issues/64) · 2026-09-30 · open · 0 comments
### bug(drug_profile): total excludes reports without seriousness
### Server version
0.7.9
### mcp-ts-core version
0.13.6
### Runtime
Bun
### Runtime version
1.4.2
### Transport
HTTP (Streamable HTTP)
### Description
`openfda_drug_profile` computes `adverse_events.total` by summing `serious` count buckets, silently excluding reports without that field.
### Steps to reproduce
1. Call `openfda_drug_profile` with `{"drug":"metformin"}`.
2. Search adverse events with…
[Read the thread](https://github.com/cyanheads/openfda-mcp-server/issues/63) · 2026-09-30 · open · 0 comments
### bug(field-catalog): correct outcome codes and date/identifier meanings
### Server version
0.7.9
### mcp-ts-core version
0.13.6
### Runtime
Bun
### Runtime version
1.4.2
### Transport
HTTP (Streamable HTTP)
### Description
`openfda_describe_fields` supplies incorrect field meanings that can misdirect queries and interpretation.
### Steps to reproduce
Call the tool for `drug/event`, `drug/shortages`, and `drug/ndc`.
### Actual behavior
- `patient.reaction.reactionoutcome`: `4=fatal, 5=unknown`; code 6 is omitted.
- Shortage date notes say YYYYMMDD,…
[Read the thread](https://github.com/cyanheads/openfda-mcp-server/issues/62) · 2026-09-30 · open · 0 comments
### bug(search_recalls): device recalls render enforcement fields as N/A
### Server version
0.7.3
### mcp-ts-core version
0.11.1
### Runtime
Bun
### Runtime version
Bun 1.3.14
### Transport
HTTP (Streamable HTTP)
### Description
`openfda_search_recalls` formats `device/recall` records with `device/enforcement`'s field names. `device/recall` has no `recall_number`, `status`, `voluntary_mandated`, or hazard-classification field — identity is `product_res_number`, status is `recall_status`, and `openfda.device_class` is a distinct device-class rating, not…
[Read the thread](https://github.com/cyanheads/openfda-mcp-server/issues/46) · 2026-08-11 · closed · 1 comment
### bug(count_values): exact-limit result sets report false truncation
### Server version
0.7.7
### mcp-ts-core version
0.13.6
### Runtime
Bun
### Runtime version
Bun 1.4.0
### Transport
HTTP (Streamable HTTP)
### Description
`openfda_count_values` marks every response whose row count equals `limit` as truncated, even when the result set is exhaustive. A binary field then claims that more distinct values may exist when both values are already present.
Related: #7
### Steps to reproduce
1. Call `openfda_count_values` with `{ "endpoint": "drug/event",…
[Read the thread](https://github.com/cyanheads/openfda-mcp-server/issues/44) · 2026-08-11 · closed · 1 comment
The remaining reports are on [the project's issue tracker](https://github.com/cyanheads/openfda-mcp-server/issues).