framework-mcp
Version:
Dual-architecture server (MCP + HTTP API) for determining vendor tool capability roles against CIS Controls Framework. Supports Microsoft Copilot custom connectors and DigitalOcean App Services deployment.
74 lines (61 loc) ⢠2.24 kB
JavaScript
/**
* Data Structure Analysis Script
* Compares original CIS_SAFEGUARDS with current SafeguardManager interface
*/
const fs = require('fs');
console.log('š CIS Safeguards Data Structure Analysis\n');
// Read original data
const originalData = fs.readFileSync('/tmp/complete_cis_safeguards.ts', 'utf8');
console.log('ā
Original data loaded:', originalData.split('\n').length, 'lines');
// Extract safeguard structure from first entry (1.1)
const match = originalData.match(/"1\.1":\s*{([^}]+(?:{[^}]*}[^}]*)*)/);
if (match) {
console.log('ā
Successfully parsed safeguard 1.1 structure\n');
// Extract field names from original data
const fieldPattern = /(\w+):/g;
const originalFields = new Set();
let fieldMatch;
while ((fieldMatch = fieldPattern.exec(match[1])) !== null) {
originalFields.add(fieldMatch[1]);
}
console.log('š Original fields found:');
Array.from(originalFields).sort().forEach(field => {
console.log(` - ${field}`);
});
// Required fields for SafeguardElement interface
const requiredFields = [
'id',
'title',
'description',
'implementationGroup',
'assetType',
'securityFunction',
'governanceElements',
'coreRequirements',
'subTaxonomicalElements',
'implementationSuggestions',
'relatedSafeguards',
'keywords'
];
console.log('\nš Required SafeguardElement fields:');
requiredFields.forEach(field => {
const present = originalFields.has(field);
console.log(` ${present ? 'ā
' : 'ā'} ${field}`);
});
// Check for extra fields
const extraFields = Array.from(originalFields).filter(f => !requiredFields.includes(f));
if (extraFields.length > 0) {
console.log('\nā ļø Extra fields in original data:');
extraFields.forEach(field => console.log(` - ${field}`));
}
console.log('\nš Compatibility Analysis:');
const missingFields = requiredFields.filter(f => !originalFields.has(f));
if (missingFields.length === 0) {
console.log('ā
Perfect compatibility - all required fields present');
} else {
console.log('ā Missing fields:', missingFields);
}
} else {
console.log('ā Failed to parse safeguard structure');
}