security-controls-mcp 0.3.2__tar.gz → 0.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/.gitleaks.toml +2 -4
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/CHANGELOG.md +18 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/PAID_STANDARDS_GUIDE.md +54 -145
- security_controls_mcp-0.3.3/PKG-INFO +288 -0
- security_controls_mcp-0.3.3/README.md +255 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/SECURITY.md +5 -4
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/pyproject.toml +1 -1
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/__init__.py +1 -1
- security_controls_mcp-0.3.3/src/security_controls_mcp.egg-info/PKG-INFO +288 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp.egg-info/SOURCES.txt +0 -13
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/tests/test_smoke.py +1 -7
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/verify_production_ready.py +1 -3
- security_controls_mcp-0.3.2/CI-CD-PIPELINE.md +0 -622
- security_controls_mcp-0.3.2/CLAUDE_CODE_SETUP.md +0 -222
- security_controls_mcp-0.3.2/DEPLOYMENT_CHECKLIST.md +0 -327
- security_controls_mcp-0.3.2/INSTALL.md +0 -165
- security_controls_mcp-0.3.2/LEGAL_COMPLIANCE.md +0 -284
- security_controls_mcp-0.3.2/PKG-INFO +0 -556
- security_controls_mcp-0.3.2/QUICK_START.md +0 -169
- security_controls_mcp-0.3.2/README.md +0 -523
- security_controls_mcp-0.3.2/RELEASE_NOTES_v0.3.1.md +0 -56
- security_controls_mcp-0.3.2/SECURITY-TOOLS.md +0 -417
- security_controls_mcp-0.3.2/TESTING.md +0 -229
- security_controls_mcp-0.3.2/quality_test.py +0 -173
- security_controls_mcp-0.3.2/scf-extract-starter.py +0 -250
- security_controls_mcp-0.3.2/scf-query-tester.py +0 -238
- security_controls_mcp-0.3.2/src/security_controls_mcp.egg-info/PKG-INFO +0 -556
- security_controls_mcp-0.3.2/test_server.py +0 -68
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/CLAUDE.md +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/Dockerfile +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/LICENSE +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/LICENSE-DATA.md +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/MANIFEST.in +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/setup.cfg +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/__main__.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/cli.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/config.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/data/framework-to-scf.json +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/data/scf-controls.json +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/data_loader.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/extractors/__init__.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/extractors/pdf_extractor.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/http_server.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/legal_notice.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/providers.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/registry.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp/server.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp.egg-info/dependency_links.txt +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp.egg-info/entry_points.txt +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp.egg-info/requires.txt +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/src/security_controls_mcp.egg-info/top_level.txt +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/tests/README.md +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/tests/__init__.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/tests/test_content_quality.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/tests/test_data_loader.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/tests/test_integration.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/tests/test_paid_standards.py +0 -0
- {security_controls_mcp-0.3.2 → security_controls_mcp-0.3.3}/tests/test_security.py +0 -0
|
@@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.3.3] - 2026-01-31
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- Repository cleanup: Removed LLM-generated documentation bloat
|
|
12
|
+
- Simplified documentation from 18 to 6 essential files
|
|
13
|
+
- Cleaned up README (524→256 lines), removed excessive emojis and verbosity
|
|
14
|
+
- Simplified PAID_STANDARDS_GUIDE (342→251 lines)
|
|
15
|
+
- Updated .gitignore to exclude Claude artifacts (.claude/, .serena/, test_venv/)
|
|
16
|
+
|
|
17
|
+
### Removed
|
|
18
|
+
- 11 redundant documentation files (CLAUDE_CODE_SETUP.md, DEPLOYMENT_CHECKLIST.md, CI-CD-PIPELINE.md, QUICK_START.md, INSTALL.md, TESTING.md, SECURITY-TOOLS.md, LEGAL_COMPLIANCE.md, RELEASE_NOTES_v0.3.1.md)
|
|
19
|
+
- 7 development files from root (duplicate data files, test scripts)
|
|
20
|
+
|
|
21
|
+
### Technical
|
|
22
|
+
- No functional changes to MCP server or controls data
|
|
23
|
+
- All 103 tests passing
|
|
24
|
+
- Production readiness: 7/7 checks passed
|
|
25
|
+
|
|
8
26
|
## [0.3.2] - 2026-01-31
|
|
9
27
|
|
|
10
28
|
### Changed
|
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
# Paid Standards Guide
|
|
1
|
+
# Paid Standards Import Guide
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
---
|
|
3
|
+
Import your purchased security standards (ISO 27001, NIST SP 800-53, etc.) to get official text alongside SCF descriptions.
|
|
6
4
|
|
|
7
5
|
## Overview
|
|
8
6
|
|
|
9
|
-
The Security Controls MCP Server includes
|
|
7
|
+
The Security Controls MCP Server includes 1,451 free SCF controls that map across 28 frameworks. When you add purchased standards:
|
|
10
8
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
9
|
+
- Get official text from your licensed copies
|
|
10
|
+
- See full clauses with page numbers
|
|
11
|
+
- Enhanced queries showing both SCF descriptions and official requirements
|
|
12
|
+
- Framework mapping with real standard text on both sides
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
---
|
|
14
|
+
Your paid content stays private in `~/.security-controls-mcp/` (never committed to git).
|
|
19
15
|
|
|
20
16
|
## Quick Start
|
|
21
17
|
|
|
@@ -25,17 +21,17 @@ The Security Controls MCP Server includes **1,451 free SCF controls** that map a
|
|
|
25
21
|
pip install -e '.[import-tools]'
|
|
26
22
|
```
|
|
27
23
|
|
|
28
|
-
|
|
24
|
+
Installs PDF extraction dependencies (pdfplumber, Pillow, Click).
|
|
29
25
|
|
|
30
26
|
### 2. Purchase a Standard
|
|
31
27
|
|
|
32
|
-
Buy
|
|
28
|
+
Buy from official source:
|
|
33
29
|
|
|
34
30
|
- **ISO 27001**: [iso.org](https://www.iso.org/standard/27001)
|
|
35
31
|
- **NIST SP 800-53**: [csrc.nist.gov](https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final)
|
|
36
32
|
- **PCI DSS**: [pcisecuritystandards.org](https://www.pcisecuritystandards.org/)
|
|
37
33
|
|
|
38
|
-
Download the PDF
|
|
34
|
+
Download the PDF.
|
|
39
35
|
|
|
40
36
|
### 3. Import the Standard
|
|
41
37
|
|
|
@@ -48,7 +44,7 @@ scf-mcp import-standard \
|
|
|
48
44
|
--purchase-date "2026-01-29"
|
|
49
45
|
```
|
|
50
46
|
|
|
51
|
-
|
|
47
|
+
What happens:
|
|
52
48
|
- Extracts text from PDF
|
|
53
49
|
- Detects sections and clauses (e.g., "5.1.2 Cryptographic controls")
|
|
54
50
|
- Saves to `~/.security-controls-mcp/standards/iso_27001_2022/`
|
|
@@ -56,46 +52,31 @@ scf-mcp import-standard \
|
|
|
56
52
|
|
|
57
53
|
### 4. Restart MCP Server
|
|
58
54
|
|
|
59
|
-
|
|
55
|
+
Restart to load the new content.
|
|
60
56
|
|
|
61
57
|
### 5. Query Your Standards
|
|
62
58
|
|
|
63
|
-
Use the MCP tools in Claude:
|
|
64
|
-
|
|
65
59
|
```
|
|
66
60
|
list_available_standards()
|
|
67
|
-
→ Shows SCF + your ISO 27001
|
|
68
|
-
|
|
69
61
|
get_control("GOV-01")
|
|
70
|
-
→ Shows SCF description + ISO 27001 A.5.1 official text
|
|
71
|
-
|
|
72
62
|
query_standard("iso_27001_2022", "encryption key management")
|
|
73
|
-
→ Searches within your ISO 27001
|
|
74
|
-
|
|
75
63
|
get_clause("iso_27001_2022", "5.1.2")
|
|
76
|
-
→ Shows full text of clause 5.1.2 with page number
|
|
77
64
|
```
|
|
78
65
|
|
|
79
|
-
---
|
|
80
|
-
|
|
81
66
|
## Supported Standards
|
|
82
67
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
### ✅ Well-Structured PDFs
|
|
68
|
+
**Works best with:**
|
|
86
69
|
- **ISO 27001/27002** - Numbered clauses, Annex A controls
|
|
87
70
|
- **NIST SP 800-53** - Control families (AC-1, SC-7, etc.)
|
|
88
71
|
- **PCI DSS** - Numbered requirements
|
|
89
72
|
- **CIS Controls** - Numbered controls and safeguards
|
|
90
73
|
|
|
91
|
-
|
|
74
|
+
**May need adjustments:**
|
|
92
75
|
- Scanned PDFs (poor text extraction)
|
|
93
76
|
- Image-heavy documents
|
|
94
77
|
- Non-standard numbering schemes
|
|
95
78
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
---
|
|
79
|
+
The generic extractor uses heuristics for numbered sections. Extraction quality varies by PDF.
|
|
99
80
|
|
|
100
81
|
## Standard IDs
|
|
101
82
|
|
|
@@ -110,14 +91,10 @@ Use these IDs for the `--type` parameter:
|
|
|
110
91
|
| NIST CSF 2.0 | `nist_csf_2.0` | PR.DS-2 |
|
|
111
92
|
| SOC 2 (TSC) | `soc_2_tsc` | CC6.1 |
|
|
112
93
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
---
|
|
94
|
+
IDs should match SCF framework keys for automatic integration.
|
|
116
95
|
|
|
117
96
|
## Directory Structure
|
|
118
97
|
|
|
119
|
-
After importing, your files live here:
|
|
120
|
-
|
|
121
98
|
```
|
|
122
99
|
~/.security-controls-mcp/
|
|
123
100
|
├── config.json # Which standards are enabled
|
|
@@ -130,136 +107,97 @@ After importing, your files live here:
|
|
|
130
107
|
└── full_text.json
|
|
131
108
|
```
|
|
132
109
|
|
|
133
|
-
**Important:** This directory is gitignored by default. Never commit it
|
|
134
|
-
|
|
135
|
-
---
|
|
110
|
+
**Important:** This directory is gitignored by default. Never commit it.
|
|
136
111
|
|
|
137
112
|
## Advanced Usage
|
|
138
113
|
|
|
139
|
-
|
|
140
|
-
|
|
114
|
+
**List imported standards:**
|
|
141
115
|
```bash
|
|
142
116
|
scf-mcp list-standards
|
|
143
117
|
```
|
|
144
118
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
### Re-Import (Overwrite)
|
|
148
|
-
|
|
119
|
+
**Re-import (overwrite):**
|
|
149
120
|
```bash
|
|
150
121
|
scf-mcp import-standard --file new-version.pdf --type iso_27001_2022 --force
|
|
151
122
|
```
|
|
152
123
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
### Disable a Standard
|
|
156
|
-
|
|
124
|
+
**Disable a standard:**
|
|
157
125
|
Edit `~/.security-controls-mcp/config.json`:
|
|
158
|
-
|
|
159
126
|
```json
|
|
160
127
|
{
|
|
161
128
|
"standards": {
|
|
162
129
|
"iso_27001_2022": {
|
|
163
|
-
"enabled": false,
|
|
130
|
+
"enabled": false,
|
|
164
131
|
"path": "iso_27001_2022"
|
|
165
132
|
}
|
|
166
133
|
}
|
|
167
134
|
}
|
|
168
135
|
```
|
|
169
136
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
### Remove a Standard
|
|
173
|
-
|
|
137
|
+
**Remove a standard:**
|
|
174
138
|
```bash
|
|
175
139
|
rm -rf ~/.security-controls-mcp/standards/iso_27001_2022
|
|
176
140
|
```
|
|
177
|
-
|
|
178
141
|
Then edit `config.json` to remove the entry.
|
|
179
142
|
|
|
180
|
-
---
|
|
181
|
-
|
|
182
143
|
## License Compliance
|
|
183
144
|
|
|
184
|
-
### ⚠️ Important Restrictions
|
|
185
|
-
|
|
186
145
|
**Your purchased standards are licensed for PERSONAL USE ONLY.**
|
|
187
146
|
|
|
188
|
-
|
|
147
|
+
**You MAY:**
|
|
189
148
|
- Import standards you've purchased
|
|
190
149
|
- Query them via MCP for your own compliance research
|
|
191
150
|
- Reference them in your work (with attribution)
|
|
192
151
|
- Use get_control() to see official text alongside SCF
|
|
193
152
|
|
|
194
|
-
|
|
153
|
+
**You MAY NOT:**
|
|
195
154
|
- Share extracted JSON files with others
|
|
196
155
|
- Redistribute PDFs or extracted content
|
|
197
156
|
- Use AI to generate policies/procedures from SCF (SCF license restriction)
|
|
198
157
|
- Create derivative frameworks for distribution
|
|
199
158
|
|
|
200
|
-
|
|
159
|
+
**Automatic safeguards:**
|
|
160
|
+
- Git safety checks warn if standards directory isn't gitignored
|
|
161
|
+
- Attribution on every response shows source and license info
|
|
162
|
+
- Startup warnings list loaded paid standards and restrictions
|
|
163
|
+
- Local-only storage - content never leaves your machine
|
|
201
164
|
|
|
202
|
-
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
-
|
|
206
|
-
-
|
|
165
|
+
**Your responsibility:**
|
|
166
|
+
- Purchase standards from authorized sources
|
|
167
|
+
- Comply with your purchase agreement
|
|
168
|
+
- Don't redistribute content
|
|
169
|
+
- Consult legal counsel for compliance questions
|
|
207
170
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
**You are responsible for:**
|
|
211
|
-
- Purchasing standards from authorized sources
|
|
212
|
-
- Complying with your purchase agreement
|
|
213
|
-
- Not redistributing content
|
|
214
|
-
- Consulting legal counsel for compliance questions
|
|
215
|
-
|
|
216
|
-
**This tool facilitates querying - it doesn't grant licenses.**
|
|
217
|
-
|
|
218
|
-
---
|
|
171
|
+
This tool facilitates querying - it doesn't grant licenses.
|
|
219
172
|
|
|
220
173
|
## Troubleshooting
|
|
221
174
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
1. Check if PDF has selectable text (not just images)
|
|
228
|
-
2. Use OCR software to create searchable version
|
|
229
|
-
3. Purchase a different format (Word, HTML) if available
|
|
230
|
-
|
|
231
|
-
### "Warning: standards directory not gitignored"
|
|
232
|
-
|
|
233
|
-
**Cause:** You're in a git repo and the standards directory could be committed.
|
|
175
|
+
**"No text extracted from PDF"**
|
|
176
|
+
- PDF is scanned or image-based
|
|
177
|
+
- Check if PDF has selectable text
|
|
178
|
+
- Use OCR software to create searchable version
|
|
179
|
+
- Purchase different format (Word, HTML) if available
|
|
234
180
|
|
|
235
|
-
**
|
|
181
|
+
**"Warning: standards directory not gitignored"**
|
|
236
182
|
```bash
|
|
237
183
|
echo ".security-controls-mcp/" >> .gitignore
|
|
238
184
|
git add .gitignore
|
|
239
185
|
git commit -m "Gitignore paid standards directory"
|
|
240
186
|
```
|
|
241
187
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
**Cause:** PDF doesn't match expected numbering patterns.
|
|
245
|
-
|
|
246
|
-
**Solution:**
|
|
188
|
+
**"Section detection found 0 sections"**
|
|
189
|
+
- PDF doesn't match expected numbering patterns
|
|
247
190
|
- Check if PDF uses standard numbering (1, 1.2, 1.2.3)
|
|
248
|
-
-
|
|
249
|
-
- Contact us
|
|
250
|
-
|
|
251
|
-
### "Standard 'xyz' not found" after import
|
|
252
|
-
|
|
253
|
-
**Cause:** MCP server hasn't reloaded.
|
|
191
|
+
- Extractor looks for patterns like "5.1.2 Title"
|
|
192
|
+
- Contact us for help with specific standard formats
|
|
254
193
|
|
|
255
|
-
**
|
|
256
|
-
|
|
257
|
-
|
|
194
|
+
**"Standard 'xyz' not found" after import**
|
|
195
|
+
- MCP server hasn't reloaded
|
|
196
|
+
- Restart your MCP server to load new standards
|
|
258
197
|
|
|
259
198
|
## Examples
|
|
260
199
|
|
|
261
|
-
|
|
262
|
-
|
|
200
|
+
**Complete workflow:**
|
|
263
201
|
```bash
|
|
264
202
|
# 1. Buy ISO 27001 from ISO.org (download PDF)
|
|
265
203
|
|
|
@@ -272,8 +210,7 @@ scf-mcp import-standard \
|
|
|
272
210
|
--type iso_27001_2022 \
|
|
273
211
|
--title "ISO/IEC 27001:2022" \
|
|
274
212
|
--purchased-from "ISO.org" \
|
|
275
|
-
--purchase-date "2026-01-29"
|
|
276
|
-
--version "2022"
|
|
213
|
+
--purchase-date "2026-01-29"
|
|
277
214
|
|
|
278
215
|
# 4. Restart MCP server
|
|
279
216
|
|
|
@@ -283,38 +220,13 @@ scf-mcp import-standard \
|
|
|
283
220
|
# "Map ISO 27001 to DORA with official text"
|
|
284
221
|
```
|
|
285
222
|
|
|
286
|
-
### Query Examples
|
|
287
|
-
|
|
288
|
-
**Get SCF control with official text:**
|
|
289
|
-
```
|
|
290
|
-
User: Get control GOV-01
|
|
291
|
-
Claude: [Shows SCF description]
|
|
292
|
-
[Shows ISO 27001 A.5.1 official text with page number]
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
**Search within your standard:**
|
|
296
|
-
```
|
|
297
|
-
User: Search for "encryption key management" in ISO 27001
|
|
298
|
-
Claude: [Shows matching clauses with page numbers]
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
**Framework mapping with official text:**
|
|
302
|
-
```
|
|
303
|
-
User: Map ISO 27001 to DORA
|
|
304
|
-
Claude: [Shows SCF mapping]
|
|
305
|
-
[Shows ISO 27001 A.5.15 official text]
|
|
306
|
-
[Shows DORA Article 9 official text if you have it]
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
---
|
|
310
|
-
|
|
311
223
|
## FAQ
|
|
312
224
|
|
|
313
225
|
**Q: How many standards can I import?**
|
|
314
226
|
A: Unlimited. Each standard you purchase can be imported.
|
|
315
227
|
|
|
316
228
|
**Q: Do I need to keep the original PDF?**
|
|
317
|
-
A: No, after import you can delete it.
|
|
229
|
+
A: No, after import you can delete it.
|
|
318
230
|
|
|
319
231
|
**Q: Can I share my imported standards with my team?**
|
|
320
232
|
A: No. Each person must purchase and import their own licensed copy.
|
|
@@ -323,18 +235,15 @@ A: No. Each person must purchase and import their own licensed copy.
|
|
|
323
235
|
A: Maybe. If it's in PDF with numbered sections, the generic extractor might work. Contact us for custom extractors.
|
|
324
236
|
|
|
325
237
|
**Q: What if extraction quality is poor?**
|
|
326
|
-
A: You can manually edit `~/.security-controls-mcp/standards/xyz/full_text.json
|
|
238
|
+
A: You can manually edit `~/.security-controls-mcp/standards/xyz/full_text.json`.
|
|
327
239
|
|
|
328
240
|
**Q: Does this replace the official standard document?**
|
|
329
|
-
A: No. This tool is for research
|
|
330
|
-
|
|
331
|
-
---
|
|
241
|
+
A: No. This tool is for research. Always refer to the official published standard for authoritative guidance.
|
|
332
242
|
|
|
333
243
|
## Getting Help
|
|
334
244
|
|
|
335
245
|
- **Issues:** [GitHub Issues](https://github.com/Ansvar-Systems/security-controls-mcp/issues)
|
|
336
246
|
- **Email:** hello@ansvar.eu
|
|
337
|
-
- **Documentation:** [README.md](README.md)
|
|
338
247
|
|
|
339
248
|
---
|
|
340
249
|
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: security-controls-mcp
|
|
3
|
+
Version: 0.3.3
|
|
4
|
+
Summary: MCP server for querying security framework controls (SCF) - map between ISO 27001, NIST CSF, DORA, PCI DSS, and more
|
|
5
|
+
Author-email: Ansvar Systems <hello@ansvar.eu>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/Ansvar-Systems/security-controls-mcp
|
|
8
|
+
Project-URL: Repository, https://github.com/Ansvar-Systems/security-controls-mcp
|
|
9
|
+
Project-URL: Issues, https://github.com/Ansvar-Systems/security-controls-mcp/issues
|
|
10
|
+
Keywords: mcp,security,compliance,iso27001,nist,dora,pci-dss
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
License-File: LICENSE-DATA.md
|
|
21
|
+
Requires-Dist: mcp>=0.9.0
|
|
22
|
+
Provides-Extra: dev
|
|
23
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
24
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
25
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
26
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
27
|
+
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
|
|
28
|
+
Provides-Extra: import-tools
|
|
29
|
+
Requires-Dist: pdfplumber>=0.11.0; extra == "import-tools"
|
|
30
|
+
Requires-Dist: Pillow>=10.0.0; extra == "import-tools"
|
|
31
|
+
Requires-Dist: click>=8.0.0; extra == "import-tools"
|
|
32
|
+
Dynamic: license-file
|
|
33
|
+
|
|
34
|
+
# Security Controls MCP Server
|
|
35
|
+
|
|
36
|
+
[](https://modelcontextprotocol.io)
|
|
37
|
+
[](https://www.python.org)
|
|
38
|
+
[](LICENSE)
|
|
39
|
+
[](https://securecontrolsframework.com/)
|
|
40
|
+
|
|
41
|
+
## Overview
|
|
42
|
+
|
|
43
|
+
Universal translator for security frameworks. Makes 1,451 security controls across 28 frameworks searchable and AI-accessible through Claude, Cursor, or any MCP-compatible client.
|
|
44
|
+
|
|
45
|
+
Built on the [Secure Controls Framework (SCF)](https://securecontrolsframework.com/) by ComplianceForge.
|
|
46
|
+
|
|
47
|
+
**Key capabilities:**
|
|
48
|
+
- 1,451 security controls across governance, risk, compliance, and technical domains
|
|
49
|
+
- 28 major frameworks including ISO 27001, NIST CSF, DORA, PCI DSS, CMMC, and more
|
|
50
|
+
- Bidirectional mapping between frameworks via SCF rosetta stone
|
|
51
|
+
- Optional integration with purchased standards (ISO, NIST 800-53) for official text
|
|
52
|
+
- Full-text search across all control descriptions
|
|
53
|
+
- Natural language queries instead of framework-specific IDs
|
|
54
|
+
|
|
55
|
+
## Why This Exists
|
|
56
|
+
|
|
57
|
+
Different frameworks describe the same security measures in different ways. ISO 27001 has one control ID, NIST CSF has another, PCI DSS has yet another — but they're all talking about the same thing.
|
|
58
|
+
|
|
59
|
+
This MCP server provides instant bidirectional mapping between any two frameworks via the SCF rosetta stone. Ask Claude "What DORA controls does ISO 27001 A.5.15 map to?" and get an immediate answer backed by ComplianceForge's framework database.
|
|
60
|
+
|
|
61
|
+
## Installation
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Using pipx (recommended)
|
|
65
|
+
pipx install security-controls-mcp
|
|
66
|
+
|
|
67
|
+
# Using pip
|
|
68
|
+
pip install security-controls-mcp
|
|
69
|
+
|
|
70
|
+
# From source
|
|
71
|
+
git clone https://github.com/Ansvar-Systems/security-controls-mcp.git
|
|
72
|
+
cd security-controls-mcp
|
|
73
|
+
pip install -e .
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Requirements:** Python 3.10+
|
|
77
|
+
|
|
78
|
+
### Claude Desktop Configuration
|
|
79
|
+
|
|
80
|
+
Add to `claude_desktop_config.json`:
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"mcpServers": {
|
|
85
|
+
"security-controls": {
|
|
86
|
+
"command": "scf-mcp"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Config location:**
|
|
93
|
+
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
94
|
+
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
95
|
+
|
|
96
|
+
### Cursor / VS Code
|
|
97
|
+
|
|
98
|
+
Same configuration under `"mcp.servers"` in your settings.
|
|
99
|
+
|
|
100
|
+
## Example Queries
|
|
101
|
+
|
|
102
|
+
- "What does GOV-01 require?"
|
|
103
|
+
- "Search for controls about encryption key management"
|
|
104
|
+
- "What ISO 27001 controls map to DORA?"
|
|
105
|
+
- "List all controls needed for PCI DSS compliance"
|
|
106
|
+
- "Which DORA requirements does ISO 27001 A.5.15 satisfy?"
|
|
107
|
+
- "Show me all NIST CSF 2.0 controls related to incident response"
|
|
108
|
+
|
|
109
|
+
## Available Frameworks (28)
|
|
110
|
+
|
|
111
|
+
- **US Government:** NIST 800-53 (777), NIST CSF 2.0 (253), FedRAMP (343), CMMC 2.0 (198/52)
|
|
112
|
+
- **International Standards:** ISO 27001 (51), ISO 27002 (316), CIS CSC v8.1 (234)
|
|
113
|
+
- **US Industry:** PCI DSS v4.0.1 (364), SOC 2 (412), HIPAA (136)
|
|
114
|
+
- **APAC:** Australia Essential Eight (37), Australia ISM (336), Singapore MAS TRM (214)
|
|
115
|
+
- **EU Regulations:** GDPR (42), DORA (103), NIS2 (68)
|
|
116
|
+
- **UK Standards:** NCSC CAF 4.0 (67), Cyber Essentials (26)
|
|
117
|
+
- **European National:** Netherlands (27), Norway (23), Sweden (25), Germany (18/91/239)
|
|
118
|
+
- **Financial:** SWIFT CSCF 2023 (127)
|
|
119
|
+
- **Cloud:** CSA CCM v4 (334)
|
|
120
|
+
|
|
121
|
+
## Tools
|
|
122
|
+
|
|
123
|
+
### Core Tools
|
|
124
|
+
|
|
125
|
+
**`list_frameworks()`** - List all 28 frameworks with control counts
|
|
126
|
+
|
|
127
|
+
**`get_control(control_id)`** - Get full details for a specific SCF control
|
|
128
|
+
- Returns description, domain, weight, PPTDF category, and mappings to all 28 frameworks
|
|
129
|
+
|
|
130
|
+
**`search_controls(query, frameworks=[], limit=10)`** - Search controls by keyword
|
|
131
|
+
- Optional framework filtering
|
|
132
|
+
- Full-text search across names and descriptions
|
|
133
|
+
|
|
134
|
+
**`get_framework_controls(framework)`** - Get all controls for a specific framework
|
|
135
|
+
- Returns controls organized by domain
|
|
136
|
+
|
|
137
|
+
**`map_frameworks(source_framework, target_framework, source_control=None)`** - Map between frameworks
|
|
138
|
+
- Bidirectional mapping via SCF
|
|
139
|
+
- Optional filtering to specific source control
|
|
140
|
+
|
|
141
|
+
### Purchased Standards Tools
|
|
142
|
+
|
|
143
|
+
**`list_available_standards()`** - List all available standards (SCF + imported)
|
|
144
|
+
|
|
145
|
+
**`query_standard(standard, query, limit=10)`** - Search within purchased standard
|
|
146
|
+
- Requires import first
|
|
147
|
+
- Returns clauses with page numbers
|
|
148
|
+
|
|
149
|
+
**`get_clause(standard, clause_id)`** - Get full text of specific clause
|
|
150
|
+
- Requires import first
|
|
151
|
+
|
|
152
|
+
See [PAID_STANDARDS_GUIDE.md](PAID_STANDARDS_GUIDE.md) for import instructions.
|
|
153
|
+
|
|
154
|
+
## Add Purchased Standards (Optional)
|
|
155
|
+
|
|
156
|
+
Import your purchased ISO 27001, NIST SP 800-53, or other standards to get official text alongside SCF descriptions:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# Install import tools
|
|
160
|
+
pip install -e '.[import-tools]'
|
|
161
|
+
|
|
162
|
+
# Import purchased PDF
|
|
163
|
+
scf-mcp import-standard \
|
|
164
|
+
--file ~/Downloads/ISO-27001-2022.pdf \
|
|
165
|
+
--type iso_27001_2022 \
|
|
166
|
+
--title "ISO/IEC 27001:2022"
|
|
167
|
+
|
|
168
|
+
# Restart MCP, then query
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Your paid content stays private in `~/.security-controls-mcp/` (never committed to git).
|
|
172
|
+
|
|
173
|
+
Full guide: [PAID_STANDARDS_GUIDE.md](PAID_STANDARDS_GUIDE.md)
|
|
174
|
+
|
|
175
|
+
## Technical Architecture
|
|
176
|
+
|
|
177
|
+
**Data Pipeline:**
|
|
178
|
+
SCF JSON → In-memory index → MCP tools → AI response
|
|
179
|
+
|
|
180
|
+
**Key principles:**
|
|
181
|
+
- All control text returns verbatim from SCF source with zero LLM paraphrasing
|
|
182
|
+
- Framework mappings use ComplianceForge's authoritative crosswalks
|
|
183
|
+
- Optional purchased standards stored locally (never committed)
|
|
184
|
+
- Search results optimized for AI context windows
|
|
185
|
+
|
|
186
|
+
**Data integrity:**
|
|
187
|
+
- SCF version locked to 2025.4 for consistency
|
|
188
|
+
- All mappings sourced from official SCF framework crosswalks
|
|
189
|
+
- User-imported standards require valid licenses
|
|
190
|
+
|
|
191
|
+
## Data Source
|
|
192
|
+
|
|
193
|
+
Based on **SCF 2025.4** (released December 29, 2025)
|
|
194
|
+
|
|
195
|
+
- 1,451 controls across all domains
|
|
196
|
+
- 580+ framework mappings (28 frameworks)
|
|
197
|
+
- Licensed under Creative Commons (data)
|
|
198
|
+
- Source: [ComplianceForge SCF](https://securecontrolsframework.com/)
|
|
199
|
+
|
|
200
|
+
**Included data files:**
|
|
201
|
+
- `scf-controls.json` - All 1,451 controls with framework mappings
|
|
202
|
+
- `framework-to-scf.json` - Reverse index for framework-to-SCF lookups
|
|
203
|
+
|
|
204
|
+
## Related Projects
|
|
205
|
+
|
|
206
|
+
Part of **Ansvar's Compliance Suite** - MCP servers that work together for end-to-end compliance:
|
|
207
|
+
|
|
208
|
+
**EU Regulations MCP** - Query 47 EU regulations (GDPR, AI Act, DORA, NIS2, etc.)
|
|
209
|
+
- `npx @ansvar/eu-regulations-mcp`
|
|
210
|
+
- [github.com/Ansvar-Systems/EU_compliance_MCP](https://github.com/Ansvar-Systems/EU_compliance_MCP)
|
|
211
|
+
|
|
212
|
+
**US Regulations MCP** - Query US federal and state compliance laws (HIPAA, CCPA, SOX, etc.)
|
|
213
|
+
- `npm install @ansvar/us-regulations-mcp`
|
|
214
|
+
- [github.com/Ansvar-Systems/US_Compliance_MCP](https://github.com/Ansvar-Systems/US_Compliance_MCP)
|
|
215
|
+
|
|
216
|
+
**OT Security MCP** - Query IEC 62443, NIST 800-82/53, MITRE ATT&CK for ICS
|
|
217
|
+
- `npm install @ansvar/ot-security-mcp`
|
|
218
|
+
- [github.com/Ansvar-Systems/ot-security-mcp](https://github.com/Ansvar-Systems/ot-security-mcp)
|
|
219
|
+
|
|
220
|
+
### Workflow Example
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
1. "What DORA requirements apply to ICT risk management?"
|
|
224
|
+
→ EU Regulations MCP returns Article 6 full text
|
|
225
|
+
|
|
226
|
+
2. "What security controls satisfy DORA Article 6?"
|
|
227
|
+
→ Security Controls MCP maps to ISO 27001, NIST CSF controls
|
|
228
|
+
|
|
229
|
+
3. "Show me ISO 27001 A.8.1 implementation details"
|
|
230
|
+
→ Security Controls MCP returns control requirements
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Development
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# Clone and install
|
|
237
|
+
git clone https://github.com/Ansvar-Systems/security-controls-mcp.git
|
|
238
|
+
cd security-controls-mcp
|
|
239
|
+
pip install -e '.[dev]'
|
|
240
|
+
|
|
241
|
+
# Install pre-commit hooks
|
|
242
|
+
pre-commit install
|
|
243
|
+
|
|
244
|
+
# Run tests
|
|
245
|
+
pytest tests/ -v
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Pre-commit hooks run automatically before each commit:
|
|
249
|
+
- Code formatting (black, ruff)
|
|
250
|
+
- Linting (ruff check, YAML/JSON validation)
|
|
251
|
+
- Tests (pytest, smoke tests, server startup)
|
|
252
|
+
|
|
253
|
+
Bypass hooks (emergencies only): `git commit --no-verify`
|
|
254
|
+
|
|
255
|
+
## Important Disclaimers
|
|
256
|
+
|
|
257
|
+
**Not Legal or Compliance Advice:** Control text is sourced directly from official SCF data, but this tool should not be used as the sole basis for compliance decisions. Always verify against official framework sources and consult qualified compliance professionals.
|
|
258
|
+
|
|
259
|
+
**AI Content Restrictions:** The SCF license explicitly prohibits using AI systems to generate derivative content such as policies, standards, procedures, metrics, risks, or threats based on SCF data. You may query and analyze controls, but not generate derivative compliance artifacts.
|
|
260
|
+
|
|
261
|
+
**Purchased Standards:** Optional standards imports require valid licenses. You must own legitimate copies and comply with copyright restrictions. This tool does not include or distribute any copyrighted standards text.
|
|
262
|
+
|
|
263
|
+
**Framework Coverage:** While SCF provides comprehensive mappings, not all controls map 1:1 across frameworks. Always review official framework documentation for authoritative requirements.
|
|
264
|
+
|
|
265
|
+
## License
|
|
266
|
+
|
|
267
|
+
**Code:** Apache License 2.0 (see [LICENSE](LICENSE))
|
|
268
|
+
|
|
269
|
+
**Data:** Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) by ComplianceForge
|
|
270
|
+
- Source: [Secure Controls Framework (SCF)](https://securecontrolsframework.com/)
|
|
271
|
+
- Version: SCF 2025.4 (December 29, 2025)
|
|
272
|
+
|
|
273
|
+
**What you MAY do:**
|
|
274
|
+
- Query and analyze SCF controls
|
|
275
|
+
- Map between frameworks
|
|
276
|
+
- Reference controls in your own work (with attribution)
|
|
277
|
+
- Use this MCP server to understand control requirements
|
|
278
|
+
|
|
279
|
+
**What you MAY NOT do:**
|
|
280
|
+
- Use AI to generate policies or procedures based on SCF controls
|
|
281
|
+
- Create derivative frameworks or modified versions for distribution
|
|
282
|
+
- Remove or modify control definitions
|
|
283
|
+
|
|
284
|
+
For complete terms: [SCF Terms & Conditions](https://securecontrolsframework.com/terms-conditions/)
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
**Built by:** [Ansvar Systems](https://ansvar.eu) (Stockholm, Sweden)
|