ensmcp
Что это такое
ensmcp — это MCP-сервер (Model Context Protocol), который предоставляет меры безопасности из ENS Navegable (Приложение II к RD 311/2022) для Claude Desktop, Claude Code и любого другого MCP-клиента. Это независимый сервер, не аффилированный с CCN, CCN-CERT или CNI и не поддерживаемый ими.
Данные включены в пакет в виде снимка (snapshot), поэтому сервер отвечает мгновенно и работает без подключения к сети. Режим по умолчанию — offline: он не открывает Chrome и не обращается к сети. --check-updates проверяет официальный источник, не заменяя снимок, а --live позволяет временно использовать живые данные.
Помимо Приложения II, сервер включает проверочный вопросник из руководства CCN-STIC 808 (редакция для RD 311/2022): аудиторские вопросы по каждой мере, проверки по статьям RD и документальные доказательства, которые может запросить аудитор.
Основные характеристики
Характеристика | Описание |
MCP-сервер через stdio | Интегрируется в Claude Desktop, Claude Code и другие MCP-клиенты |
Работает без сети | Полный корпус включён в пакет в виде снимка |
Детерминированный снимок | Режим по умолчанию всегда отдаёт упакованный корпус |
Явная проверка |
|
Матрица применимости | Рассчитывает нормативную базу для подготовки Декларации о применимости |
Аудит CCN-STIC 808 | Программа аудита, существенные требования, статьи RD и документальные доказательства |
Related MCP server: nist-mcp
Доступные инструменты
Просмотр Приложения II
Tool | Args | Описание |
| — | Категории Приложения II с их группой ( |
|
| Меры с фильтрацией по категории, измерению безопасности или уровню. |
|
| Одна мера по точному коду (напр. |
|
| Поиск по тексту в коде, названии, описании и формулировке RD (без учёта регистра и диакритики). |
Декларация о применимости и аудит
Tool | Args | Описание |
|
| Базовая нормативная матрица для подготовки DdA: оценивается каждое измерение ( |
| те же, что и для DdA | Программа аудита системы: применимые меры с накопленными проверочными вопросами и минимально требуемым уровнем зрелости. |
|
| Сырой вопросник CCN-STIC 808, по мере или по диапазону, с пометкой существенных требований. |
| — | Аудиторские проверки по статьям RD (формальная DdA, категоризация, INES...). |
|
| Документация, которую может запросить аудитор, по мере. |
Состояние и обновление
Tool | Args | Описание |
| — | Проверяет официальный сайт сейчас и обновляет данные, если они изменились. |
| — | Источник и свежесть отдаваемых данных. |
Что возвращает мера
Каждая мера содержит два текста, и нужны оба: norm_text — это формулировка из RD 311/2022 (что мера требует), а description — вопросник CCN-STIC 808 (что аудитор спрашивает). Усиления идут в паре с уровнем, который их требует, и с их формулировкой в 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 различает обязательные усиления (+ R1 + R2) и альтернативные (+ [R1 o R2], где достаточно любого одного): их путаница меняет то, что нужно внедрять.
Декларация о применимости
ENS не применяет один уровень ко всей системе: он применяет по одному на каждое измерение. Каждое измерение оценивается, и инструмент возвращает то, что должна выполнять данная система:
{
"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-..." }
] }
]
}Правило вытекает из RD 311/2022: категория системы — это наибольший из оценённых уровней (Приложение I, п. 4), меры с пометкой «Categoría» требуются в соответствии с категорией системы, меры, защищающие измерения, — в соответствии с уровнем этих измерений, а неоценённое измерение исключает меры, защищающие только его.
Объём аудита
Если DdA отвечает на вопрос «что мне нужно внедрить?», то alcance_auditoria отвечает на вопрос «о чём меня спросит аудитор?». Для каждой применимой меры возвращаются проверочные требования, накопленные до её требуемого уровня, и минимальный уровень зрелости, который требует руководство:
Категория | Минимальный уровень зрелости |
BÁSICA | L2 — Воспроизводимый, но интуитивный |
MEDIA | L3 — Определённый процесс |
ALTA | L4 — Управляемый и измеримый |
Этот нюанс важен: диапазоны, которые ENS Navegable помечает как «Categoría Básica / Media / Alta», являются накопительными согласно CCN-STIC 808 §5 — «Categoría Básica» означает требуемое для всех категорий, а не только для базовых систем. Система средней категории отвечает на вопросы базовой и средней. Для системы C=alto, I=medio, D=bajo, A=medio, T=medio реальная программа — это 382 вопроса (136 существенных, невыполнение которых блокирует сертификацию), а не 73 из её диапазона.
requisitos_articulos и evidencias_auditoria покрывают вторую половину аудита: проверки по статьям RD (существует ли DdA и подписана ли она, формально ли категоризирована система, сообщается ли в INES...) и 365 документальных доказательств, которые предлагает руководство. Эти данные взяты из CCN-STIC 808; ENS Navegable их не публикует.
Откуда берутся данные
src/ensmcp/data/anexo_ii.json— корпус ENS Navegable (меры, тексты RD, вопросник, применимость по уровням), захваченный с официального сайта. Каждый запрос — это поиск в памяти.src/ensmcp/data/guia_808.json— данные, извлечённые из руководства CCN-STIC 808, с указанием источника (само руководство не распространяется повторно).snapshot_statusпоказывает, из какой редакции взяты данные.
Для пересоздания снимка:
python scripts/build_snapshot.pyСервер не открывает Chrome и не использует сеть по умолчанию. Для явной проверки изменений:
ensmcp --offline
ensmcp --check-updates
ensmcp --liveТакже можно настроить через ENSMCP_MODE=offline|check-updates|live.
Требования
Python 3.12-3.14
Только для обновления снимка (refresh_live_page, проверка при запуске, scripts/build_snapshot.py) дополнительно нужны:
Установленный Google Chrome
Дисплей (или
xvfbна серверах без него)
Установка
Для использования сервера из PyPI:
pip install ensmcp
ensmcp --offlineДля включения live-проверки:
pip install "ensmcp[live]"
ensmcp --check-updatesРазработка
git clone https://github.com/seifreed/ensmcp.git
cd ensmcp
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r pylock.toml # versiones exactas, verificadas por hash
pip install -e . --no-deps # el propio paquete, sin re-resolver
patchright install chromiumНа свежеустановленном Linux может дополнительно понадобиться:
patchright install-deps chromiumpyproject.toml — единственное место, где объявляются зависимости; pylock.toml — это артефакт, сгенерированный из него (PEP 751), который фиксирует все зависимости — runtime и dev вместе — с точными версиями и хэшами, с маркерами для Windows, Linux и macOS на x64 и ARM. Для обновления зависимостей отредактируйте диапазоны в pyproject.toml и перегенерируйте:
uv pip compile pyproject.toml --all-extras --universal --python-version 3.12 \
--format pylock.toml -o pylock.tomlБыстрый старт
python -m ensmcpНастройте его в MCP-клиенте (напр. Claude Desktop / Claude Code), указав интерпретатор виртуального окружения:
{
"mcpServers": {
"ensmcp": { "command": "ensmcp", "args": ["--offline"] }
}
}Больше ничего настраивать не нужно: запросы обрабатываются из снимка пакета.
Для решений о соответствии приоритет имеют BOE, Технические инструкции по безопасности, действующие официальные руководства и критерии соответствующего аудиторского или сертификационного органа.
Для ручной проверки:
npx @modelcontextprotocol/inspector venv/bin/python -m ensmcpВклад в проект
Вклад приветствуется.
Сделайте форк репозитория
Создайте свою ветку функциональности (
git checkout -b feature/nueva-funcionalidad)Закоммитьте изменения (
git commit -m 'Añade nueva funcionalidad')Запушьте ветку (
git push origin feature/nueva-funcionalidad)Откройте Pull Request
Убедитесь, что все gates качества и безопасности проходят без ошибок и предупреждений перед отправкой PR.
Поддержите проект
Если этот проект полезен для вас, вы можете поддержать его развитие:
Автор
Marc Rivero López | @seifreed
Репозиторий: github.com/seifreed/ensmcp
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides instant access to authoritative security documentation from organizations like OWASP, NIST, and major cloud providers through natural language semantic search. It enables users to retrieve security best practices, frameworks, and vulnerability information directly from a locally cached knowledge base.41MIT
- AlicenseAqualityDmaintenanceProvides structured access to the full NIST cybersecurity catalog, including SP 800/1800 publications, security controls, CSF 2.0, and the NVD database. It enables AI assistants to search and retrieve cybersecurity standards, CVEs, and compliance guidance directly from a local SQLite index.201MIT
- AlicenseNot gradedqualityDmaintenanceProvides offline full-text search across 35,000+ Swiss laws from all cantons and federal level using SQLite FTS5 indexing. Enables querying laws, articles, and metadata through natural language.1MIT
- AlicenseAqualityFmaintenanceEnables querying Portuguese cybersecurity regulations, guidance, advisories, and frameworks from CNCS via MCP-compatible clients.6Apache 2.0
Related MCP Connectors
Offline methodology engine for authorized penetration testing, CTF, and security research.
Offline US medical code lookup and crosswalk — ICD-10-CM/PCS, HCPCS Level II, RxNorm. Keyless.
Offline, keyless lookup of the US civil aircraft registry — decode N-numbers, search records.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/seifreed/ensmcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server