Skip to main content
Glama
README.md
# @striderlabs/mcp-goodrx

A Model Context Protocol (MCP) connector for the GoodRx prescription discount service. Enables AI assistants to search for drug prices, find pharmacies, and retrieve discount coupons using GoodRx.

## Overview

This MCP connector uses Playwright browser automation to interact with GoodRx, providing real-time prescription drug pricing and discount coupon data.

## Installation

```bash
npm install @striderlabs/mcp-goodrx
```

Or install Playwright browsers after installation:

```bash
npx playwright install chromium
```

## Tools

### `goodrx_search_drug`

Search for a prescription drug on GoodRx to find available pricing information, forms, and dosages.

**Parameters:**
- `drug_name` (string, required) - Name of the drug (generic or brand name)
- `dosage` (string, optional) - Dosage form (e.g., "10mg", "500mg tablet")
- `quantity` (number, optional) - Number of pills/units

### `goodrx_get_prices`

Get GoodRx discount prices for a drug at nearby pharmacies.

**Parameters:**
- `drug_name` (string, required) - Name of the drug
- `dosage` (string, optional) - Dosage (e.g., "10mg")
- `quantity` (number, default: 30) - Number of pills
- `zip_code` (string, optional) - ZIP code to search near
- `form` (string, optional) - Drug form (tablet, capsule, etc.)

### `goodrx_get_coupon`

Get a GoodRx discount coupon for a specific drug at a pharmacy. Returns BIN, PCN, Group, and Member ID needed at checkout.

**Parameters:**
- `drug_name` (string, required) - Name of the drug
- `pharmacy` (string, optional) - Pharmacy name (e.g., "CVS", "Walgreens")
- `dosage` (string, optional) - Dosage (e.g., "10mg")
- `quantity` (number, default: 30) - Number of pills
- `zip_code` (string, optional) - ZIP code for the pharmacy location

### `goodrx_find_pharmacies`

Find pharmacies near a location that accept GoodRx discount coupons.

**Parameters:**
- `zip_code` (string, required) - ZIP code to search near
- `pharmacy_name` (string, optional) - Filter by pharmacy chain name
- `radius_miles` (number, default: 10) - Search radius in miles

### `goodrx_compare_prices`

Compare drug prices across multiple pharmacies to find the best deal using GoodRx.

**Parameters:**
- `drug_name` (string, required) - Name of the drug to compare
- `dosage` (string, optional) - Dosage (e.g., "10mg")
- `quantity` (number, default: 30) - Number of pills
- `zip_code` (string, optional) - ZIP code for comparison
- `pharmacies` (string[], optional) - Specific pharmacies to compare (e.g., ["CVS", "Walgreens", "Rite Aid"])
- `form` (string, optional) - Drug form (tablet, capsule, etc.)

## Usage with Claude Desktop

Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "goodrx": {
      "command": "npx",
      "args": ["-y", "@striderlabs/mcp-goodrx"]
    }
  }
}
```

## Usage with MCP CLI

```bash
npx @striderlabs/mcp-goodrx
```

## Example Queries

Once connected, you can ask your AI assistant:

- "What is the cheapest price for Lisinopril 10mg near 90210?"
- "Find pharmacies near ZIP code 10001 that accept GoodRx"
- "Get me a GoodRx coupon for Metformin at CVS"
- "Compare prices for Atorvastatin 20mg at pharmacies near me"

## Technical Details

- Uses Playwright with headless Chromium for browser automation
- Implements session management with singleton browser instance
- Anti-detection measures including custom user agent and navigator property overrides
- Graceful shutdown handling for SIGINT/SIGTERM

## Requirements

- Node.js >= 18
- Playwright Chromium browser (installed via `npx playwright install chromium`)

## License

MIT

## Author

Strider Labs <hello@striderlabs.ai>

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: compare_prices focuses on price comparison across pharmacies, find_pharmacies locates nearby pharmacies, get_coupon retrieves discount coupon details, get_prices provides pricing at nearby pharmacies, and search_drug searches for drug information. There is no overlap or ambiguity between these functions.

Naming Consistency5/5

All tools follow a consistent 'goodrx_verb_noun' pattern (e.g., goodrx_compare_prices, goodrx_find_pharmacies), using snake_case and starting with the server prefix. This uniformity makes the tool set predictable and easy to understand.

Tool Count5/5

With 5 tools, this server is well-scoped for its purpose of accessing GoodRx drug pricing and pharmacy services. Each tool serves a specific, necessary function without redundancy, making the count appropriate and manageable.

Completeness4/5

The tool set covers core GoodRx workflows: searching drugs, finding pharmacies, getting prices, comparing prices, and obtaining coupons. A minor gap is the lack of tools for managing user accounts or prescription history, but the essential operations for price comparison and coupon retrieval are fully covered.

Maintenance

ActivityInactive
ResponsivenessNo issues