Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Query FDA data on drugs, food, devices, and recalls via openFDA. STDIO or Streamable HTTP.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
OPENFDA_API_KEY, CANVAS_PROVIDER_TYPE, OPENFDA_DATAFRAME_DROP_ENABLED, OPENFDA_MIRROR_ENABLED, OPENFDA_MIRROR_PATH, OPENFDA_MIRROR_REFRESH_CRON, OPENFDA_MIRROR_FALLBACK_LIVE, OPENFDA_MIRROR_REFRESH_TIMEOUT_MS, OPENFDA_MIRROR_BASE_URL, MCP_LOG_LEVELNecesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Funciona en Claude para web, escritorio y móvil:
https://openfda.caseyjhand.com/mcpAbre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"openfda": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openfda-mcp-server"
],
"env": {
"OPENFDA_API_KEY": "your-value",
"CANVAS_PROVIDER_TYPE": "your-value",
"OPENFDA_DATAFRAME_DROP_ENABLED": "your-value",
"OPENFDA_MIRROR_ENABLED": "your-value",
"OPENFDA_MIRROR_PATH": "your-value",
"OPENFDA_MIRROR_REFRESH_CRON": "your-value",
"OPENFDA_MIRROR_FALLBACK_LIVE": "your-value",
"OPENFDA_MIRROR_REFRESH_TIMEOUT_MS": "your-value",
"OPENFDA_MIRROR_BASE_URL": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add --transport http openfda https://openfda.caseyjhand.com/mcpclaude mcp add openfda --env OPENFDA_API_KEY=your-value --env CANVAS_PROVIDER_TYPE=your-value --env OPENFDA_DATAFRAME_DROP_ENABLED=your-value --env OPENFDA_MIRROR_ENABLED=your-value --env OPENFDA_MIRROR_PATH=your-value --env OPENFDA_MIRROR_REFRESH_CRON=your-value --env OPENFDA_MIRROR_FALLBACK_LIVE=your-value --env OPENFDA_MIRROR_REFRESH_TIMEOUT_MS=your-value --env OPENFDA_MIRROR_BASE_URL=your-value --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/openfda-mcp-serverCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"openfda": {
"url": "https://openfda.caseyjhand.com/mcp"
}
}
}Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"openfda": {
"command": "npx",
"args": [
"-y",
"@cyanheads/openfda-mcp-server"
],
"env": {
"OPENFDA_API_KEY": "your-value",
"CANVAS_PROVIDER_TYPE": "your-value",
"OPENFDA_DATAFRAME_DROP_ENABLED": "your-value",
"OPENFDA_MIRROR_ENABLED": "your-value",
"OPENFDA_MIRROR_PATH": "your-value",
"OPENFDA_MIRROR_REFRESH_CRON": "your-value",
"OPENFDA_MIRROR_FALLBACK_LIVE": "your-value",
"OPENFDA_MIRROR_REFRESH_TIMEOUT_MS": "your-value",
"OPENFDA_MIRROR_BASE_URL": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"openfda": {
"type": "http",
"url": "https://openfda.caseyjhand.com/mcp"
}
}
}Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"openfda": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/openfda-mcp-server"
],
"env": {
"OPENFDA_API_KEY": "your-value",
"CANVAS_PROVIDER_TYPE": "your-value",
"OPENFDA_DATAFRAME_DROP_ENABLED": "your-value",
"OPENFDA_MIRROR_ENABLED": "your-value",
"OPENFDA_MIRROR_PATH": "your-value",
"OPENFDA_MIRROR_REFRESH_CRON": "your-value",
"OPENFDA_MIRROR_FALLBACK_LIVE": "your-value",
"OPENFDA_MIRROR_REFRESH_TIMEOUT_MS": "your-value",
"OPENFDA_MIRROR_BASE_URL": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
ChatGPT solo se conecta a servidores en internet:
https://openfda.caseyjhand.com/mcpLos nombres de los menús pueden variar un poco según el plan y con el tiempo.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
OPENFDA_API_KEY envCANVAS_PROVIDER_TYPE envOPENFDA_DATAFRAME_DROP_ENABLED envOPENFDA_MIRROR_ENABLED envOPENFDA_MIRROR_PATH envOPENFDA_MIRROR_REFRESH_CRON envOPENFDA_MIRROR_FALLBACK_LIVE envOPENFDA_MIRROR_REFRESH_TIMEOUT_MS envOPENFDA_MIRROR_BASE_URL envMCP_LOG_LEVEL envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Todavía no hemos leído la lista de herramientas de este servidor; revisamos los endpoints por turnos.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub cyanheads, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Aún sin revisar; revisamos los endpoints por turnos
Aún sin revisar; revisamos los endpoints por turnos
Aún sin revisar; leemos la lista de herramientas cuando revisamos el endpoint
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Funciona de las dos formas: instálalo en tu computadora o conéctate a la versión en la nube.
El repo de GitHub cambió por última vez –, y la última versión (0.9.1) llegó al registro hace 11 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, Starreel
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Turn a script into a finished, downloadable short-drama episode — via MCP or REST.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
@cyanheads/openfda-mcp-server Query FDA data on drugs, food, devices, and recalls via openFDA. STDIO or Streamable HTTP. 15 Tools
Public Hosted Server: https://openfda.caseyjhand.com/mcp
FDA data on drugs, food, devices, and recalls from the openFDA public API. Search adverse events, recalls, drug approvals, and device clearances; look up NDC codes and drug labels; aggregate field counts across any endpoint.
| Tool | Description |
|---|---|
openfda_drug_profile | One drug name → consolidated FDA profile: identity, label, adverse events, recalls, approval, shortage |
openfda_search_adverse_events | Search adverse event reports across drugs, food, and devices |
openfda_search_animal_events | Search adverse event reports for veterinary drugs and devices |
openfda_search_drug_shortages | Search FDA drug shortage records by status, availability, therapeutic category, manufacturer |
openfda_search_tobacco_reports | Search problem reports for tobacco products, e-cigarettes, and vaping devices |
openfda_search_recalls | Search enforcement reports and recall actions across drugs, food, and devices |
openfda_count_values | Aggregate and tally unique values for any field across any openFDA endpoint |
openfda_describe_fields | Return searchable field paths for an openFDA endpoint, grouped by category |
openfda_get_drug_label | Look up FDA drug labeling (package inserts / SPL documents) |
openfda_search_drug_approvals | Search the Drugs@FDA database for NDA/ANDA application approvals |
openfda_search_device_clearances | Search FDA device premarket notifications: 510(k) clearances and PMA approvals |
openfda_lookup_ndc | Look up drugs in the NDC (National Drug Code) Directory |
openfda_dataframe_describe | List tables and column schemas staged on a DataCanvas |
openfda_dataframe_query | Run read-only SQL over a result set staged on a DataCanvas |
openfda_dataframe_drop | Delete one table staged on a DataCanvas (opt-in, off by default) |
openfda_drug_profile tooldrug name, brand or generic, resolved once to an identity (generic name, NDC, RxCUI, SPL set ID); recalls, approval, and shortage key on meta.fanOutKey — the typed name when it is an ingredient of the resolved generic, else that generic; meta.resolvedVia (label, ndc, none) names the source, and a single-ingredient product is preferred over combinationsproduct_description, products.active_ingredients.name); recalls_total gives the match count beside the newest 5 recallslabel, adverse_events, recalls, approval, and shortage are best-effort and come back null (or an empty recalls) on a miss; degraded[] names each section whose sub-query failed upstream, so a listed section is unknown rather than absentopenfda_search_adverse_events toolcategory (drug, food, device) selects the endpoint and its record schema; up to 1000 records per pagereceivedate (drug), date_created (food), date_received (device); another category's field fails as query_errorvia oral (048), fatal (5), elderly (6)); structured output keeps the codesopenfda_search_animal_events toolsearch over veterinary reports, e.g. animal.species, drug.active_ingredients.name, reaction.veddra_term_name, serious_ae; up to 1000 records per pageMSK on every record, so search by active ingredient; drug.manufacturer.registration_number narrows to one approvalopenfda_search_drug_shortages toolsearch over status (Current / To Be Discontinued / Resolved), therapeutic_category, generic_name, or company_name; up to 1000 records per pageopenfda block carries brand_name, product_ndc, and rxcui for chaining into openfda_get_drug_label or openfda_lookup_ndcopenfda_search_tobacco_reports toolsearch over tobacco_products, reported_health_problems, reported_product_problems, or nonuser_affected; up to 1000 records per pagenumber_tobacco_products, number_health_problems, and number_product_problems countsopenfda_search_recalls toolcategory (drug, food, device) plus endpoint: enforcement (default, every category) or recall (devices only; other categories fail as recall_endpoint_non_device); up to 1000 records per pagerecall_number, classification (Class I/II/III), and status; device recall records carry product_res_number and recall_status instead, with no hazard classificationopenfda_count_values toolendpoint (any of the 20 openFDA endpoints), a count field expression, and an optional search; returns up to 1000 top terms (default 100), ranked by count; a date field returns one term per distinct YYYYMMDD date, ranked the same waytruncated flags more distinct terms past limit, except at the 1000-term maximum, where a notice says completeness can't be known (a date count is exact at any limit, since openFDA sends every date); an expression openFDA can't aggregate fails as not_aggregatable (take the countAs form from openfda_describe_fields)openfda_describe_fields toolendpoint: the same 20 endpoints openfda_count_values acceptstype, a description, and countAs (the verified count expression, or null when the field can't be aggregated), plus queryTips on quoting, AND/OR, .exact, and date rangesopenfda_get_drug_label toolsearch on label fields (openfda.brand_name, openfda.generic_name, openfda.manufacturer_name, set_id); limit defaults to 5, max 1000kind: "outline" (section names and sizes, largest first) instead of label text; re-call with sections: [...] to get those sections plus identity metadata (openfda, set_id, id, effective_time, version), returned whole even when over budget*_table sections render as Markdown tables in the text output; structured results keep the raw SPL markupopenfda_search_drug_approvals toolsearch over openfda.brand_name, sponsor_name (stored uppercase, so a lowercase quoted value matches nothing), submissions.submission_type, or submissions.review_priority; up to 1000 records per pageapplication_number, sponsor_name, products[], and the application's full submissions[] historyopenfda_search_device_clearances toolpathway (510k or pma, one per call) plus an optional search over applicant, product_code, advisory_committee_description, or openfda.device_name; up to 1000 records per pagek_number, device_name, and decision_date; PMA records carry pma_number, trade_name, and supplement_numberopenfda_lookup_ndc toolsearch over product_ndc, brand_name, generic_name, openfda.manufacturer_name, or active_ingredients.name; up to 1000 records per pageproduct_ndc, labeler_name, dosage_form, route, marketing_category, active_ingredients[], and packaging[]openfda_dataframe_describe toolcanvas_id from a staged search; lists each table's name, kind, full staged row_count, and columns with DuckDB type and nullabilitycanvas_disabled when CANVAS_PROVIDER_TYPE=none, or canvas_not_found when the canvas_id has expired or never existedopenfda_dataframe_query toolcanvas_id plus one read-only SELECT; DDL, DML, COPY, and file-reading functions are rejected. Scalars are stored as text (CAST for math) and nested openFDA blocks as JSON columnstruncated: true means page on with ORDER BY plus LIMIT/OFFSET; failures are canvas_disabled, canvas_not_found, missing_table, or invalid_queryopenfda_dataframe_drop toolOPENFDA_DATAFRAME_DROP_ENABLED=true to make it callable; otherwise it is listed as disabled on the landing page and absent from tools/listcanvas_id plus the table name from openfda_dataframe_describe; deletes that one table or view and returns remaining_tables, leaving the canvas and its other tables in placecanvas_disabled, canvas_not_found, or missing_table (already dropped, expired, or mistyped)Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
openFDA-specific:
Solo se muestra el principio; lee el resto en el repo