mcp-aemps
Provides integration with GitHub Copilot Chat MCP in VS Code for accessing official Spanish pharmaceutical data (AEMPS/CIMA).
Provides integration with JetBrains Junie agent for accessing official Spanish pharmaceutical data (AEMPS/CIMA) within the IDE.
Provides access to official Spanish pharmaceutical data (AEMPS/CIMA) for OpenAI agents (ChatGPT, Codex CLI), enabling queries about medications, side effects, supply issues, and more.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-aemps¿Equivalente clínico de simvastatina 20 mg?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Lo que tu agente puede hacer
Conecta tu asistente — Claude, ChatGPT, Gemini, Cursor, Continue, Zed, Junie — al registro oficial AEMPS / CIMA. Sin scrapers. Sin hardcoded snapshots. Sin patient data. Cada respuesta cita endpoint REST oficial y fecha de consulta.
Tú: «¿Qué efectos adversos graves aparecen en la ficha técnica de HUMIRA 40 mg?» Tu agente consulta
obtener_medicamento→doc_contenido(sección 4.8 de la FT) → devuelve estructurado, con timestamp y fuente AEMPS.
Tú: «Lista los problemas de suministro vigentes para omeprazol 20 mg cápsulas.» Tu agente llama
problemas_suministro_dcpf→ devuelve los lotes afectados, fechas previstas de retorno y alternativas terapéuticas equivalentes.
Tú: «¿Qué notas de farmacovigilancia ha publicado AEMPS sobre inhibidores SGLT2 en los últimos 6 meses?» Tu agente filtra
listar_notas+ recuperaobtener_notas→ resumen accionable con enlaces oficiales.
Tú: «Dame un equivalente clínico (mismo VMP) para simvastatina 20 mg comprimidos sin lactosa.» Tu agente cruza
buscar_vmpp+buscar_en_ficha_tecnica("lactosa")→ propone alternativas con autorización AEMPS vigente y excipientes confirmados.
Tú: «¿Qué cambia entre la FT actual de Eliquis y la versión publicada hace 90 días?» Tu agente invoca el prompt curado
monitorizar_cambios_cartera→ diff por sección sobre la documentación oficial.
10 prompts curados más, cubriendo farmacia comunitaria, hospitalaria, industria y counseling al paciente — listos para invocar como slash-commands en tu cliente MCP.
Related MCP server: OpenFDA FastMCP Server
Instalación en 30 segundos
# Una línea — cualquier cliente MCP detectado se configura automáticamente.
pip install mcp-aemps && mcp-aemps install¿Sin Python en la máquina? Hay tres alternativas equivalentes:
uvx mcp-aemps install # zero-install vía uv (recomendado)
docker run -p 8765:8765 ghcr.io/romanpert/mcp-aemps:latest # contenedor multi-arch
pipx run mcp-aemps install # pipxReinicia tu cliente MCP. El servidor aparece como mcp-aemps. Listo.
💡 Sin servidor que mantener. Por defecto los instaladores configuran el cliente para lanzar
uvx mcp-aemps@latest stdiobajo demanda — el agente arranca el servidor cuando lo necesita y lo apaga cuando termina. Para despliegues compartidos / multi-tenant ver Despliegue.
Compatibilidad — un comando, 11 clientes
Cliente | Comando | Notas |
Claude Desktop |
| Anthropic — stdio por defecto, HTTP via |
Claude Code |
| Anthropic CLI — usa |
Codex CLI |
| OpenAI — |
Gemini CLI |
| Google — |
VS Code |
| GitHub Copilot Chat MCP — |
Cursor |
|
|
Windsurf |
| Codeium — |
Zed |
|
|
Continue.dev |
| Extensión VS Code / JetBrains — YAML |
JetBrains Junie |
|
|
Antigravity |
| Google — IDE agente |
Los instaladores son idempotentes (re-ejecuta sin miedo), atómicos (la escritura se completa entera o no se aplica), additive (preservan tus otras entradas), port-aware (leen el puerto real bound por mcp-aemps up), y purgan automáticamente aliases legacy (aemps-cima, etc.) para limpiar instalaciones de versiones antiguas. mcp-aemps install (sin subcomando) configura todos los detectados a la vez.
Por qué mcp-aemps
🏛️ Regulator-grade. Cada respuesta cita endpoint CIMA REST oficialmente documentado + timestamp. Audit trail por petición vía logs JSON estructurados (alineado con EU GMP Annex 11). Sin alucinación, sin datos derivados — solo el registro AEMPS publicado, expuesto tal cual.
🔒 Read-only por construcción. Proxy fino sobre la API pública AEMPS. Cero escrituras. Cero PII procesada. Cero clinical decision support — esto NO es un dispositivo médico (MDR 2017/745 no aplica). Detalles del threat model en SECURITY.md.
🌐 Estándar abierto. Apache-2.0. Listado en registry.modelcontextprotocol.io. Implementación de referencia para servidores MCP en sectores regulados — quien quiera mirror oficial de su propio NCA (EMA, AIFA, Swissmedic, …) tiene aquí el blueprint.
Catálogo
Herramienta | Endpoint CIMA | Descripción |
|
| Ficha completa por CN o nregistro |
|
| Búsqueda paginada con 20+ filtros |
|
| Full-text dentro de fichas técnicas |
|
| Listado con filtros |
|
| Detalle por Código Nacional |
|
| Equivalentes clínicos (VMP/VMPP) |
|
| ATC, principios activos, formas, laboratorios |
|
| Histórico de altas / bajas / modificaciones |
|
| Listado global o por Código Nacional |
|
| Por DCP (descripción clínica) |
|
| Por DCPF (con forma farmacéutica) |
|
| Notas de seguridad |
|
| Materiales informativos |
|
| Metadatos de secciones |
|
| Contenido (JSON / HTML / texto) |
|
| HTML completo de la FT |
|
| HTML completo del prospecto |
Todas las tools llevan anotaciones MCP — readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true — para que clientes spec-compliant no pidan confirmación por consulta.
Recursos estáticos:
URI | Contenido |
| Árbol completo de códigos ATC |
| Listado completo |
| Laboratorios titulares de autorización |
| Comprimido, inyectable, … |
| Oral, IV, tópica, … |
Templates:
URI template | Contenido |
| Lookup ATC (p.ej. C09AA02 → Enalapril) |
| Lookup principio activo |
| HTML completo |
| Sección concreta (4.1, 4.8, 5.1, …) |
| HTML completo |
| Sección concreta (1, 2, 3, 4, 5, 6) |
Prompt | Audiencia | Caso de uso |
| Farmacia comunitaria | Tarjeta resumen one-screen a partir de un Código Nacional |
| Farmacia comunitaria | Sustitución durante desabastecimiento |
| Farmacia hospitalaria | Notas de seguridad activas para una cartera de medicación |
| Hospital + industria | Tabla wide-format comparando 2-5 medicamentos sección a sección |
| Industria | Snapshot regulatorio completo de un laboratorio |
| Regulatory affairs | Diff de altas / bajas / modificaciones sobre una lista de productos |
| Hospital + industria | IPE/IPT + indicación autorizada + mecanismo |
| Counseling | Fotos, vídeos, material informativo segregado por audiencia |
| Público general | Resumen llano sin jerga |
| Hospital + industria | Búsqueda textual sobre la sección 4.5 (Interacciones) |
Los prompts dirigidos a pacientes cierran siempre con un disclaimer "no es consejo médico" — cubierto por test (tests/test_prompts.py); su eliminación rompe CI.
Configuración
Cero variables requeridas — el servidor arranca con defaults sensatos. Las opciones más usadas:
Variable | Default | Para qué |
|
| Loopback por defecto desde v0.4.16. |
|
| Puerto HTTP. Auto-fallback si está ocupado. |
| — | Activa cache distribuida + rate-limit compartido entre réplicas. Opcional. |
| auto |
|
|
| Validación |
| — | Requerido para habilitar |
|
| Activa modo OAuth 2.1 Resource-Server (multi-tenant SaaS). |
|
| Nivel logging |
OAuth 2.1: cinco env vars (OAUTH_ISSUER, OAUTH_JWKS_URL, OAUTH_AUDIENCE, OAUTH_REQUIRED_SCOPES). RFC 9728 Protected Resource Metadata expuesto en /.well-known/oauth-protected-resource. Sin Authorization Server embebido — bring your own (Auth0 / Keycloak / Hydra / Stytch / Cloudflare). Detalles en SECURITY.md.
Despliegue
stdio (default). Cada cliente MCP arranca uvx mcp-aemps@latest stdio bajo demanda. Sin servidor que mantener. Sin gestión de puertos. Es el patrón Anthropic-canonical — usa esto si solo quieres que tu agente local consulte CIMA.
HTTP compartido (multi-usuario). mcp-aemps up --bind-all + reverse-proxy (nginx / Caddy / Traefik) + MCP_AEMPS_DNS_REBINDING_PROTECTION=true + MCP_AEMPS_ALLOWED_HOSTS=tu-dominio.com. Con OAuth 2.1 activado para gating. Una sola instancia sirve a equipos enteros.
Docker / Compose.
docker run -p 8765:8765 ghcr.io/romanpert/mcp-aemps:latest
docker compose up -d # con Redis opcional para cache distribuidaMCP Registry. Listado como io.github.romanpert/mcp-aemps. Los clientes MCP-aware lo descubren automáticamente.
Observabilidad. /health/live, /health/ready (Kubernetes-friendly), /internal/metrics (gated por METRICS_KEY). Logs JSON estructurados con correlation IDs. Para Prometheus / OpenTelemetry, plug-in vía extra_middleware / startup_hooks del factory — ver app/factory.py.
Hooks de auditoría (Claude Code)
El sistema de hooks de Claude Code ejecuta comandos shell client-side alrededor de cada llamada a tool. El matcher mcp__mcp-aemps__* captura cada herramienta de este servidor — útil para audit trails GMP Annex 11 / EMA GVP.
{
"hooks": {
"PreToolUse": [
{
"matcher": "mcp__mcp-aemps__.*",
"hooks": [
{
"type": "command",
"command": "jq -c '{ts: now, session: .session_id, tool: .tool_name, args: .tool_input}' >> ~/.claude/audit/mcp-aemps.jsonl"
}
]
}
]
}
}Equivalente server-side disponible vía pre_tool_hooks / post_tool_hooks en create_app(...) — útil cuando no puedes confiar en que cada usuario tenga el ~/.claude/settings.json correcto. Detalles en app/tool_hooks.py.
Compliance y seguridad
mcp-aemps está construido para entornos regulados — sin sustituir el juicio profesional:
Datos públicos AEMPS — sin PII, sin patient data, sin clinical decision support.
Audit trail — logs JSON estructurados con correlation IDs, retención configurable (
LOG_RETENTION_DAYS).Sin GPL en el paquete — Apache-2.0 limpio, distribuible en stack farmacéutico privado.
Threat model auditado — STRIDE pass end-to-end por release. Política completa en SECURITY.md.
Disclosure coordinada —
roman.p98@gmail.com, triage en 48h.
Posture detallada (GDPR Art.5, LOPD-GDD, EU GMP Annex 11, EMA GVP Module VI): CLAUDE.md.
Roadmap & versioning
mcp-aemps mirrorea el surface CIMA REST 1:1 — ni más, ni menos. Las mejoras hasta v1.0 son calidad (eficiencia, seguridad, escalabilidad, modularidad), no nuevas features.
Add-ons que NO encajan en esta scope rule (extracción de PDF de IPT, descarga de imágenes de medicamentos, agregación multi-NCA, push notifications) viven en un repo separado, premium-tier, que importa este mcp-aemps>=0.4.x desde PyPI como dependencia.
CHANGELOG completo: CHANGELOG.md. Política de versionado en CLAUDE.md.
Contribuir
Issues y PRs en inglés. Conventional commits. Setup, estándares de código, y las hard scope rules en CONTRIBUTING.md.
Si construyes algo serio sobre mcp-aemps en producción farmacéutica / hospitalaria, escríbeme — me interesa el use case, y los road-map items se priorizan en parte por demanda concreta.
Licencia & autor
Apache-2.0 · Author: Román Pérez Dumpert · roman.p98@gmail.com
MCP Registry identifier: mcp-name: io.github.romanpert/mcp-aemps
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect AI clients to biomedical data and tools.
Supplement safety for AI agents. 1,500+ rules, NIH+FDA data, quality grading A-D.
Physician-reviewed medical opinions and prescriptions for AI agents.
US healthcare data for AI agents: CMS, FDA adverse events, CDC, NPPES NPI. Keyless, real samples.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides real-time access to medical data including drug interactions, ICD-10 codes, FDA adverse event reports, and clinical guidelines. It enables LLMs to query databases like openFDA, PubMed, and CMS for pharmaceutical and clinical information.1MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to query and analyze FDA adverse events, drug labels, medical device clearances, and other public health datasets through natural language commands.13-
- FlicenseNot gradedqualityDmaintenanceProvides AI agents with comprehensive access to Israel's complete pharmaceutical database from the Ministry of Health, enabling drug information search, therapeutic comparisons, and safety assessments.18-
- FlicenseBqualityDmaintenanceEnables AI agents to query free biomedical and pharmaceutical APIs for clinical trials, drug data, molecular structures, adverse events, and research literature.14-