Skip to main content
Glama

Unofficial FDA MCP Server

A comprehensive Model Context Protocol (MCP) server that provides advanced pharmaceutical intelligence through the FDA's openFDA database, Orange Book, and Purple Book. This server combines real-time data access with locally-cached patent, exclusivity, and biosimilar data to deliver actionable insights for:

  • Drug Safety & Adverse Events: Real-time FAERS data and safety alerts

  • Patent Intelligence: Patent cliffs, loss of exclusivity (LOE) analysis, generic entry forecasting

  • Therapeutic Equivalents: AB-rated generic alternatives and substitutability

  • Biosimilar Intelligence: Biosimilar approvals and interchangeability designations

  • Regulatory Intelligence: FDA approvals, recalls, and drug shortages

  • Competitive Analysis: Market exclusivity periods and competitive landscape

Key Features:

  • Fast Queries: <10ms response time for Orange/Purple Book data after initial setup

  • Auto-Updates: Automatic monthly data downloads and caching

  • Comprehensive Coverage: 47,000+ drug products, 21,000+ patents, 2,000+ biologics

  • Zero Configuration: Works out of the box with automatic data downloads

Usage

{ "mcpServers": { "fda-mcp-server": { "command": "node", "args": ["/path/to/fda-mcp-server/build/index.js"], "env": {} } } }

What's New: Orange Book & Purple Book Integration

This server now includes comprehensive FDA Orange Book and Purple Book data for pharmaceutical intelligence:

Orange Book (Drug Patents & Generic Equivalents)

  • 47,486 drug products with approval dates and marketing status

  • 21,126 patents with expiration dates and use codes

  • 2,444 exclusivity periods (orphan, pediatric, new clinical studies, etc.)

  • Therapeutic Equivalence (TE) Codes: Identify AB-rated generics pharmacists can substitute

  • Patent Cliff Analysis: Forecast generic entry dates and loss of exclusivity

Purple Book (Biologics & Biosimilars)

  • 2,168 biological products including reference products and biosimilars

  • Interchangeability designations: Know which biosimilars can be substituted by pharmacists

  • Licensing dates and applicants for all biologics

  • Reference product mapping: Links biosimilars to their reference products

  • Market exclusivity tracking including orphan drug exclusivity

API Reference

Tool: fda_info

Unified tool for FDA drug information lookup, safety data, and pharmaceutical intelligence.

Parameters

Parameter

Type

Required

Default

Description

method

string

Yes

-

Operation type: lookup_drug, search_orange_book, get_therapeutic_equivalents, get_patent_exclusivity, analyze_patent_cliff, search_purple_book, get_biosimilar_interchangeability

search_term

string

Conditional

-

Search term or complex query (supports AND/OR, wildcards, ranges, field combinations)

drug_name

string

Conditional

-

Drug name for Orange/Purple Book searches

nda_number

string

Conditional

-

NDA number for patent/exclusivity lookup

reference_product

string

Conditional

-

Reference product name for biosimilar interchangeability

include_generics

boolean

No

true

Include generic products in Orange Book searches

years_ahead

integer

No

5

Years ahead for patent cliff analysis

search_type

string

No

general

Type of search: general, label, adverse_events, recalls, shortages

fields_for_general

string

No

-

Specific field for general drug data searches (34 available fields)

fields_for_adverse_events

string

No

-

Specific field for adverse events searches (66 available fields)

fields_for_label

string

No

-

Specific field for label searches (167 available fields)

fields_for_recalls

string

No

-

Specific field for recalls and enforcement searches (39 available fields)

fields_for_shortages

string

No

-

Specific field for drug shortages searches (44 available fields)

limit

integer

No

10

Maximum results to return (1-100)

Methods

OpenFDA API Methods
Unified Drug Lookup (lookup_drug)

Search for comprehensive drug information with different search types and optional field targeting:

Comprehensive Search (All Fields):

{ "method": "lookup_drug", "search_term": "aspirin", "search_type": "general" }

