mcpField
M
MCP AEMPS — CIMA

MCP AEMPS — CIMA

本地服务
github.com健康医疗124 周前更新

关于 MCP AEMPS — CIMA

MCP AEMPS — CIMA 将西班牙 AEMPS/CIMA 官方药品登记数据提供给 AI 助手,适用于药房、医院及制药行业查询。它通过官方 REST 接口提供只读数据,并附来源和查询时间。

主要功能

  1. 01查询药品、剂型与临床等效药
  2. 02检索药品说明书及患者用药说明
  3. 03查看供应问题与安全通知
  4. 04追踪登记变更并比较说明书
  5. 05提供 MCP 工具、资源和提示词

适用场景

  1. 01核对药品说明书中的不良反应
  2. 02查询药品短缺及预计恢复时间
  3. 03筛选含特定辅料的临床等效药
  4. 04比较药品说明书的版本变化

MCP 相关

作为 MCP 服务,向客户端开放 CIMA 查询工具、curated 资源和专业提示词。查询通过 AEMPS 官方 REST API 执行,工具为只读。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"romanpert-mcp-aemps": {
"command": "uvx",
"args": [
"mcp-aemps"
],
"env": {
"PORT": "<PORT>",
"LOG_LEVEL": "<LOG_LEVEL>",
"REDIS_URL": "<REDIS_URL>"
}
}
}
}
启动命令uvx mcp-aemps
需要配置的环境变量
PORTTCP 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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-aemps0.5.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-aemps

mcp-aemps

官方药品数据,为你的 Agent 做好准备。
首个面向制药行业的开源 MCP 服务。实时提供20.000+ 种 AEMPS 药品数据,达到监管级标准。

🇪🇸 西班牙语 · 🇬🇧 English

PyPI npm GHCR Python 版本
PyPI 下载量 许可证 CI MCP 注册表 CIMA API v1.23


你的 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 Desktopmcp-aemps install claude-desktopAnthropic — 默认使用 stdio,可选通过 mcp-remote 使用 HTTP
Claude Codemcp-aemps install claude-codeAnthropic CLI — 可用时使用 claude mcp add
Codex CLImcp-aemps install codexOpenAI — ~/.codex/config.toml
Gemini CLImcp-aemps install geminiGoogle — ~/.gemini/settings.json,原生支持 MCP(v0.4.17+)
VS Codemcp-aemps install vscodeGitHub Copilot Chat MCP — 专用的 mcp.json(2025 年之后)
Cursormcp-aemps install cursor~/.cursor/mcp.json
Windsurfmcp-aemps install windsurfCodeium — ~/.codeium/windsurf/mcp_config.json
Zedmcp-aemps install zedsettings.json 中的 context_servers
Continue.devmcp-aemps install continueVS Code / JetBrains 扩展 — YAML
JetBrains Juniemcp-aemps install jetbrains~/.junie/mcp.json
Antigravitymcp-aemps install antigravityGoogle — 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_HOST127.0.0.1从 v0.4.16 起默认使用回环地址。Docker / 反向代理场景可使用 mcp-aemps up --bind-all 或 UVICORN_HOST=0.0.0.0。
PORT8765HTTP 端口。端口被占用时自动回退。
REDIS_URL—启用分布式缓存 + 在多个副本间共享速率限制。可选。
MCP_AEMPS_LOCALEautoes / en。自动检测操作系统语言。
MCP_AEMPS_DNS_REBINDING_PROTECTIONtrue对 /mcp 执行 Host / Origin 验证。从 v0.4.16 起默认启用。反向代理场景:扩展 MCP_AEMPS_ALLOWED_HOSTS。
METRICS_KEY—启用 /internal/metrics 的必需项(从 v0.4.16 起失败时关闭)。
OAUTH_ENABLEDfalse启用 OAuth 2.1 Resource-Server 模式(多租户 SaaS)。
LOG_LEVELINFO日志级别

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]

GitHub 星标


MCP Registry 标识符:mcp-name: io.github.romanpert/mcp-aemps

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。