ensmcp
소개
ensmcp는 ENS Navegable(RD 311/2022 부속서 II)의 보안 조치를 Claude Desktop, Claude Code 및 기타 MCP 클라이언트에서 사용할 수 있게 해주는 MCP(Model Context Protocol) 서버입니다. 독립적인 서버이며 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 | Descripción |
| — | 부속서 II의 범주와 해당 그룹( |
|
| 범주, 보안 차원 또는 수준으로 필터링된 조치. |
|
| 정확한 코드로 조치 하나 조회(예: |
|
| 코드, 제목, 설명 및 RD 문구에서 텍스트 검색(대소문자 및 악센트 무시). |
적용성 선언서 및 감사
Tool | Args | Descripción |
|
| DdA 작성을 위한 기본 규범 매트릭스: 각 차원을 평가( |
| DdA와 동일한 인자 | 시스템 감사 주제: 적용 가능한 조치와 누적된 검증 질문, 요구되는 최소 성숙도 수준. |
|
| CCN-STIC 808 설문지를 조치별 또는 구간별로 원문 그대로 제공, 필수 요구사항 표시. |
| — | RD 조문에 대한 감사 점검 사항(정식 DdA, 분류, INES 등). |
|
| 감사관이 요청할 수 있는 문서, 조치별. |
상태 및 업데이트
Tool | Args | Descripción |
| — | 공식 사이트를 지금 확인하고 데이터가 변경된 경우 업데이트. |
| — | 제공 중인 데이터의 출처와 최신 상태. |
조치가 반환하는 내용
각 조치는 두 가지 텍스트를 제공하며 둘 다 필요합니다. 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는 *«감사관이 무엇을 물어볼까?»*에 답합니다. 적용 가능한 각 조치에 대해 요구 수준까지 누적된 검증 요구사항과 가이드가 요구하는 최소 성숙도 수준을 반환합니다:
범주 | 최소 성숙도 수준 |
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 --liveENSMCP_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기여
기여를 환영합니다.
저장소를 포크합니다
기능 브랜치를 만듭니다(
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