Field-Specific Search:

{ "method": "lookup_drug", "search_term": "Discontinued", "search_type": "general", "fields_for_general": "products.marketing_status" }

Complex Boolean Query:

{ "method": "lookup_drug", "search_term": "openfda.generic_name:aspirin+AND+products.dosage_form:TABLET", "search_type": "general" }

Drug Labels and Prescribing Information:

{ "method": "lookup_drug", "search_term": "Lipitor", "search_type": "label" }

Label Field-Specific Search:

{ "method": "lookup_drug", "search_term": "pregnancy", "search_type": "label", "fields_for_label": "warnings" }

Adverse Events and Safety Data:

{ "method": "lookup_drug", "search_term": "metformin", "search_type": "adverse_events", "limit": 25 }

Drug Recalls and Safety Alerts:

{ "method": "lookup_drug", "search_term": "insulin", "search_type": "recalls", "limit": 20 }

Drug Shortages:

{ "method": "lookup_drug", "search_term": "bupivacaine", "search_type": "shortages", "limit": 10 }
Orange Book Methods (Patents & Generic Equivalents)

The Orange Book provides information on drug patents, exclusivity, and therapeutic equivalence. Data is automatically downloaded and cached locally for fast queries (<10ms after initial setup).

Search Orange Book (search_orange_book)

Search for brand and generic drug products by name:

{ "method": "search_orange_book", "drug_name": "Lipitor", "include_generics": true }

Returns brand products and generic alternatives with approval dates, applicants, TE codes, and marketing status.

Get Therapeutic Equivalents (get_therapeutic_equivalents)

Find AB-rated generic equivalents that are therapeutically equivalent to the reference listed drug:

{ "method": "get_therapeutic_equivalents", "drug_name": "fluoxetine" }

Returns the Reference Listed Drug (RLD) plus all AB-rated and non-AB generics. AB-rated generics can be substituted by pharmacists.

Get Patent & Exclusivity Data (get_patent_exclusivity)

Look up all patents and exclusivity periods for a drug by NDA number:

{ "method": "get_patent_exclusivity", "nda_number": "020702" }

Returns active patents with expiration dates, patent use codes, and FDA exclusivity periods.

Analyze Patent Cliff (analyze_patent_cliff)

Analyze when a drug will lose patent/exclusivity protection and face generic competition:

{ "method": "analyze_patent_cliff", "drug_name": "Trikafta", "years_ahead": 10 }

Returns patent timeline, next expiration dates, estimated generic entry date, and years until loss of exclusivity (LOE).

Purple Book Methods (Biologics & Biosimilars)

The Purple Book provides information on licensed biological products and biosimilar/interchangeable products. Data is automatically downloaded monthly and cached locally.

Search Purple Book (search_purple_book)

Search for biological products and their biosimilars:

{ "method": "search_purple_book", "drug_name": "adalimumab" }

Returns the reference biological product and all approved biosimilars with licensing dates, applicants, and interchangeability status.

Get Biosimilar Interchangeability (get_biosimilar_interchangeability)

Check which biosimilars are designated as interchangeable (can be substituted by pharmacists):

{ "method": "get_biosimilar_interchangeability", "reference_product": "Humira" }

Returns interchangeable biosimilars (pharmacy can substitute without prescriber) and similar but non-interchangeable biosimilars (requires new prescription).

Complex Query Syntax

The FDA MCP Server supports powerful openFDA query syntax for advanced searches:

Boolean Operators

AND Queries - Find results matching multiple criteria:

{ "method": "lookup_drug", "search_term": "openfda.generic_name:ibuprofen+AND+products.dosage_form:TABLET", "search_type": "general" }

OR Queries - Find results matching any criteria:

{ "method": "lookup_drug", "search_term": "openfda.generic_name:ibuprofen+OR+openfda.brand_name:advil", "search_type": "general" }

Wildcard Patterns

Prefix wildcards - Find names starting with a pattern:

