Koskamo

openfda-mcp-server

An MCP server that queries the openFDA public API to retrieve data on drugs, food, devices, and recalls. It provides tools for searching adverse events, recalls, drug approvals, device clearances, and looking up NDC codes and drug labels.

Package and access

Local package with source-attributed installation metadata. Koskamo does not execute packages during review.

openfda-mcp-server logo, by cyanheadsCommunity listingLocal stdioSource reviewed; not executedPublished by cyanheads
Vendor documentation

What you can do with it

  • Search adverse event reports across drugs, food, and devices
  • Search enforcement reports and recall actions
  • Look up FDA drug labeling and package inserts
  • Search FDA drug shortage records

Source and maintenance

Community listingRegistry 0.9.1
Maintenance checked

Packages and installation

Source-provided package data. Koskamo has not executed or live-probed this package.

@cyanheads/openfda-mcp-server 0.9.1

npmnpx
@cyanheads/openfda-mcp-server package definition
{
  "version": "0.9.1",
  "transport": "stdio",
  "identifier": "@cyanheads/openfda-mcp-server",
  "runtimeHint": "npx",
  "registryType": "npm",
  "registryBaseUrl": "https://registry.npmjs.org",
  "environmentVariables": [
    {
      "name": "OPENFDA_API_KEY",
      "format": "string",
      "description": "Free API key from open.fda.gov — increases daily limit from 1K to 120K requests."
    },
    {
      "name": "CANVAS_PROVIDER_TYPE",
      "format": "string",
      "default": "duckdb",
      "description": "DataCanvas 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."
    },
    {
      "name": "OPENFDA_DATAFRAME_DROP_ENABLED",
      "format": "string",
      "default": "false",
      "description": "Enable openfda_dataframe_drop, which deletes a table staged on a DataCanvas. Off by default; applies only when DataCanvas is enabled (CANVAS_PROVIDER_TYPE=duckdb)."
    },
    {
      "name": "OPENFDA_MIRROR_ENABLED",
      "format": "string",
      "default": "false",
      "description": "Serve 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."
    },
    {
      "name": "OPENFDA_MIRROR_PATH",
      "format": "string",
      "default": "./data/openfda-mirror",
      "description": "Directory holding one SQLite file per mirrored dataset."
    },
    {
      "name": "OPENFDA_MIRROR_REFRESH_CRON",
      "format": "string",
      "description": "Cron expression for the in-process mirror refresh. HTTP transport only; stdio operators run mirror:refresh from the host. Requires the optional node-cron peer dependency."
    },
    {
      "name": "OPENFDA_MIRROR_FALLBACK_LIVE",
      "format": "string",
      "default": "true",
      "description": "Fall back to the live API when the mirror is cold, missing the record, or failing. Disable to fail loudly instead."
    },
    {
      "name": "OPENFDA_MIRROR_REFRESH_TIMEOUT_MS",
      "format": "string",
      "default": "21600000",
      "description": "Wall-clock budget for one scheduled refresh before it is aborted. Raise it for drug/label, the only multi-partition dataset."
    },
    {
      "name": "OPENFDA_MIRROR_BASE_URL",
      "format": "string",
      "default": "https://api.fda.gov",
      "description": "Host serving the openFDA bulk download manifest. Override only to harvest from a private mirror of the dumps."
    },
    {
      "name": "MCP_LOG_LEVEL",
      "format": "string",
      "default": "info",
      "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
    }
  ]
}

Tools

Reported by the attributed source; not independently observed by Koskamo.

No tool definitions available.

Connect from your client

Each snippet configures the same source-provided package; replace placeholders before use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Cursor

Merge this local stdio configuration, replace every placeholder environment value, and restart Cursor. Koskamo has not executed this package.
Cursor configuration
{
  "mcpServers": {
    "openfda-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openfda-mcp-server@0.9.1"
      ],
      "env": {
        "OPENFDA_API_KEY": "<YOUR_OPENFDA_API_KEY>",
        "CANVAS_PROVIDER_TYPE": "<YOUR_CANVAS_PROVIDER_TYPE>",
        "OPENFDA_DATAFRAME_DROP_ENABLED": "<YOUR_OPENFDA_DATAFRAME_DROP_ENABLED>",
        "OPENFDA_MIRROR_ENABLED": "<YOUR_OPENFDA_MIRROR_ENABLED>",
        "OPENFDA_MIRROR_PATH": "<YOUR_OPENFDA_MIRROR_PATH>",
        "OPENFDA_MIRROR_REFRESH_CRON": "<YOUR_OPENFDA_MIRROR_REFRESH_CRON>",
        "OPENFDA_MIRROR_FALLBACK_LIVE": "<YOUR_OPENFDA_MIRROR_FALLBACK_LIVE>",
        "OPENFDA_MIRROR_REFRESH_TIMEOUT_MS": "<YOUR_OPENFDA_MIRROR_REFRESH_TIMEOUT_MS>",
        "OPENFDA_MIRROR_BASE_URL": "<YOUR_OPENFDA_MIRROR_BASE_URL>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>"
      }
    }
  }
}

