MCP.Market

Drug Prices MCP server

online · 100% uptime
by pipeworx-io·io.github.pipeworx-io/drug-prices·v0.2.1

US drug price benchmarks — what a pharmacy PAYS and what Medicare PAYS OUT.

B73/100grade B
What users say
No reviews yet
Be the first
Safety scan
B73/100

not scanned yet

Adoption
Growing

0 stars

Reviews

Write one

Nobody has reviewed Drug Prices yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Drug Prices tools

Tool list not cached yet. `describe` through the gateway fetches it live.

Not scanned yet. New listings are scanned within a day or two of arriving.

How Drug Prices compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
73/100
higher than 39% of 48,255 servers
Uptime
100%
of our recent checks; the typical remote server answers 100%
Response time
68 ms
faster than 90% of 30,031 servers

Release history: 9 versions in the registry since 2026-09-14, latest 2026-11-01, typically one every 7 days.

Install Drug Prices in Claude Code, Cursor or VS Code

claude mcp add --transport http drug-prices https://gateway.pipeworx.io/drug-prices/mcp
Add to Cursor

What the publisher says

From the Drug Prices repository's README, as published. We do not edit it. Read it on GitHub

drug-prices

US drug price benchmarks: what a pharmacy pays to acquire a drug, and what Medicare Part B pays out for one administered by a provider. Keyless.

Part of Pipeworx — an MCP gateway connecting AI agents to 1576+ live data sources.

These are two different numbers that are routinely confused for each other, and keeping them apart is most of what this pack does.

A generic tablet has a NADAC and no ASP. An infused oncology drug has an ASP and usually no retail NADAC. drugpricecompare reports whichever exist and says why the other is missing, rather than returning an empty result.

Tools

  • nadacprice(drug | ndc, asof?, limit?) — current acquisition cost per unit
  • nadac_history(ndc, weeks?) — weekly price series and % change
  • asppaymentlimit(hcpcs | drug, quarter?, limit?) — Part B limit per dosage unit
  • drugpricecompare(drug, ndc?) — both benchmarks side by side, with vintages

Plumbing

NADAC is read live — data.medicaid.gov exposes a real query API (filter, sort, paginate) and the dataset holds ~20 months, so there is nothing to mirror. ASP has no API at all: CMS publishes one ZIP per quarter, so it is ingested into asppaymentlimits by scripts/ingest-asp-payment-limits.mjs and read from Supabase.

node scripts/ingest-asp-payment-limits.mjs            # current quarter
node scripts/ingest-asp-payment-limits.mjs --back=5   # backfill

Traps

Every one of these was hit while building the pack, and each produced a confident wrong answer rather than an error.

The newest NADAC week is usually a correction file, not a week. NADAC publishes the full weekly file plus tiny off-cycle corrections sharing the same effectivedate column. Measured 2026-08-28: 2026-08-26 → 77 rows, 2026-08-19 → 58,163 rows, 2026-08-12 → 6 rows. The obvious design — take max(effectivedate), then filter — lands on the 77-row file and reports "no price found" for almost every drug, which is indistinguishable from a drug NADAC does not cover. Filter for the drug first, then take the newest date in the matched set.

The datastore API silently ignores unknown parameters. ?sort=-effectivedate returns HTTP 200 with unsorted* rows — byte-identical to ?zzznonsense=x. The only spelling that sorts is sorts[0][property] + sorts[0][order]. A typo here does not fail; it quietly answers with an arbitrary week's price.

The NADAC dataset id rotates every January, and the year in the title is not the range it covers. The dataset called "NADAC … 2026" holds effective dates from 2025-01-01 to 2026-08-26. The id is resolved by title at call time, with the last known id as a fallback, so January does not break the pack.

NADAC carries two dates. effectivedate is the week the price applies to; asof_date is when CMS published it. Prices key on the first; both are returned.

The ASP payment limit's vintage is not its quarter. The CMS file states it: the file effective 2026-07-01 is "based on 1Q26 ASP data". The limit in force is derived from ASP data roughly two quarters earlier, so comparing it against this week's NADAC spans about six months. Both quarters are always returned.

The ASP CSV is windows-1252, not UTF-8, and carries a 0xA0 inside a real value ("1 million\xa0PFU"). Reading it as UTF-8 throws — and worse, grep silently aborts on the illegal byte, which is how J9271 first appeared to be missing from a file that contains it.

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Grade history

  • 2026-10-03downgradeA → Bscore 73
  • 2026-09-19restoreB → Ascore 87

Drug Prices: common questions

Is Drug Prices MCP server safe?
Mostly: it is graded B (73/100). Read the Drug Prices safety report
How do I install Drug Prices?
It runs remotely at gateway.pipeworx.io. Add it to Claude Code, Cursor, VS Code or Claude Desktop with the snippets above, or call it through the mcp.market gateway without installing anything.
Does Drug Prices need an API key?
Yes. The registry entry asks for PIPEWORX_API_KEY.
Is Drug Prices maintained?
The last commit was 39 days ago (2026-09-25). The latest release is v0.2.1.
Is Drug Prices up?
100% of our last 28 checks got an answer. We check remote servers about four times a day.
How does Drug Prices compare with other MCP servers?
safety score 73/100 (higher than 39% of 48,255 servers); uptime 100% (of our recent checks; the typical remote server answers 100%); response time 68 ms (faster than 90% of 30,031 servers). Full comparison.

More from pipeworx-io →