{ "method": "lookup_drug", "search_term": "child*", "search_type": "general", "fields_for_general": "openfda.brand_name" }

General wildcards - Find any field containing a pattern:

{ "method": "lookup_drug", "search_term": "*5*", "search_type": "general" }

Range Queries

Age ranges - Find adverse events for specific age groups:

{ "method": "lookup_drug", "search_term": "patient.patientonsetage:[65+TO+*]", "search_type": "adverse_events" }

Date ranges - Find events within date ranges:

{ "method": "lookup_drug", "search_term": "receiptdate:[2023-01-01+TO+2023-12-31]", "search_type": "adverse_events" }

Special Modifiers

Field exists - Find records where a field has any value:

{ "method": "lookup_drug", "search_term": "_exists_:serious", "search_type": "adverse_events" }

Field missing - Find records where a field is empty:

{ "method": "lookup_drug", "search_term": "_missing_:companynumb", "search_type": "adverse_events" }

Complex Multi-Field Examples

Advanced adverse events - Serious events in elderly patients:

{ "method": "lookup_drug", "search_term": "patient.drug.medicinalproduct:acetaminophen+AND+serious:1+AND+patient.patientonsetage:[65+TO+*]", "search_type": "adverse_events" }

Grouped conditions - Multiple drug names with conditions:

{ "method": "lookup_drug", "search_term": "(patient.drug.medicinalproduct:(cetirizine+OR+loratadine))+AND+serious:2", "search_type": "adverse_events" }

Geographic filtering - Events by country with drug and severity:

{ "method": "lookup_drug", "search_term": "occurcountry:US+AND+patient.drug.medicinalproduct:lipitor+AND+serious:1", "search_type": "adverse_events" }

Usage Examples

Comprehensive Drug Search (All Fields)

// Search across all FDA database fields (267 total fields) { "method": "lookup_drug", "search_term": "aspirin", "search_type": "general" }

Field-Specific Searches

General Search Fields (34 available):

// Find all discontinued drugs { "method": "lookup_drug", "search_term": "Discontinued", "search_type": "general", "fields_for_general": "products.marketing_status" } // Search by manufacturer { "method": "lookup_drug", "search_term": "Pfizer", "search_type": "general", "fields_for_general": "openfda.manufacturer_name" } // Find drugs by dosage form { "method": "lookup_drug", "search_term": "TABLET", "search_type": "general", "fields_for_general": "products.dosage_form" }

Adverse Events Fields (66 available):

// Find headache reactions { "method": "lookup_drug", "search_term": "headache", "search_type": "adverse_events", "fields_for_adverse_events": "patient.reaction.reactionmeddrapt" } // Find serious adverse events { "method": "lookup_drug", "search_term": "1", "search_type": "adverse_events", "fields_for_adverse_events": "serious" } // Find events by patient gender (1=male, 2=female) { "method": "lookup_drug", "search_term": "1", "search_type": "adverse_events", "fields_for_adverse_events": "patient.patientsex" }

Label Search Fields (167 available):

// Find labels with specific warnings { "method": "lookup_drug", "search_term": "pregnancy", "search_type": "label", "fields_for_label": "warnings" } // Search for drug interactions { "method": "lookup_drug", "search_term": "warfarin", "search_type": "label", "fields_for_label": "drug_interactions" } // Find dosage information for specific conditions { "method": "lookup_drug", "search_term": "pediatric", "search_type": "label", "fields_for_label": "dosage_and_administration" }

Recalls Fields (39 available):

// Find recalls by recalling firm { "method": "lookup_drug", "search_term": "Pfizer", "search_type": "recalls", "fields_for_recalls": "recalling_firm" } // Find Class I recalls (most serious) { "method": "lookup_drug", "search_term": "I", "search_type": "recalls", "fields_for_recalls": "classification" } // Search recalls by product description { "method": "lookup_drug", "search_term": "tablet", "search_type": "recalls", "fields_for_recalls": "product_description" }

Shortages Fields (44 available):

