Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
MCP server for the Spanish AEMPS CIMA pharmaceutical registry (20,000+ authorised medicines).
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
PORT, LOG_LEVEL, REDIS_URL你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"aemps": {
"command": "uvx",
"args": [
"mcp-aemps",
"up"
],
"env": {
"PORT": "your-value",
"LOG_LEVEL": "your-value",
"REDIS_URL": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add aemps --env PORT=your-value --env LOG_LEVEL=your-value --env REDIS_URL=your-value -- uvx mcp-aemps up运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"aemps": {
"command": "uvx",
"args": [
"mcp-aemps",
"up"
],
"env": {
"PORT": "your-value",
"LOG_LEVEL": "your-value",
"REDIS_URL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"aemps": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-aemps",
"up"
],
"env": {
"PORT": "your-value",
"LOG_LEVEL": "your-value",
"REDIS_URL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
PORT envLOG_LEVEL envREDIS_URL env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 romanpert 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.5.0)于6个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Excaliself
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
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.
Find, read, create, edit, and organize Excalidraw drawings in your self-hosted Excaliself instance.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
mcp-aemps
Datos farmacéuticos oficiales, listos para tu agente.
El primer servidor MCP open-source para la industria farmacéutica. 20.000+ medicamentos AEMPS , en tiempo real, regulator-grade.
🇪🇸 Español · 🇬🇧 English
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.
# 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 # pipx
Reinicia 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.
| Cliente | Comando | Notas |
|---|---|---|
| Claude Desktop | mcp-aemps install claude-desktop | Anthropic — stdio por defecto, HTTP via mcp-remote opcional |
| Claude Code | mcp-aemps install claude-code | Anthropic CLI — usa claude mcp add cuando está disponible |
| Codex CLI | mcp-aemps install codex | OpenAI — ~/.codex/config.toml |
| Gemini CLI | mcp-aemps install gemini | Google — ~/.gemini/settings.json, MCP nativo (v0.4.17+) |
| VS Code | mcp-aemps install vscode | GitHub Copilot Chat MCP — mcp.json dedicado (post-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 | context_servers en settings.json |
| Continue.dev | mcp-aemps install continue | Extensión VS Code / JetBrains — YAML |
| JetBrains Junie | mcp-aemps install jetbrains | ~/.junie/mcp.json |
| Antigravity | mcp-aemps install 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.
🏛️ 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.
21 herramientas MCP — todas mapean 1:1 a endpoints CIMA REST oficiales
| Herramienta | Endpoint CIMA | Descripción | |
|---|---|---|---|
obtener_medicamento | GET /medicamento | Ficha completa por CN o nregistro | |
buscar_medicamentos | GET /medicamentos | Búsqueda paginada con 20+ filtros | |
buscar_en_ficha_tecnica | POST /buscarEnFichaTecnica | Full-text dentro de fichas técnicas | |
listar_presentaciones | GET /presentaciones | Listado con filtros | |
obtener_presentacion | GET /presentacion/:cn | Detalle por Código Nacional | |
buscar_vmpp | GET /vmpp | Equivalentes clínicos (VMP/VMPP) | |
consultar_maestras | GET /maestras | ATC, principios activos, formas, laboratorios | |
registro_cambios | `GET\ | POST /registroCambios` | Histórico de altas / bajas / modificaciones |
problemas_suministro | GET /psuministro + GET /psuministro/v2/cn/:cn | Listado global o por Código Nacional | |
problemas_suministro_dcp | GET /psuministro/v2/dcp/:dcp | Por DCP (descripción clínica) | |
problemas_suministro_dcpf | GET /psuministro/v2/dcpf/:dcpf | Por DCPF (con forma farmacéutica) | |
listar_notas / obtener_notas | GET /notas/:nregistro | Notas de seguridad | |
listar_materiales / obtener_materiales | GET /materiales/:nregistro | Materiales informativos | |
doc_secciones | GET /docSegmentado/secciones/:tipo | Metadatos de secciones | |
doc_contenido | GET /docSegmentado/contenido/:tipo | Contenido (JSON / HTML / texto) | |
html_ficha_tecnica | GET /dochtml/ft/:nregistro/:file | HTML completo de la FT | |
html_prospecto | GET /dochtml/p/:nregistro/:file | 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.
11 recursos curados bajo el esquema URI cima:// — cacheables, sin coste de tokens
Recursos estáticos:
| URI | Contenido |
|---|---|
cima://maestras/atc | Árbol completo de códigos ATC |
cima://maestras/principios-activos | Listado completo |
cima://maestras/laboratorios | Laboratorios titulares de autorización |
cima://maestras/formas-farmaceuticas | Comprimido, inyectable, … |
cima://maestras/vias-administracion | Oral, IV, tópica, … |
Templates:
| URI template | Contenido |
|---|---|
cima://maestras/atc/{codigo} | Lookup ATC (p.ej. C09AA02 → Enalapril) |
cima://maestras/principios-activos/{id} | Lookup principio activo |
cima://docs/ficha-tecnica/{nregistro} | HTML completo |
cima://docs/ficha-tecnica/{nregistro}/{seccion} | Sección concreta (4.1, 4.8, 5.1, …) |
cima://docs/prospecto/{nregistro} | HTML completo |
cima://docs/prospecto/{nregistro}/{seccion} | Sección concreta (1, 2, 3, 4, 5, 6) |
10 prompts MCP curados — workflows profesionales y de paciente listos para invocar
| Prompt | Audiencia | Caso de uso |
|---|---|---|
identificar_cn | Farmacia comunitaria | Tarjeta resumen one-screen a partir de un Código Nacional |
equivalencias_genericas | Farmacia comunitaria | Sustitución durante desabastecimiento |
vigilancia_paciente | Farmacia hospitalaria | Notas de seguridad activas para una cartera de medicación |
comparar_fichas_tecnicas | Hospital + industria | Tabla wide-format comparando 2-5 medicamentos sección a sección |
auditar_cartera_laboratorio | Industria | Snapshot regulatorio completo de un laboratorio |
monitorizar_cambios_cartera | Regulatory affairs | Diff de altas / bajas / modificaciones sobre una lista de productos |
informe_posicionamiento_terapeutico | Hospital + industria | IPE/IPT + indicación autorizada + mecanismo |
material_visual_paciente | Counseling | Fotos, vídeos, material informativo segregado por audiencia |
info_medicamento_para_no_sanitarios | Público general | Resumen llano sin jerga |
comprobar_interaccion_principios_activos | 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.
Cero variables requeridas — el servidor arranca con defaults sensatos. Las opciones más usadas:
| Variable | Default | Para qué |
|---|---|---|
UVICORN_HOST | 127.0.0.1 | Loopback por defecto desde v0.4.16. mcp-aemps up --bind-all o UVICORN_HOST=0.0.0.0 para Docker / reverse-proxy. |
PORT | 8765 | Puerto HTTP. Auto-fallback si está ocupado. |
REDIS_URL | — | Activa cache distribuida + rate-limit compartido entre réplicas. Opcional. |
MCP_AEMPS_LOCALE | auto | es / en. Auto-detecta del SO. |
| MCP_AEMPS_DNS_REBINDING_PROTECTION | true | Validación Host / Origin en /mcp. Activado por
只显示了开头部分;其余内容请在仓库中阅读