ensmcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ensmcpCalculate the applicability matrix for high availability and medium integrity"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
What it is
ensmcp is an MCP (Model Context Protocol) server that brings the security measures of ENS Navegable (Annex II of RD 311/2022) within reach of Claude Desktop, Claude Code and any other MCP client. It is an independent server and is not affiliated with, endorsed by or maintained by the CCN, CCN-CERT or CNI.
The data ships in the package as a snapshot, so the server responds instantly and works offline. The default mode is offline: it does not open Chrome or access the network. --check-updates checks the official source without replacing the snapshot and --live allows temporarily adopting the live data.
In addition to Annex II, it includes the verification questionnaire from the CCN-STIC 808 guide (edition for RD 311/2022): the audit questions per measure, the checks on the RD articles and the documentary evidence the auditor may request.
Main features
Feature | Description |
MCP server over stdio | Integrable into Claude Desktop, Claude Code and other MCP clients |
Works offline | The full corpus ships as a snapshot in the package |
Deterministic snapshot | The default mode always serves the packaged corpus |
Explicit check |
|
Applicability matrix | Calculates the regulatory basis to prepare the Applicability Statement |
CCN-STIC 808 audit | Audit syllabus, essential requirements, RD articles and documentary evidence |
Related MCP server: nist-mcp
Available tools
Annex II query
Tool | Args | Description |
| — | The Annex II categories with their group ( |
|
| Measures filtered by category, security dimension or level. |
|
| A measure by exact code (e.g. |
|
| Text search in code, title, description and RD wording (case- and accent-insensitive). |
Applicability Statement and audit
Tool | Args | Description |
|
| The base regulatory matrix to prepare the DdA: each dimension is rated ( |
| same as the DdA | The system's audit syllabus: the applicable measures with their accumulated verification questions and the minimum maturity level required. |
|
| The raw CCN-STIC 808 questionnaire, per measure or per tier, marking the essential requirements. |
| — | The audit checks on the RD articles (formal DdA, categorization, INES...). |
|
| The documentation the auditor may request, per measure. |
Status and updates
Tool | Args | Description |
| — | Checks the official site now and updates the data if it has changed. |
| — | Origin and freshness of the data being served. |
What a measure returns
Each measure carries two texts, and both are needed: norm_text is the wording of RD 311/2022 (what the measure requires) and description is the CCN-STIC 808 questionnaire (what the auditor asks). The reinforcements come paired with the level that requires them and with their wording in the 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 distinguishes the mandatory reinforcements (+ R1 + R2) from the alternative ones (+ [R1 or R2], where any single one suffices): confusing them changes what must be implemented.
Applicability Statement
The ENS does not apply one level to the whole system: it applies one per dimension. Each one is rated and the tool returns what that system must comply with:
{
"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-..." }
] }
]
}The rule comes from RD 311/2022: the system's category is the highest of the rated levels (Annex I, section 4), measures marked "Category" are required according to the system's category, those protecting dimensions according to the level of those dimensions, and an unrated dimension leaves out the measures that only protect it.
Audit scope
If the DdA answers "what do I have to implement?", alcance_auditoria answers "what is the auditor going to ask me?". For each applicable measure, it returns the verification requirements accumulated up to its enforceable level and the minimum maturity level required by the guide:
Category | Minimum maturity level |
BASIC | L2 — Reproducible, but intuitive |
MEDIUM | L3 — Defined process |
HIGH | L4 — Managed and measurable |
The nuance matters: the tiers that ENS Navegable labels "Basic / Medium / High Category" are cumulative according to CCN-STIC 808 §5 — "Basic Category" means enforceable for all categories, not only for basic systems. A medium-category system answers the basic questions and the medium ones. For a system with C=high, I=medium, D=low, A=medium, T=medium, the real syllabus is 382 questions (136 essential, whose non-compliance blocks certification), not the 73 in its tier.
requisitos_articulos and evidencias_auditoria cover the other half of the audit: the checks on the RD articles (whether the DdA exists and is signed, whether the system is formally categorized, whether it is reported to INES...) and the 365 documentary evidence items the guide proposes. This data comes from CCN-STIC 808; ENS Navegable does not publish it.
Where the data comes from
src/ensmcp/data/anexo_ii.json— the ENS Navegable corpus (measures, RD texts, questionnaire, applicability by levels), captured from the official site. Each query is an in-memory lookup.src/ensmcp/data/guia_808.json— the data extracted from the CCN-STIC 808 guide with its attribution (the guide itself is not redistributed).snapshot_statusindicates which edition it comes from.
To regenerate the snapshot:
python scripts/build_snapshot.pyThe server does not open Chrome or use the network by default. To check for changes explicitly:
ensmcp --offline
ensmcp --check-updates
ensmcp --liveIt can also be configured with ENSMCP_MODE=offline|check-updates|live.
Requirements
Python 3.12-3.14
Only to update the snapshot (refresh_live_page, the startup check, scripts/build_snapshot.py) you also need:
Google Chrome installed
A display (or
xvfbon servers without one)
Installation
To use the server from PyPI:
pip install ensmcp
ensmcp --offlineTo enable the live check:
pip install "ensmcp[live]"
ensmcp --check-updatesDevelopment
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 chromiumOn a freshly installed Linux it may also be necessary:
patchright install-deps chromiumpyproject.toml is the only place where dependencies are declared; pylock.toml is an artifact generated from it (PEP 751) that pins all dependencies —runtime and development together— to exact version and hash, with markers for Windows, Linux and macOS on x64 and ARM. To update dependencies, edit the ranges in pyproject.toml and regenerate:
uv pip compile pyproject.toml --all-extras --universal --python-version 3.12 \
--format pylock.toml -o pylock.tomlQuick start
python -m ensmcpConfigure it in an MCP client (e.g. Claude Desktop / Claude Code) pointing to the virtual environment interpreter:
{
"mcpServers": {
"ensmcp": { "command": "ensmcp", "args": ["--offline"] }
}
}No further configuration is needed: queries are answered from the package snapshot.
For compliance decisions, the BOE, the Technical Security Instructions, the current official guides and the criteria of the corresponding auditing or certification entity prevail.
To inspect it manually:
npx @modelcontextprotocol/inspector venv/bin/python -m ensmcpContributing
Contributions are welcome.
Fork the repository
Create your feature branch (
git checkout -b feature/new-feature)Commit your changes (
git commit -m 'Add new feature')Push the branch (
git push origin feature/new-feature)Open a Pull Request
Make sure all quality and security gates pass without errors or warnings before submitting the PR.
Support the project
If this project is useful to you, you can support its development:
Author
Marc Rivero López | @seifreed
Repository: 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