// Find current shortages by status { "method": "lookup_drug", "search_term": "Currently+in+Shortage", "search_type": "shortages", "fields_for_shortages": "status" } // Search shortages by therapeutic category { "method": "lookup_drug", "search_term": "CEPHALOSPORIN", "search_type": "shortages", "fields_for_shortages": "therapeutic_category" } // Find shortages by company name { "method": "lookup_drug", "search_term": "Pfizer", "search_type": "shortages", "fields_for_shortages": "company_name" }

Detailed Drug Label

// Get FDA-approved prescribing information for Tylenol { "method": "lookup_drug", "search_term": "Tylenol", "search_type": "label" }

Safety and Adverse Events

// Check adverse events for ibuprofen { "method": "lookup_drug", "search_term": "ibuprofen", "search_type": "adverse_events" }

Drug Recalls

// Search for recalls related to blood pressure medications { "method": "lookup_drug", "search_term": "lisinopril", "search_type": "recalls", "limit": 10 }

Drug Shortages

// Monitor current drug supply shortages { "method": "lookup_drug", "search_term": "bupivacaine", "search_type": "shortages", "limit": 10 }

Orange Book - Patents and Generic Equivalents

// Search for Prozac and its generic equivalents { "method": "search_orange_book", "drug_name": "Prozac", "include_generics": true } // Find AB-rated therapeutically equivalent generics for fluoxetine { "method": "get_therapeutic_equivalents", "drug_name": "fluoxetine" } // Get patent and exclusivity data for Lipitor (NDA 020702) { "method": "get_patent_exclusivity", "nda_number": "020702" } // Analyze patent cliff for Ozempic - when will generics enter? { "method": "analyze_patent_cliff", "drug_name": "semaglutide", "years_ahead": 10 }

Purple Book - Biologics and Biosimilars

// Search for Humira and all adalimumab biosimilars { "method": "search_purple_book", "drug_name": "adalimumab" } // Check which biosimilars are interchangeable with Humira { "method": "get_biosimilar_interchangeability", "reference_product": "Humira" } // Find all Dupixent (dupilumab) biosimilars { "method": "search_purple_book", "drug_name": "dupilumab" }

Real-World Example Results:

  • Ozempic (semaglutide): 72 active patents, first patent expires Aug 2025, but generic entry estimated Jan 2028 (2.1 years away)

  • Humira (adalimumab): 10 biosimilars approved, only Hyrimoz is interchangeable (since April 2025)

  • Prozac (fluoxetine): All patents expired, 46 AB-rated generic equivalents available

  • Trikafta: 109 active patents, orphan exclusivity until 2031, extensive patent protection

Available Search Fields

The API supports searching across FDA database fields total. Use field-specific parameters for targeted searches:

  • fields_for_general: 34 fields for general drug data searches

  • fields_for_adverse_events: 66 fields for adverse events searches

  • fields_for_label: 167 fields for drug label searches

  • fields_for_recalls: 39 fields for recalls and enforcement searches

  • fields_for_shortages: 44 fields for drug shortages searches

OpenFDA Section (16 fields)

  • openfda.application_number - FDA application number

  • openfda.brand_name - Brand/trade name of the drug

  • openfda.generic_name - Generic name of the drug

  • openfda.manufacturer_name - Name of the manufacturer

  • openfda.nui - Numeric identifier for ingredients

  • openfda.package_ndc - Package-level National Drug Code

  • openfda.pharm_class_cs - Chemical structure pharmacologic class

  • openfda.pharm_class_epc - Established pharmacologic class

  • openfda.pharm_class_pe - Physiologic effect pharmacologic class

  • openfda.pharm_class_moa - Mechanism of action pharmacologic class

  • openfda.product_ndc - Product-level National Drug Code

  • openfda.route - Route of administration

  • openfda.rxcui - RxNorm concept unique identifier

  • openfda.spl_id - Structured Product Labeling identifier

  • openfda.spl_set_id - SPL document set identifier

  • openfda.substance_name - Name of the active substance

  • openfda.unii - Unique Ingredient Identifier

