io.github.cyanheads/openfda-mcp-server

io.github.cyanheads/openfda-mcp-server

Query FDA data on drugs, food, devices, and recalls via openFDA. STDIO or Streamable HTTP.

Connect this server

Add this to your MCP client config — claude_desktop_config.json (Claude Desktop) or .cursor/mcp.json (Cursor).Suits: Claude Desktop · Cursor.

{
  "mcpServers": {
    "openfda-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openfda-mcp-server@0.9.1"
      ],
      "env": {
        "CANVAS_PROVIDER_TYPE": "duckdb",
        "OPENFDA_DATAFRAME_DROP_ENABLED": "false",
        "OPENFDA_MIRROR_ENABLED": "false",
        "OPENFDA_MIRROR_PATH": "./data/openfda-mirror",
        "OPENFDA_MIRROR_FALLBACK_LIVE": "true",
        "OPENFDA_MIRROR_REFRESH_TIMEOUT_MS": "21600000",
        "OPENFDA_MIRROR_BASE_URL": "https://api.fda.gov",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}
Environment variables
  • CANVAS_PROVIDER_TYPEDataCanvas staging, on by default: stage=true or a canvas_id on an openfda_search_* tool or openfda_lookup_ndc stages the matched records as a SQL table for the openfda_dataframe_* tools. The DuckDB binding ships with the server. Set to 'none' to disable.
  • OPENFDA_DATAFRAME_DROP_ENABLEDEnable openfda_dataframe_drop, which deletes a table staged on a DataCanvas. Off by default; applies only when DataCanvas is enabled (CANVAS_PROVIDER_TYPE=duckdb).
  • OPENFDA_MIRROR_ENABLEDServe exact-key lookups for drug/label, drug/ndc, drug/enforcement, and drug/drugsfda from a local bulk mirror instead of the API. Off by default; the initial harvest runs out-of-band via the mirror:init script.
  • OPENFDA_MIRROR_PATHDirectory holding one SQLite file per mirrored dataset.
  • OPENFDA_MIRROR_FALLBACK_LIVEFall back to the live API when the mirror is cold, missing the record, or failing. Disable to fail loudly instead.
  • OPENFDA_MIRROR_REFRESH_TIMEOUT_MSWall-clock budget for one scheduled refresh before it is aborted. Raise it for drug/label, the only multi-partition dataset.
  • OPENFDA_MIRROR_BASE_URLHost serving the openFDA bulk download manifest. Override only to harvest from a private mirror of the dumps.
  • MCP_LOG_LEVELSets the minimum log level for output (e.g., 'debug', 'info', 'warn').

A starting point — check the repository for exact arguments and setup. Restart your client after editing the config.

Category
Developer Tools
Version
0.9.1
Registry
active
Published
10/26/2026

Remotes

  • streamable-httphttps://openfda.caseyjhand.com/mcp
Browse all Developer Tools →

Add the badge to your site

Show visitors that io.github.cyanheads/openfda-mcp-server is listed here — it’s also the link we check for a free listing.

io.github.cyanheads/openfda-mcp-server — listed on Serverdex

HTML — for your website

<a href="https://serverdex.io/server/io-github-cyanheads-openfda-mcp-server?utm_source=badge"><img src="https://serverdex.io/brand/badge.svg" alt="io.github.cyanheads/openfda-mcp-server — listed on Serverdex" width="123" height="40" loading="lazy"></a>

Recommended. A dofollow link from your own domain is the one that counts for search engines, and it's the link we check for a free listing.

Markdown — for your README

[![io.github.cyanheads/openfda-mcp-server — listed on Serverdex](https://serverdex.io/brand/badge.svg)](https://serverdex.io/server/io-github-cyanheads-openfda-mcp-server?utm_source=badge)

Nice for visibility, but GitHub marks README links nofollow, so it doesn't pass authority. Use the HTML badge on your site as well.