Skip to main content
ClaudeWave
pipeworx-io avatar
pipeworx-io

mcp-veterinary-fda

Ver en GitHub

Veterinary FDA MCP — openFDA Animal & Veterinary adverse events, pet/animal

MCP ServersRegistry oficial1 estrellas0 forksTypeScriptMITActualizado today
ClaudeWave Trust Score
95/100
Verified
Passed
  • Open-source license (MIT)
  • Actively maintained (<30d)
  • Clear description
  • Topics declared
  • Documented (README)
Last scanned: 9/12/2026
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/pipeworx-io/mcp-veterinary-fda
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "mcp-veterinary-fda": {
      "command": "node",
      "args": ["/path/to/mcp-veterinary-fda/dist/index.js"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/pipeworx-io/mcp-veterinary-fda and follow its README for install instructions.
Casos de uso

Resumen de MCP Servers

# Veterinary FDA — Approved Animal Drugs, Adverse Events, Pet Product Recalls, Pet Services

Approved animal drugs, side-effect reports, product recalls, and nearby pet services for the animal/veterinary side of the world — dogs, cats, horses, cattle. Three sources: the **FDA Green Book** (Animal Drugs @ FDA — the official list of approved new animal drug applications, keyless), openFDA's Center for Veterinary Medicine adverse-event database (985,705 Dog / 148,091 Cat reports as of 2026-09-04, keyless) and OpenStreetMap (vets, dog parks, pet stores, shelters). No pack in the MCP ecosystem serves the animal adverse-event data before this one — `openfda` never touches it, and `openfda`'s drug endpoints are human-drug only, so the Green Book side is likewise unserved.

Part of [Pipeworx](https://pipeworx.io) — an MCP gateway connecting AI agents to 1558+ live data sources.

Together these answer one question sequence end to end: **what is approved for this animal** (Green Book) → **what has it done to animals** (adverse events) → **has it been recalled** (enforcement reports).

## Why this matters for AI agents

"Is this side effect from my dog's flea medication normal?" and "has this dog food been recalled?" are questions people actually ask, and until now nothing answered them from primary-source FDA data.

Common flows:

- **What is approved.** "What FDA-approved drugs contain carprofen?" → `animal_drug_search({query: "carprofen"})` → 24 approved applications with sponsor, status and approval date. "What is approved for dogs?" → `animal_drug_search({species: "Dogs"})` → 694.
- **What an approval actually covers.** "What was Rimadyl approved for?" → `animal_drug_search({brand_name: "Rimadyl"})` → applicationId 1024 → `animal_drug_detail({application_id: 1024})` → FDA's own FOI approval summaries, per-species dosage and indications, and the labelling PDFs.
- **Side effects for a drug.** "What side effects have been reported for Bravecto in dogs?" → `vet_adverse_events({drug: "Bravecto", species: "Dog"})` → individual reports with reactions, outcome, dose.
- **Aggregate safety picture.** "How common are seizures with fluralaner in dogs?" → `vet_adverse_event_summary({active_ingredient: "fluralaner", species: "Dog"})` → counts by reaction, outcome, year.
- **Recalls.** "Has Blue Buffalo dog food been recalled?" → `vet_product_recalls({product: "Blue Buffalo"})`.
- **Nearby services.** "Emergency vet near Austin TX" → `pet_services_near({place: "Austin TX", kind: "emergency_vet"})`.

## Auth

Public, keyless throughout.

The **Green Book** tools (`animal_drug_*`) call `animaldrugsatfda.fda.gov` directly — the Animal Drugs @ FDA SPA's own backing API. It is a different upstream from openFDA: no key applies to it, `PLATFORM_DATAGOV_KEY` is not sent, and `_apiKey` does nothing there.

api.fda.gov runs on api-umbrella (the same api.data.gov stack as `openfda`), so the gateway injects `PLATFORM_DATAGOV_KEY` (`workers/gateway/src/index.ts`, `MCP_PACKS` entry for `veterinary-fda`) to raise the anonymous 40 req/min · 1,000/day cap to 120,000/day — the same platform key already backing 15 other federal packs (openfda, fac, nasa, govinfo, regulations-gov, etc.). Bring your own key with `_apiKey` to draw on your own quota instead. A rejected/revoked platform key falls back to anonymous rather than failing the call.

Nominatim (geocoding) and Overpass (`pet_services_near`) are separately keyless, public OSM infrastructure.

## Tools

| Tool | What it answers |
|---|---|
| `animal_drug_search` | Which FDA-approved animal drugs match an ingredient, species, sponsor, brand, indication or status |
| `animal_drug_detail` | Everything on one approved application: products, species, dosage, indications, FOI approval summaries, labelling PDFs |
| `animal_drug_monthly_updates` | The Green Book monthly change PDFs (new approvals, withdrawals, labelling changes) |
| `vet_adverse_events` | Individual animal adverse-event reports for a drug/species |
| `vet_adverse_event_summary` | Counts by reaction, outcome, and year for a drug/species pair |
| `vet_product_recalls` | FDA Enforcement Report recalls for a pet food or veterinary drug product |
| `pet_services_near` | Nearby vets, emergency vets, dog parks, pet stores, shelters (OpenStreetMap) |

## Data traps (measured 2026-09-04, load-bearing for how these tools are built)

- **`drug.brand_name` is near-useless.** In the adverse-event endpoint it almost always holds the registrant's internal short code (e.g. `"MSK"` for Merck Animal Health), not the marketed product name. Searching `drug.brand_name` for "Bravecto", "Frontline", "Heartgard", or "Simparica" returns **zero** matches for all four. The actual product name is recorded inside `drug.active_ingredients.name` instead (mixed in with real chemical ingredient names — messy upstream data). `vet_adverse_events`/`vet_adverse_event_summary` try `brand_name` first, then fall back to `active_ingredients.name` automatically and report `resolved_from` so the caller knows which field actually matched.
- **`count=<field>.exact` is per-field, not universal.** `count=reaction.veddra_term_name.exact` and `count=outcome.medical_status.exact` both work; `count=animal.species.exact` and `count=original_receive_date.exact` both return `"Nothing to count"`. `vet_adverse_event_summary`'s by-year table works around the date-field limitation by requesting `count=original_receive_date` (which buckets per exact DAY, not year) and aggregating client-side.
- **Bare multi-word terms are an OR, not an AND, and openFDA does not rank by relevance.** `search=product_description:dog+food` (no quotes) matches ~29,000 records — mostly hot dogs and corn dogs, because "dog" OR "food" hits practically the whole food-recall corpus, returned in whatever order openFDA feels like. Only the phrase-quoted form, `search=product_description:"dog food"`, returns the real 2 pet-food matches (Freshpet). `vet_product_recalls` always phrase-quotes multi-word product terms for this reason, and never falls back to a loose OR match — for a recall/safety answer, a false-positive (a "Blue Bell" ice-cream recall surfacing for a "Blue Buffalo" query) is worse than an honest zero, so unlike this pack's own adverse-event fallback and unlike `openfda`'s free-text fallback, there is no loose-match tier here.
- **Pet-food recall coverage in openFDA is genuinely incomplete, not a search-syntax problem.** There is no dedicated animal/pet-food recall endpoint — `vet_product_recalls` reuses `food/enforcement.json` and `drug/enforcement.json`, the same feeds `openfda` uses for human food/drugs. Several well-known, FDA-confirmed pet-food recalls are **absent from this dataset entirely**, verified by exhausting every plausible product/firm-name spelling (including the exact names from FDA's own press releases) rather than by a single failed query: Blue Buffalo's 2010/2017/2022 recalls and the 2021 Sportmix aflatoxin recall (~70 dog deaths, a formal FDA Class I recall) all return **zero** records under any search. FDA's own recall-history page (`fda.gov/animal-veterinary/safety-health/recalls-withdrawals`) is not the same backing data as openFDA's Enforcement Reports API, and openFDA does not mirror it. `vet_product_recalls` returns `total: 0` plus an explicit note in that case — treat a zero as "no Enforcement Report record found," never as "never recalled."
### Green Book traps (measured 2026-09-05)

- **`/advancedSearch` silently DISCARDS `basicSearchTerm`.** This is the dangerous one: it is not an error, it is a 200 with confidently wrong rows. `{basicSearchTerm: "carprofen", speciesName: "Cats"}` returns **338** results led by Pentobarbital Sodium — the entire Cats set, with the free-text term dropped on the floor — instead of the carprofen∩cats intersection. Nothing in the response says the term was ignored. `animal_drug_search` therefore never forwards free text to `/advancedSearch`: when `query` arrives alongside a structured filter it is resolved into `activeIngredientName` (then `proprietaryName` if that is empty) and the response reports which, via `query_resolved_to`.
- **`totalPages` is always `1`, whatever the real count.** 694 dog rows at `pageSize: 2` still reports `totalPages: 1`. Trusting it truncates every large result set to one page. `animal_drug_search` recomputes it from `totalElements / page_size`.
- **`publishDate` and `voluntaryWithdrawalDate` are epoch MILLISECONDS**, not seconds — read as seconds they land in 1970. Rendered as `YYYY-MM-DD`.
- **`applicationStatusValue` is always `null` in list rows.** Only `applicationStatusCode` (a bare `A`/`W`/`G`/`R`) is populated, so a pass-through renders every result status-unknown. Decoded against `/codes/application_status` (memoised per isolate, with a hardcoded fallback table so a blip on a 4-row lookup can never degrade a status to a bare letter).
- **`proprietaryName` can carry embedded newlines** — `"Carprofen Caplets\nNovox® Caplets"` is one row marketing two names. Returned both as `proprietary_names[]` and as a first-name `proprietary_name`.
- **`/retrievePreviewBean/{id}` answers an unknown id with a 500 and an HTML Weblogic error page**, which naively classifies as `upstream_down` — reporting FDA as down when the caller simply passed a bad id (or passed the NADA number where the applicationId was wanted). `animal_drug_detail` checks `/preview/{id}` first, which answers the same id with a clean 200 and `applicationId: null`, and raises a bad-argument error naming the distinction.
- **`/retrievePreviewBean`'s own `application` block is unusable** — `applicationNumber: 0`, type and status `null`, even for a valid id. The rich content is real; the identity fields have to come from `/preview/{id}`. Neither endpoint alone is sufficient.
- **`/specandstatus/{id}` is NOT wired, deliberately.** `specandstatus/1024` returns a chlortetracycline VFD record unrelated to application 1024 (Rimadyl) — it appears to key on a different id s
mcpmcp-servermodel-context-protocolpipeworxveterinary-fda

Lo que la gente pregunta sobre mcp-veterinary-fda

¿Qué es pipeworx-io/mcp-veterinary-fda?

+

pipeworx-io/mcp-veterinary-fda es mcp servers para el ecosistema de Claude AI. Veterinary FDA MCP — openFDA Animal & Veterinary adverse events, pet/animal Tiene 1 estrellas en GitHub y su última actualización registrada es del 2026-09-11.

¿Cómo se instala mcp-veterinary-fda?

+

Puedes instalar mcp-veterinary-fda clonando el repositorio (https://github.com/pipeworx-io/mcp-veterinary-fda) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.

¿Es seguro usar pipeworx-io/mcp-veterinary-fda?

+

Nuestro agente de seguridad ha analizado pipeworx-io/mcp-veterinary-fda y le ha asignado un Trust Score de 95/100 (tier: Verified). Revisa el desglose completo de comprobaciones superadas y flags en esta página.

¿Quién mantiene pipeworx-io/mcp-veterinary-fda?

+

pipeworx-io/mcp-veterinary-fda es mantenido por pipeworx-io. La última actividad registrada en GitHub es del 2026-09-11, con 0 issues abiertos.

¿Hay alternativas a mcp-veterinary-fda?

+

Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.

Despliega mcp-veterinary-fda en tu cloud

Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.

¿Mantienes este repo? Añade un badge a tu README

Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.

Featured on ClaudeWave: pipeworx-io/mcp-veterinary-fda
[![Featured on ClaudeWave](https://claudewave.com/api/badge/pipeworx-io-mcp-veterinary-fda)](https://claudewave.com/repo/pipeworx-io-mcp-veterinary-fda)
<a href="https://claudewave.com/repo/pipeworx-io-mcp-veterinary-fda"><img src="https://claudewave.com/api/badge/pipeworx-io-mcp-veterinary-fda" alt="Featured on ClaudeWave: pipeworx-io/mcp-veterinary-fda" width="320" height="64" /></a>

Más MCP Servers

Alternativas a mcp-veterinary-fda