Products Section (9 fields)

  • products.active_ingredients.name - Name of active ingredient

  • products.active_ingredients.strength - Strength of active ingredient

  • products.dosage_form - Dosage form (e.g., "TABLET", "CAPSULE")

  • products.marketing_status - Marketing status (e.g., "Discontinued", "Prescription")

  • products.product_number - Product number within application

  • products.reference_drug - Reference drug designation

  • products.reference_standard - Reference standard designation

  • products.route - Route of administration

  • products.te_code - Therapeutic equivalence evaluation code

Submissions Section (10+ fields)

  • submissions.application_docs - Application documentation

  • submissions.review_priority - Review priority designation

  • submissions.submission_class_code - Submission classification code

  • submissions.submission_class_code_description - Description of submission class

  • submissions.submission_number - Sequential submission number

  • submissions.submission_property_type.code - Property type code

  • submissions.submission_public_notes - Public notes about submission

  • submissions.submission_status - Current status of submission

  • submissions.submission_status_date - Date of status change

  • submissions.submission_type - Type of submission

Usage Examples by Field Type

Search by Marketing Status:

{ "method": "lookup_drug", "search_term": "Discontinued", "search_type": "general", "fields_for_general": "products.marketing_status" }

Search by Manufacturer:

{ "method": "lookup_drug", "search_term": "Pfizer", "search_type": "general", "fields_for_general": "openfda.manufacturer_name" }

Search by Dosage Form:

{ "method": "lookup_drug", "search_term": "INJECTION", "search_type": "general", "fields_for_general": "products.dosage_form" }

Search by Active Ingredient:

{ "method": "lookup_drug", "search_term": "acetaminophen", "search_type": "general", "fields_for_general": "products.active_ingredients.name" }

Response Format

All responses include:

{ "success": true, "query": "aspirin", "search_type": "general", "total_results": 150, "results": [...], "metadata": { "total": 150, "skip": 0, "limit": 10 } }

Search Tips

Drug Names

  • Use both generic names (e.g., "acetaminophen") and brand names (e.g., "Tylenol")

  • Try different name variations if initial search returns no results

  • Include common spellings and abbreviations

  • Use wildcards for partial matches (e.g., child* for children's medications)

Search Types

  • general: Comprehensive search across all FDA database fields (34 fields available)

  • label: Detailed prescribing information and FDA-approved labels (167 fields available)

  • adverse_events: Safety data and adverse reaction reports (66 fields available)

  • recalls: Drug recalls and safety alerts (39 fields available)

  • shortages: Current drug supply shortages and availability (44 fields available)

Complex Query Strategies

  • Boolean Logic: Combine conditions with AND/OR operators

  • Field Targeting: Use openfda.field_name:value syntax for precise searches

  • Range Queries: Use [min+TO+max] for age, date, or numeric ranges

  • Wildcards: Use * for pattern matching (*5*, MEF*)

  • Special Modifiers: Use _exists_:field or _missing_:field for data completeness

Field-Specific Searching

  • Use fields_for_general for general drug data (34 options)

  • Use fields_for_adverse_events for adverse events (66 options)

  • Use fields_for_label for drug label searches (167 options)

  • Use fields_for_recalls for recalls and enforcement (39 options)

  • Use fields_for_shortages for drug shortages (44 options)

  • Examples: products.marketing_status, patient.reaction.reactionmeddrapt, warnings, recalling_firm, status

  • Enables precise queries like finding discontinued drugs, specific adverse reactions, label warnings, recall classifications, or shortage statuses

Advanced Query Examples

  • Multi-condition: drug:aspirin+AND+form:TABLET+AND+status:active

  • Age-specific: patient.patientonsetage:[18+TO+65] for adults

  • Geographic: occurcountry:US+AND+serious:1 for US serious events

  • Time-based: receiptdate:[2023-01-01+TO+2023-12-31] for 2023 data

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/openpharma-org/fda-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server