Cline

Merge this local stdio configuration, replace every placeholder environment value, and restart Cline. Koskamo has not executed this package.
Cline configuration
{
  "mcpServers": {
    "openfda-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openfda-mcp-server@0.9.1"
      ],
      "env": {
        "OPENFDA_API_KEY": "<YOUR_OPENFDA_API_KEY>",
        "CANVAS_PROVIDER_TYPE": "<YOUR_CANVAS_PROVIDER_TYPE>",
        "OPENFDA_DATAFRAME_DROP_ENABLED": "<YOUR_OPENFDA_DATAFRAME_DROP_ENABLED>",
        "OPENFDA_MIRROR_ENABLED": "<YOUR_OPENFDA_MIRROR_ENABLED>",
        "OPENFDA_MIRROR_PATH": "<YOUR_OPENFDA_MIRROR_PATH>",
        "OPENFDA_MIRROR_REFRESH_CRON": "<YOUR_OPENFDA_MIRROR_REFRESH_CRON>",
        "OPENFDA_MIRROR_FALLBACK_LIVE": "<YOUR_OPENFDA_MIRROR_FALLBACK_LIVE>",
        "OPENFDA_MIRROR_REFRESH_TIMEOUT_MS": "<YOUR_OPENFDA_MIRROR_REFRESH_TIMEOUT_MS>",
        "OPENFDA_MIRROR_BASE_URL": "<YOUR_OPENFDA_MIRROR_BASE_URL>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>"
      }
    }
  }
}

VS Code

Merge this local stdio configuration, replace every placeholder environment value, and restart VS Code. Koskamo has not executed this package.
VS Code configuration
{
  "servers": {
    "openfda-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openfda-mcp-server@0.9.1"
      ],
      "env": {
        "OPENFDA_API_KEY": "<YOUR_OPENFDA_API_KEY>",
        "CANVAS_PROVIDER_TYPE": "<YOUR_CANVAS_PROVIDER_TYPE>",
        "OPENFDA_DATAFRAME_DROP_ENABLED": "<YOUR_OPENFDA_DATAFRAME_DROP_ENABLED>",
        "OPENFDA_MIRROR_ENABLED": "<YOUR_OPENFDA_MIRROR_ENABLED>",
        "OPENFDA_MIRROR_PATH": "<YOUR_OPENFDA_MIRROR_PATH>",
        "OPENFDA_MIRROR_REFRESH_CRON": "<YOUR_OPENFDA_MIRROR_REFRESH_CRON>",
        "OPENFDA_MIRROR_FALLBACK_LIVE": "<YOUR_OPENFDA_MIRROR_FALLBACK_LIVE>",
        "OPENFDA_MIRROR_REFRESH_TIMEOUT_MS": "<YOUR_OPENFDA_MIRROR_REFRESH_TIMEOUT_MS>",
        "OPENFDA_MIRROR_BASE_URL": "<YOUR_OPENFDA_MIRROR_BASE_URL>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>"
      }
    }
  }
}

Claude Desktop

Merge this local stdio configuration, replace every placeholder environment value, and restart Claude Desktop. Koskamo has not executed this package.
Claude Desktop configuration
{
  "mcpServers": {
    "openfda-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openfda-mcp-server@0.9.1"
      ],
      "env": {
        "OPENFDA_API_KEY": "<YOUR_OPENFDA_API_KEY>",
        "CANVAS_PROVIDER_TYPE": "<YOUR_CANVAS_PROVIDER_TYPE>",
        "OPENFDA_DATAFRAME_DROP_ENABLED": "<YOUR_OPENFDA_DATAFRAME_DROP_ENABLED>",
        "OPENFDA_MIRROR_ENABLED": "<YOUR_OPENFDA_MIRROR_ENABLED>",
        "OPENFDA_MIRROR_PATH": "<YOUR_OPENFDA_MIRROR_PATH>",
        "OPENFDA_MIRROR_REFRESH_CRON": "<YOUR_OPENFDA_MIRROR_REFRESH_CRON>",
        "OPENFDA_MIRROR_FALLBACK_LIVE": "<YOUR_OPENFDA_MIRROR_FALLBACK_LIVE>",
        "OPENFDA_MIRROR_REFRESH_TIMEOUT_MS": "<YOUR_OPENFDA_MIRROR_REFRESH_TIMEOUT_MS>",
        "OPENFDA_MIRROR_BASE_URL": "<YOUR_OPENFDA_MIRROR_BASE_URL>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>"
      }
    }
  }
}

Let your agent find its tools

Find servers like openfda-mcp-server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.