Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Servidor MCP para consultar el ENS y mantener declaraciones de aplicabilidad auditables.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"ensmcp": {
"command": "uvx",
"args": [
"ensmcp"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add ensmcp -- uvx ensmcp프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"ensmcp": {
"command": "uvx",
"args": [
"ensmcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"ensmcp": {
"type": "stdio",
"command": "uvx",
"args": [
"ensmcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 seifreed 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.2)은 2개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Claude Checkpoint MCP
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ 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.
MCP server that checkpoints Claude Code session context to survive crashes and token limits
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
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
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ística | Descripción |
|---|---|
| Transportes MCP | stdio por defecto y Streamable HTTP autenticado para despliegues controlados |
| Funciona sin conexión | El corpus completo viaja como snapshot en el paquete |
| Snapshot determinista | El modo predeterminado sirve siempre el corpus empaquetado |
| Comprobación explícita | --check-updates detecta cambios sin sustituir los datos servidos |
| Matriz de aplicabilidad | Calcula la base normativa para preparar la Declaración de Aplicabilidad |
| Auditoría CCN-STIC 808 | Temario de auditoría, requisitos esenciales, artículos del RD y evidencias documentales |
| Crosswalks externos | Carga data packs versionados sin acoplar otros marcos al core |
| Tool | Args | Descripción |
|---|---|---|
list_categories | — | Las categorías del Anexo II con su grupo (org, op, mp). |
list_measures | category_code?, dimension?, level? | Medidas filtradas por categoría, dimensión de seguridad o nivel. |
get_measure | code | Una medida por código exacto (p. ej. "org.1"), con su texto del RD, refuerzos y niveles. |
search_measures | query | Búsqueda por texto en código, título, descripción y redacción del RD (ignora mayúsculas y tildes). |
| Tool | Args | Descripción |
|---|---|---|
declaracion_aplicabilidad | confidencialidad?, 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_profile | profile | Calcula máximos por activos y servicios, aplica perfiles heredados y evalúa subsistemas. |
explain_applicability | code, profile, subsystem_id? | Explica la dimensión, nivel, celda, justificación o regla de perfil que decide una medida. |
create_dda | record_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_dda | record_id | Recupera una DdA completa. |
update_dda_measure_status | record_id, code, implementation_status, ... | Registra estado, responsable, evidencias, exclusión o compensación, vigilancia y fechas. |
export_dda | record_id, output_format | Exporta como json, csv, markdown, xlsx, ods o docx; el contenido se devuelve en base64. |
alcance_auditoria | mismas que la DdA | El 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_auditoria | code?, 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_auditoria | code? | La documentación que puede pedir el auditor, por medida. |
| Tool | Args | Descripción |
|---|---|---|
list_data_packs | include_inactive? | Lista packs configurados con fuente, versión, cobertura y vigencia. |
query_crosswalk | pack_id, ens_code?, external_reference? | Consulta correspondencias en ambas direcciones, con paginación opcional. |
| Tool | Args | Descripció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}.
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.
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.
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ía | Nivel mínimo de madurez |
|---|---|
| BÁSICA | L2 — Reproducible, pero intuitivo |
| MEDIA | L3 — Proceso definido |
| ALTA | L4 — 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.
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.
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
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요