ensmcp
这是什么
ensmcp 是一个 MCP(模型上下文协议)服务器,将 ENS Navegable(RD 311/2022附件II)的安全措施提供给 Claude Desktop、Claude Code 及任何其他 MCP 客户端使用。它是一个独立服务器,与 CCN、CCN-CERT 或 CNI 无隶属关系,也未获得其支持或维护。
数据以快照形式随包分发,因此服务器可即时响应并离线运行。默认模式为 offline:不启动 Chrome 也不访问网络。--check-updates 用于检查官方来源而不替换快照,--live 可临时采用实时数据。
除附件II外,还集成了 CCN-STIC 808 指南(RD 311/2022版)的验证问卷:每项措施的审计问题、对RD条款的核查以及审计员可能要求的文件证据。
主要特性
特性 | 描述 |
基于 stdio 的 MCP 服务器 | 可集成到 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节),标记为「类别」的措施按系统类别执行,保护维度的措施按该维度的级别执行,未评级的维度将排除仅保护该维度的措施。
审计范围
如果DdA回答的是*「我需要实施什么?」,那么 alcance_auditoria 回答的是「审计员会问我什么?」*。它针对每项适用措施,返回累积到其要求级别的验证要求,以及指南要求的最低成熟度级别:
类别 | 最低成熟度级别 |
基础 | L2 — 可复现,但凭直觉 |
中等 | L3 — 已定义流程 |
高级 | L4 — 已管理且可度量 |
这个细节很重要:ENS Navegable 标注为「基础/中等/高级类别」的区间,根据 CCN-STIC 808 §5 是累积性的——「基础类别」意味着对所有类别都适用,而非仅适用于基础系统。中等类别系统需要回答基础和中等的全部问题。对于一个 C=高、I=中、D=低、A=中、T=中的系统,实际大纲是 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启用实时检查:
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),将所有依赖——运行时和开发依赖一起——固定到精确版本和哈希,并带有 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贡献
欢迎贡献。
Fork 本仓库
创建你的功能分支(
git checkout -b feature/nueva-funcionalidad)提交你的更改(
git commit -m 'Añade nueva funcionalidad')推送分支(
git push origin feature/nueva-funcionalidad)打开 Pull Request
请确保所有质量和安全门禁在发送 PR 前无错误无警告地通过。
支持项目
如果这个项目对你有用,你可以支持它的发展:
作者
Marc Rivero López | @seifreed
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