@pipeworx/france-bdpm-medicines
Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/france-bdpm-medicines’s. Install: one-click buttons
Connect to just the @pipeworx/france-bdpm-medicines pack
https://gateway.pipeworx.io/france-bdpm-medicines/mcp — only @pipeworx/france-bdpm-medicines’s own tools, nothing else in the catalog.
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 3
France’s official public medicines database (BDPM — “Base de Donnees Publique des Medicaments”), published by ANSM/CNAM at base-donnees-publique.medicaments.gouv.fr: every authorized specialty (CIS), its CIP13 pack presentations with reimbursement rate and price, active-substance composition, HAS SMR/ASMR opinions (service medical rendu / amelioration du service medical rendu) and generic-group membership. Fleet #2933.
The site publishes no API — only bulk tab-separated TXT tables — so this pack
mirrors the seven official tables into a Cloudflare D1 database, refreshed
weekly. This is the French national list with reimbursement data, distinct
from the EU-level eu-ctis / ema-medicines packs, which cover
EU-centralized authorizations and clinical-trial information rather than
France’s own AMM (autorisation de mise sur le marche) and Assurance Maladie
reimbursement rates.
Tools
fr_medicine(cis?, name?)— one medicine by its CIS code or exact official denomination: marketing-authorization status, every CIP13 presentation (pack size, reimbursement rate, price before/after dispensing fee), active-substance composition, SMR/ASMR opinions, any “usage professionnel” restriction, and generic-group membership if it belongs to one. For a partial/fuzzy name, usefr_medicine_searchfirst to find the CIS.fr_medicine_search(name?, substance?, limit?)— search by the start of a medicine’s name and/or an active substance (prefix match only — “DOLIPRANE” finds “DOLIPRANE 1000 mg…” but not “CODOLIPRANE”). Pass both to intersect. Returns CIS, denomination, holder and marketing status per match.fr_generic_group(group_id)— one generic group’s full membership (the reference/princeps specialty plus every generic and substitutable generic), from thegroup_idafr_medicineresponse returns.
Every response carries data_as_of (the week the mirror was last refreshed),
source and licence.
Reading reimbursement rate
taux_remboursement is per CIP13 presentation, not per CIS — different pack
sizes of the same medicine can carry different rates, and a presentation that
is marketed-but-not-reimbursed returns null. fr_medicine’s top-level
reimbursement_rates is the distinct set across all of a medicine’s
presentations, for a quick answer when they all agree.
Generic groups
type on a group member: 0 = princeps (reference specialty), 1 =
generic, 2 = generic (range complement), 4 = substitutable generic
(type_label spells these out). A meaningful fraction of CIS codes in the
generic-group table (~23% measured 2026-10-11) reference specialties that have
since been withdrawn and no longer appear in the medicines table — fr_generic_group
still lists them (by CIS and type) with denomination: null rather than
silently dropping them, since the group composition itself is still accurate.
Auth
Keyless. The tools answer only through the Pipeworx gateway — the data is read
from a D1 database this pack does not fetch live, so a standalone
npm install has no data to read, and every tool throws a clear “not bound in
this runtime” error there instead of returning an empty list.
Data sources
- https://base-donnees-publique.medicaments.gouv.fr/telechargement — the
download page; the seven tables actually live under
/download/file/<Table>.txt(the page’s owntelechargement.php?fichier=URLs from older documentation now 404 — the site was rebuilt on the French government’s DSFR design system at some point before 2026-10-11).CIS_bdpm.txt,CIS_COMPO_bdpm.txt,CIS_GENER_bdpm.txt,CIS_HAS_SMR_bdpm.txt,CIS_HAS_ASMR_bdpm.txt,CIS_CPD_bdpm.txtandCIS_CIP_bdpm.txt, tab-separated, joined on CIS code.
Licence (quoted from licence_bdpm.pdf on the download page, “Licence
Ouverte / Open Licence v1.0”, Etalab, October 2011): free to reproduce,
copy, publish, transmit, redistribute, adapt, modify and exploit commercially,
including combined with other data or embedded in a product, on condition of
mentioning the source and the date of its last update — exactly the
source + data_as_of every response here carries. Reciting it does not
confer official status or imply ANSM/CNAM endorsement of this reuse.
Things the next person would otherwise rediscover the hard way:
- The tables are NOT uniformly encoded, despite being documented as
Latin-1. Verified 2026-10-11:
CIS_CIP_bdpm.txt(the presentations table) is genuine UTF-8, while the other six tables are Windows-1252 (which carries smart-quote bytes like0x92that strict Latin-1 decodes as invisible control characters rather than raising).scripts/bdpm/build-sqlite.pydetects each file’s real encoding by trying UTF-8 first and falling back to cp1252 on a decode error — decoding everything as Latin-1 silently producescomprimé(s)-style mojibake in the presentations table alone. CIS_CPD_bdpm.txt(the “usage professionnel” flag) has far more rows (28,532) than there are medicines (15,883) because the same CIS can carry several restriction texts (dentistry, hospital-only, etc);fr_medicinereturns the distinct set.- Store: Cloudflare D1 database
pipeworx-bdpm, bound to the gateway asBDPM_DB(d1Bindingin pack-manifest.json). Schema:scripts/bdpm/schema.sql. Refresh:scripts/bdpm/refresh.sh, run weekly by.github/workflows/bdpm-refresh.yml(never from a deploy — a load replaces the tables and the pack readsbdpm_meta.data_as_of, written last, so a half-loaded mirror answers nothing rather than a partial truth).
Tools
- fr_medicine — One French medicine (BDPM) by CIS code or exact name: presentations, composition, SMR/ASMR, reimbursement.
- fr_medicine_search — Search BDPM medicines by name prefix and/or active substance.
- fr_generic_group — BDPM generic group membership (princeps + generics) by group id.
Tools
fr_generic_group— BDPM generic group membership (princeps + generics) by group id.fr_medicine— One French medicine (BDPM) by CIS code or exact name: presentations, composition, SMR/ASMR, reimbursement.fr_medicine_search— Search BDPM medicines by name prefix and/or active substance.