关于 MCP AEMPS — CIMA
MCP AEMPS — CIMA 将西班牙 AEMPS/CIMA 官方药品登记数据提供给 AI 助手,适用于药房、医院及制药行业查询。它通过官方 REST 接口提供只读数据,并附来源和查询时间。
主要功能
- 01查询药品、剂型与临床等效药
- 02检索药品说明书及患者用药说明
- 03查看供应问题与安全通知
- 04追踪登记变更并比较说明书
- 05提供 MCP 工具、资源和提示词
适用场景
- 01核对药品说明书中的不良反应
- 02查询药品短缺及预计恢复时间
- 03筛选含特定辅料的临床等效药
- 04比较药品说明书的版本变化
MCP 相关
作为 MCP 服务,向客户端开放 CIMA 查询工具、curated 资源和专业提示词。查询通过 AEMPS 官方 REST API 执行,工具为只读。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx mcp-aempsPORTTCP port for the HTTP server (used in transport URL template)LOG_LEVELLogging level (DEBUG, INFO, WARNING, ERROR)REDIS_URLOptional Redis URL for distributed cache and rate limiting (in-memory used if absent)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-aemps
官方药品数据,为你的 Agent 做好准备。
首个面向制药行业的开源 MCP 服务。实时提供20.000+ 种 AEMPS 药品数据,达到监管级标准。
🇪🇸 西班牙语 · 🇬🇧 English
你的 Agent 能做什么
将你的助手——Claude、ChatGPT、Gemini、Cursor、Continue、Zed、Junie——连接到 AEMPS / CIMA 官方注册库。无需爬虫,无需硬编码快照,也不涉及患者数据。每条回复都会标注官方 REST 端点和查询日期。
你:「HUMIRA 40 mg 的技术说明书中列出了哪些严重不良反应?」 你的 Agent 查询
obtener_medicamento→doc_contenido(FT 第 4.8 节)→ 返回结构化结果,并附上时间戳和 AEMPS 来源。
你:「列出当前有效的奥美拉唑 20 mg 胶囊供应问题。」 你的 Agent 调用
problemas_suministro_dcpf→ 返回受影响批次、预计恢复日期及等效治疗替代品。
你:「AEMPS 在过去 6 个月发布过哪些关于SGLT2 抑制剂的药物警戒通知?」 你的 Agent 筛选
listar_notas并获取obtener_notas→ 生成可执行的摘要和官方链接。
你:「为辛伐他汀 20 mg 片剂提供一种不含乳糖的临床等效药(相同 VMP)。」 你的 Agent 交叉查询
buscar_vmpp+buscar_en_ficha_tecnica("lactosa")→ 提出获 AEMPS 当前授权且辅料已确认的替代品。
你:「Eliquis 当前版本的 FT 与 90 天前发布的版本有哪些变化?」 你的 Agent 调用精心设计的提示词
monitorizar_cambios_cartera→ 对官方文档进行分节差异比较。
另有 10 个精心设计的提示词,涵盖社区药房、医院药房、制药行业和患者咨询,可在 MCP 客户端中作为斜杠命令直接调用。
30 秒完成安装
# Una línea — cualquier cliente MCP detectado se configura automáticamente.
pip install mcp-aemps && mcp-aemps install
机器上没有 Python?还有三种等效方案:
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 # pipx
重启 MCP 客户端。服务器将显示为 mcp-aemps。完成。
💡 无需维护服务器。 默认情况下,安装程序会配置客户端,以便按需运行
uvx mcp-aemps@latest stdio——Agent 会在需要时启动服务器,并在完成后将其关闭。如需共享 / 多租户部署,请参阅部署。
兼容性 — 一条命令,支持 11 个客户端
| 客户端 | 命令 | 备注 |
|---|---|---|
| Claude Desktop | mcp-aemps install claude-desktop | Anthropic — 默认使用 stdio,可选通过 mcp-remote 使用 HTTP |
| Claude Code | mcp-aemps install claude-code | Anthropic CLI — 可用时使用 claude mcp add |
| Codex CLI | mcp-aemps install codex | OpenAI — ~/.codex/config.toml |
| Gemini CLI | mcp-aemps install gemini | Google — ~/.gemini/settings.json,原生支持 MCP(v0.4.17+) |
| VS Code | mcp-aemps install vscode | GitHub Copilot Chat MCP — 专用的 mcp.json(2025 年之后) |
| Cursor | mcp-aemps install cursor | ~/.cursor/mcp.json |
| Windsurf | mcp-aemps install windsurf | Codeium — ~/.codeium/windsurf/mcp_config.json |
| Zed | mcp-aemps install zed | settings.json 中的 context_servers |
| Continue.dev | mcp-aemps install continue | VS Code / JetBrains 扩展 — YAML |
| JetBrains Junie | mcp-aemps install jetbrains | ~/.junie/mcp.json |
| Antigravity | mcp-aemps install antigravity | Google — Agent IDE |
安装程序具有幂等性(可放心重复运行)、原子性(要么完整写入,要么不应用)、增量性(保留其他条目)、端口感知(读取 mcp-aemps up 实际绑定的端口),并会自动清理旧版别名(aemps-cima 等),以清理旧版本安装。mcp-aemps install(不带子命令)会一次性配置所有检测到的客户端。
为什么选择 mcp-aemps
🏛️ 符合监管级要求。 每条响应都会引用官方记录在案的 CIMA REST 端点和时间戳。每个请求都会通过结构化 JSON 日志留下审计轨迹(符合 EU GMP Annex 11)。不产生幻觉,不提供衍生数据——只原样呈现 AEMPS 发布的记录。
🔒 从设计上只读。 基于 AEMPS 公共 API 构建的轻量代理。不执行任何写入。不处理任何 PII。不提供临床决策支持——这不是医疗器械(MDR 2017/745 不适用)。威胁模型详情请见 SECURITY.md。
🌐 开放标准。 Apache-2.0。已列入 registry.modelcontextprotocol.io。这是受监管行业 MCP 服务的参考实现——任何希望为自己的 NCA(EMA、AIFA、Swissmedic,……)搭建官方镜像的机构,都可以将其作为蓝图。
目录
21 个 MCP 工具 — 全部与官方 CIMA REST 端点一一对应
| 工具 | CIMA 端点 | 描述 | |------|--------------|-------------| | `obtener_medicamento` | `GET /medicamento` | 按 CN 或 nregistro 查询完整药品信息 | | `buscar_medicamentos` | `GET /medicamentos` | 支持 20 多种筛选条件的分页搜索 | | `buscar_en_ficha_tecnica` | `POST /buscarEnFichaTecnica` | 在技术说明书中进行全文搜索 | | `listar_presentaciones` | `GET /presentaciones` | 带筛选条件的列表 | | `obtener_presentacion` | `GET /presentacion/:cn` | 按国家代码查询详情 | | `buscar_vmpp` | `GET /vmpp` | 临床等效药品(VMP/VMPP) | | `consultar_maestras` | `GET /maestras` | ATC、活性成分、剂型、实验室 | | `registro_cambios` | `GET\|POST /registroCambios` | 新增/停用/修改历史记录 | | `problemas_suministro` | `GET /psuministro` + `GET /psuministro/v2/cn/:cn` | 全局列表或按国家代码查询 | | `problemas_suministro_dcp` | `GET /psuministro/v2/dcp/:dcp` | 按 DCP(临床描述)查询 | | `problemas_suministro_dcpf` | `GET /psuministro/v2/dcpf/:dcpf` | 按 DCPF(含药剂形式)查询 | | `listar_notas` / `obtener_notas` | `GET /notas/:nregistro` | 安全说明 | | `listar_materiales` / `obtener_materiales` | `GET /materiales/:nregistro` | 信息材料 | | `doc_secciones` | `GET /docSegmentado/secciones/:tipo` | 章节元数据 | | `doc_contenido` | `GET /docSegmentado/contenido/:tipo` | 内容(JSON / HTML / 文本) | | `html_ficha_tecnica` | `GET /dochtml/ft/:nregistro/:file` | 完整技术说明书 HTML | | `html_prospecto` | `GET /dochtml/p/:nregistro/:file` | 完整患者说明书 HTML |所有工具都带有 MCP 注解 — readOnlyHint: true、destructiveHint: false、idempotentHint: true、openWorldHint: true — 因此符合规范的客户端不会在每次查询时都请求确认。
11 个精选资源,采用 cima:// URI 方案 — 可缓存,不消耗令牌
静态资源:
| URI | 内容 |
|---|---|
cima://maestras/atc | 完整 ATC 代码树 |
cima://maestras/principios-activos | 完整列表 |
cima://maestras/laboratorios | 获得授权的持有人实验室 |
cima://maestras/formas-farmaceuticas | 片剂、注射剂,… |
cima://maestras/vias-administracion | 口服、静脉注射、外用,… |
模板:
| URI 模板 | 内容 |
|---|---|
cima://maestras/atc/{codigo} | 查询 ATC(例如 C09AA02 → 依那普利) |
cima://maestras/principios-activos/{id} | 查询活性成分 |
cima://docs/ficha-tecnica/{nregistro} | 完整 HTML |
cima://docs/ficha-tecnica/{nregistro}/{seccion} | 指定章节(4.1、4.8、5.1,…) |
cima://docs/prospecto/{nregistro} | 完整 HTML |
cima://docs/prospecto/{nregistro}/{seccion} | 指定章节(1、2、3、4、5、6) |
10 个精选 MCP 提示词 — 可直接调用的专业及患者工作流
| 提示词 | 受众 | 用例 | |---|---|---| | `identificar_cn` | 社区药房 | 根据国家代码生成单屏摘要卡片 | | `equivalencias_genericas` | 社区药房 | 药品短缺期间的替代 | | `vigilancia_paciente` | 医院药房 | 针对一组用药的主动安全提示 | | `comparar_fichas_tecnicas` | 医院 + 制药行业 | 按章节比较 2-5 种药品的宽格式表格 | | `auditar_cartera_laboratorio` | 制药行业 | 实验室的完整监管快照 | | `monitorizar_cambios_cartera` | 法规事务 | 对产品列表中的新增 / 移除 / 修改进行差异比较 | | `informe_posicionamiento_terapeutico` | 医院 + 制药行业 | IPE/IPT + 获批适应症 + 作用机制 | | `material_visual_paciente` | 患者咨询 | 按受众分类的照片、视频和信息材料 | | `info_medicamento_para_no_sanitarios` | 普通公众 | 无行话的通俗摘要 | | `comprobar_interaccion_principios_activos` | 医院 + 制药行业 | 对 4.5 节(相互作用)进行文本搜索 |面向患者的提示词始终以免责声明“这不是医疗建议”结尾——由测试覆盖(tests/test_prompts.py);移除它会导致 CI 失败。
配置
无需任何必需变量——服务会以合理的默认值启动。最常用的选项:
| 变量 | 默认值 | 用途 |
|---|---|---|
UVICORN_HOST | 127.0.0.1 | 从 v0.4.16 起默认使用回环地址。Docker / 反向代理场景可使用 mcp-aemps up --bind-all 或 UVICORN_HOST=0.0.0.0。 |
PORT | 8765 | HTTP 端口。端口被占用时自动回退。 |
REDIS_URL | — | 启用分布式缓存 + 在多个副本间共享速率限制。可选。 |
MCP_AEMPS_LOCALE | auto | es / en。自动检测操作系统语言。 |
MCP_AEMPS_DNS_REBINDING_PROTECTION | true | 对 /mcp 执行 Host / Origin 验证。从 v0.4.16 起默认启用。反向代理场景:扩展 MCP_AEMPS_ALLOWED_HOSTS。 |
METRICS_KEY | — | 启用 /internal/metrics 的必需项(从 v0.4.16 起失败时关闭)。 |
OAUTH_ENABLED | false | 启用 OAuth 2.1 Resource-Server 模式(多租户 SaaS)。 |
LOG_LEVEL | INFO | 日志级别 |
OAuth 2.1:需要五个环境变量(OAUTH_ISSUER、OAUTH_JWKS_URL、OAUTH_AUDIENCE、OAUTH_REQUIRED_SCOPES)。RFC 9728 Protected Resource Metadata 在 /.well-known/oauth-protected-resource 暴露。未内置 Authorization Server——请自备(Auth0 / Keycloak / Hydra / Stytch / Cloudflare)。详情见 SECURITY.md。
部署
stdio(默认)。 每个 MCP 客户端都会按需启动 uvx mcp-aemps@latest stdio。无需维护服务器,无需管理端口。这是 Anthropic 的规范模式——如果你只想让本地 Agent 查询 CIMA,请使用此方式。
共享 HTTP(多用户)。 mcp-aemps up --bind-all + 反向代理(nginx / Caddy / Traefik)+ MCP_AEMPS_DNS_REBINDING_PROTECTION=true + MCP_AEMPS_ALLOWED_HOSTS=tu-dominio.com。启用 OAuth 2.1 进行访问控制。单个实例即可为整个团队提供服务。
Docker / Compose。
docker run -p 8765:8765 ghcr.io/romanpert/mcp-aemps:latest
docker compose up -d # con Redis opcional para cache distribuida
MCP Registry。 条目为 io.github.romanpert/mcp-aemps。支持 MCP 的客户端会自动发现它。
可观测性。 /health/live、/health/ready(适用于 Kubernetes)、/internal/metrics(由 METRICS_KEY 控制访问)。使用带有关联 ID 的结构化 JSON 日志。要接入 Prometheus / OpenTelemetry,可通过 factory 的 extra_middleware / startup_hooks 插件接入——见 app/factory.py。
审计钩子(Claude Code)
Claude Code 钩子系统会在每次工具调用前后于客户端执行 shell 命令。匹配器 mcp__mcp-aemps__* 会捕获此服务的每个工具——适用于 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"
}
]
}
]
}
}
也可通过 create_app(...) 中的 pre_tool_hooks / post_tool_hooks 在服务端实现等效功能——适用于无法确保每位用户都配置了正确的 ~/.claude/settings.json 的情况。详见 app/tool_hooks.py。
合规与安全
mcp-aemps 专为受监管环境打造——但不能取代专业判断:
- AEMPS 公共数据——不涉及 PII、患者数据或临床决策支持。
- 审计跟踪——结构化 JSON 日志,包含关联 ID,保留期限可配置(
LOG_RETENTION_DAYS)。 - 软件包中不含 GPL——纯 Apache-2.0,可在私有制药技术栈中分发。
- 威胁模型已审计——每次发布都会进行端到端 STRIDE 审查。完整政策见 SECURITY.md。
- 协调披露——
[email protected],48 小时内进行分级处理。
详细的合规状况(GDPR Art.5、LOPD-GDD、EU GMP Annex 11、EMA GVP Module VI):CLAUDE.md。
路线图与版本管理
mcp-aemps 与 CIMA REST 接口保持 1:1 镜像——不多不少。v1.0 之前的改进均属于质量方面(效率、安全性、可扩展性、模块化),不增加新功能。
不符合此范围规则的附加功能(IPT PDF 提取、药品图片下载、多 NCA 聚合、推送通知)将放在独立的高级版代码库中,该代码库会从 PyPI 导入此 mcp-aemps>=0.4.x 作为依赖项。
完整更新日志:CHANGELOG.md。版本管理政策见 CLAUDE.md。
贡献
Issue 和 PR 请使用英语。采用 Conventional Commits。环境搭建、代码规范及严格的范围规则见 CONTRIBUTING.md。
如果你在制药或医院生产环境中基于 mcp-aemps 构建了重要项目,欢迎联系我——我很想了解这个用例,路线图项目也会部分根据具体需求确定优先级。
许可证与作者
Apache-2.0 · 作者:Román Pérez Dumpert · [email protected]
MCP Registry 标识符:mcp-name: io.github.romanpert/mcp-aemps
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。