Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

ensmcp

by seifreedversion 0.1.2i★ –iRuns on your computer
Registry nameio.github.seifreed/ensmcp

Install

Overview

Description from the maker (original English)

Servidor MCP para consultar el ENS y mantener declaraciones de aplicabilidad auditables.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Other

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • The registry lists no key to fill in.

You need

  • PyPIPython’s uv installed (for the uvx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "ensmcp": {
      "command": "uvx",
      "args": [
        "ensmcp"
      ]
    }
  }
}

Run this in your terminal

claude mcp add ensmcp -- uvx ensmcp

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "ensmcp": {
      "command": "uvx",
      "args": [
        "ensmcp"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "ensmcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "ensmcp"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account seifreed, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Otheri

  • More stars than 0% of the other 32718 servers in this category
  • Published to the registry more recently than 41% of the other 32718 servers in this category
  • Basic checks equal to or better than 100% of the other 32718 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is ensmcp safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.1.2) reached the registry 2 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, MemberVault MCP by usefulapi

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated 2 days ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

ensmcp

Servidor MCP con las medidas de seguridad del ENS (Anexo II del RD 311/2022): consulta el Anexo II, calcula la matriz normativa de aplicabilidad y genera un checklist de auditoría, sin conexión


Qué es

ensmcp es un servidor MCP (Model Context Protocol) que pone las medidas de seguridad del ENS Navegable (Anexo II del RD 311/2022) al alcance de Claude Desktop, Claude Code y cualquier otro cliente MCP. Es un servidor independiente y no está afiliado, respaldado ni mantenido por el CCN, CCN-CERT o el CNI.

Los datos viajan incluidos en el paquete como un snapshot, así que el servidor responde al instante y funciona sin conexión. El modo predeterminado es offline: no abre Chrome ni accede a la red. --check-updates comprueba la fuente oficial sin sustituir el snapshot y --live permite adoptar temporalmente los datos vivos.

La procedencia de los datos se documenta en DATA_LICENSE.md y la publicación en el registro MCP consta en MCP_REGISTRY.md.

Además del Anexo II, incorpora el cuestionario de verificación de la guía CCN-STIC 808 (edición para el RD 311/2022): las preguntas de auditoría por medida, las comprobaciones sobre el articulado del RD y las evidencias documentales que puede pedir el auditor.

Características principales
CaracterísticaDescripción
Transportes MCPstdio por defecto y Streamable HTTP autenticado para despliegues controlados
Funciona sin conexiónEl corpus completo viaja como snapshot en el paquete
Snapshot deterministaEl modo predeterminado sirve siempre el corpus empaquetado
Comprobación explícita--check-updates detecta cambios sin sustituir los datos servidos
Matriz de aplicabilidadCalcula la base normativa para preparar la Declaración de Aplicabilidad
Auditoría CCN-STIC 808Temario de auditoría, requisitos esenciales, artículos del RD y evidencias documentales
Crosswalks externosCarga data packs versionados sin acoplar otros marcos al core

Tools disponibles

Consulta del Anexo II
ToolArgsDescripción
list_categories—Las categorías del Anexo II con su grupo (org, op, mp).
list_measurescategory_code?, dimension?, level?Medidas filtradas por categoría, dimensión de seguridad o nivel.
get_measurecodeUna medida por código exacto (p. ej. "org.1"), con su texto del RD, refuerzos y niveles.
search_measuresqueryBúsqueda por texto en código, título, descripción y redacción del RD (ignora mayúsculas y tildes).
Declaración de Aplicabilidad y auditoría
ToolArgsDescripción
declaracion_aplicabilidadconfidencialidad?, integridad?, disponibilidad?, autenticidad?, trazabilidad?La matriz normativa base para preparar la DdA: se valora cada dimensión (bajo/medio/alto, u omitida) y devuelve las medidas exigibles con sus refuerzos.
evaluate_system_profileprofileCalcula máximos por activos y servicios, aplica perfiles heredados y evalúa subsistemas.
explain_applicabilitycode, profile, subsystem_id?Explica la dimensión, nivel, celda, justificación o regla de perfil que decide una medida.
create_ddarecord_id, profile, subsystem_id?Crea una DdA persistente con las 73 medidas y su decisión de aplicabilidad.
list_dda—Lista las DdA guardadas y resume sus estados de implantación.
get_ddarecord_idRecupera una DdA completa.
update_dda_measure_statusrecord_id, code, implementation_status, ...Registra estado, responsable, evidencias, exclusión o compensación, vigilancia y fechas.
export_ddarecord_id, output_formatExporta como json, csv, markdown, xlsx, ods o docx; el contenido se devuelve en base64.
alcance_auditoriamismas que la DdAEl temario de auditoría del sistema: las medidas aplicables con sus preguntas de verificación acumuladas y el nivel de madurez mínimo exigible.
requisitos_auditoriacode?, level?El cuestionario CCN-STIC 808 en bruto, por medida o por tramo, marcando los requisitos esenciales.
requisitos_articulos—Las comprobaciones de auditoría sobre el articulado del RD (DdA formal, categorización, INES...).
evidencias_auditoriacode?La documentación que puede pedir el auditor, por medida.
Crosswalks
ToolArgsDescripción
list_data_packsinclude_inactive?Lista packs configurados con fuente, versión, cobertura y vigencia.
query_crosswalkpack_id, ens_code?, external_reference?Consulta correspondencias en ambas direcciones, con paginación opcional.
Estado y actualización
ToolArgsDescripción
refresh_live_page—Comprueba ahora el sitio oficial y actualiza los datos si han cambiado.
snapshot_status—Origen y frescura de los datos que se están sirviendo.

Los contratos públicos de entrada y salida están versionados en ens://schemas/v1/tools; cada tool también expone su schema individual en ens://schemas/v1/tools/{name}.

Qué devuelve una medida

Cada medida trae dos textos, y hacen falta los dos: norm_text es la redacción del RD 311/2022 (lo que la medida exige) y description es el cuestionario de la CCN-STIC 808 (lo que el auditor pregunta). Los refuerzos vienen emparejados con el nivel que los exige y con su redacción en el RD:

{

"code": "mp.s.4", "title": "Protección frente a denegación de servicio", "description": "Categoría Media 1.1 ¿Se ha planificado y dotado al sistema de capacidad suficiente ...?", "norm_text": "Se establecerán medidas preventivas frente a ataques de denegación de servicio ...", "category_code": "mp.s", "dimensions": ["disponibilidad"], "levels": ["medio", "alto"], "reinforcements": [ { "code": "R1", "level": "alto", "alternative": false, "text": "R1-Detección y reacción. ..." } ], "raw_levels": { "bajo": "n.a.", "medio": "aplica", "alto": "+ R1" } }

alternative distingue los refuerzos obligatorios (+ R1 + R2) de los alternativos (+ [R1 o R2], donde basta uno cualquiera): confundirlos cambia lo que hay que implantar.

Declaración de Aplicabilidad

El ENS no aplica un nivel al sistema entero: aplica uno por dimensión. Se valora cada una y la tool devuelve lo que ese sistema debe cumplir:

{

"categoria_sistema": "alta", "measures": [ { "code": "op.acc.5", "title": "Mecanismo de autenticación (usuarios externos)", "required_level": "alto", "required_reinforcements": [ { "code": "R2", "alternative": true, "text": "R2-..." }, { "code": "R5", "alternative": false, "text": "R5-..." } ] } ] }

La regla sale del RD 311/2022: la categoría del sistema es el mayor de los niveles valorados (Anexo I, ap. 4), las medidas marcadas «Categoría» se exigen según la categoría del sistema, las que protegen dimensiones según el nivel de esas dimensiones, y una dimensión sin valorar deja fuera las medidas que solo la protegen.

Las DdA persistentes se guardan como JSON versionado mediante escritura atómica. Por defecto viven en ~/.ensmcp/dda; ENSMCP_DATA_DIR=/ruta cambia la raíz a /ruta/dda. Los estados admitidos son not_assessed, implemented, partially_implemented, not_implemented, excluded y compensated. Una exclusión exige motivo y una compensación exige al menos una medida compensatoria.

Alcance de auditoría

Si la DdA contesta *«¿qué tengo que implantar?»*, alcance_auditoria contesta *«¿qué me va a preguntar el auditor?»*. Devuelve, por cada medida aplicable, los requisitos de verificación acumulados hasta su nivel exigible y el nivel de madurez mínimo que exige la guía:

CategoríaNivel mínimo de madurez
BÁSICAL2 — Reproducible, pero intuitivo
MEDIAL3 — Proceso definido
ALTAL4 — Gestionado y medible

El matiz importa: los tramos que el ENS Navegable etiqueta «Categoría Básica / Media / Alta» son acumulativos según la CCN-STIC 808 §5 — «Categoría Básica» significa *exigible a todas las categorías*, no *solo para sistemas básicos*. Un sistema de categoría media responde las preguntas de básica y las de media. Para un sistema C=alto, I=medio, D=bajo, A=medio, T=medio, el temario real son 382 preguntas (136 esenciales, cuyo incumplimiento bloquea la certificación), no las 73 de su tramo.

requisitos_articulos y evidencias_auditoria cubren la otra mitad de la auditoría: las comprobaciones sobre el articulado del RD (si la DdA existe y está suscrita, si el sistema está categorizado formalmente, si se reporta a INES...) y las 365 evidencias documentales que la guía propone. Estos datos salen de la CCN-STIC 808; el ENS Navegable no los publica.

De dónde salen los datos

  • `src/ensmcp/data/anexo_ii.json` — el corpus del ENS Navegable (medidas, textos del RD, cuestionario, aplicabilidad por niveles), capturado del sitio oficial. Cada consulta es un lookup en memoria.
  • `src/ensmcp/data/guia_808.json` — el dato extraído de la guía CCN-STIC 808 con su atribución (la guía en sí no se redistribuye). snapshot_status indica de qué edición procede.

Para regenerar el snapshot:

python scripts/build_snapshot.py

El servidor no abre Chrome ni usa la red por defecto. Para consultar cambios explícitamente:

ensmcp --offline

ensmcp --check-updates ensmcp --live

También puede configurarse con ENSMCP_MODE=offline|check-updates|live.

Streamable HTTP autenticado

El transporte HTTP escucha únicamente en loopback y exige un Bearer token de al menos 32 caracteres:

export ENSMCP_HTTP_TOKEN="$(openssl rand -hex 32)"

ensmcp --transport http

El endpoint MCP queda en http://127.0.0.1:8000/mcp. Los clientes deben enviar Authorization: Bearer $ENSMCP_HTTP_TOKEN. Un cliente web también necesita que su Origin se autorice de forma exacta:

ensmcp --transport http --allow-origin https://cliente.example

ENSMCP_TRANSPORT=http selecciona el mismo transporte. --host sólo acepta 127.0.0.1, localhost, ::1 u otra dirección loopback; --port cambia el puerto. Si un proxy inverso conserva un Host distinto, se autoriza con --allow-host mcp.example.

Para acceso desde otra máquina, mantén ensmcp en loopback

Only the beginning is shown; read the rest in the repo

Ask PopNx