data-compliance-mcp 1.0.0 → 1.0.1
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.
- package/package.json +15 -5
- package/server.json +7 -25
- package/src/server.js +7 -5
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "data-compliance-mcp",
|
|
3
|
-
"
|
|
3
|
+
"mcpName": "io.github.OjasKord/data-compliance-mcp",
|
|
4
|
+
"version": "1.0.1",
|
|
4
5
|
"description": "Classify data safety before your agent stores or shares it. GDPR, HIPAA, PCI-DSS, CCPA. AI-powered.",
|
|
5
6
|
"main": "src/server.js",
|
|
6
7
|
"scripts": {
|
|
@@ -21,15 +22,24 @@
|
|
|
21
22
|
"privacy",
|
|
22
23
|
"data-privacy",
|
|
23
24
|
"sensitive-data",
|
|
24
|
-
"validator"
|
|
25
|
+
"validator",
|
|
26
|
+
"data-governance",
|
|
27
|
+
"ai-safety",
|
|
28
|
+
"regulation",
|
|
29
|
+
"eu-ai-act"
|
|
25
30
|
],
|
|
26
|
-
"author": "
|
|
31
|
+
"author": "Kord Agencies Pte Ltd <ojas@kordagencies.com>",
|
|
27
32
|
"license": "UNLICENSED",
|
|
28
33
|
"homepage": "https://kordagencies.com",
|
|
29
34
|
"repository": {
|
|
30
35
|
"type": "git",
|
|
31
|
-
"url": "https://github.com/OjasKord/data-compliance-mcp"
|
|
36
|
+
"url": "git+https://github.com/OjasKord/data-compliance-mcp.git"
|
|
37
|
+
},
|
|
38
|
+
"bugs": {
|
|
39
|
+
"url": "https://github.com/OjasKord/data-compliance-mcp/issues"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=18.0.0"
|
|
32
43
|
},
|
|
33
|
-
"mcpName": "io.github.OjasKord/data-compliance-mcp",
|
|
34
44
|
"dependencies": {}
|
|
35
45
|
}
|
package/server.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.OjasKord/data-compliance-mcp",
|
|
4
|
-
"version": "1.0.0",
|
|
5
|
-
"description": "Classify data safety before storing or sharing. GDPR, HIPAA, PCI-DSS, CCPA. AI-powered.",
|
|
6
4
|
"title": "Data Compliance Classifier MCP",
|
|
5
|
+
"description": "Classify data safety before storing or sharing. GDPR, HIPAA, PCI-DSS, CCPA. AI-powered.",
|
|
6
|
+
"version": "1.0.1",
|
|
7
7
|
"websiteUrl": "https://kordagencies.com",
|
|
8
8
|
"repository": {
|
|
9
9
|
"url": "https://github.com/OjasKord/data-compliance-mcp",
|
|
@@ -12,32 +12,14 @@
|
|
|
12
12
|
"packages": [
|
|
13
13
|
{
|
|
14
14
|
"registryType": "npm",
|
|
15
|
-
"registryBaseUrl": "https://registry.npmjs.org",
|
|
16
15
|
"identifier": "data-compliance-mcp",
|
|
17
|
-
"version": "1.0.
|
|
18
|
-
"transport": {
|
|
19
|
-
"type": "stdio"
|
|
20
|
-
},
|
|
16
|
+
"version": "1.0.1",
|
|
17
|
+
"transport": { "type": "stdio" },
|
|
21
18
|
"environmentVariables": [
|
|
22
|
-
{
|
|
23
|
-
|
|
24
|
-
"description": "Anthropic API key for AI classification",
|
|
25
|
-
"isRequired": true,
|
|
26
|
-
"isSecret": true
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"name": "ABUSEIPDB_API_KEY",
|
|
30
|
-
"description": "AbuseIPDB API key for threat intelligence (optional - disables IP threat checks if not set)",
|
|
31
|
-
"isRequired": false,
|
|
32
|
-
"isSecret": true
|
|
33
|
-
}
|
|
19
|
+
{ "name": "ANTHROPIC_API_KEY", "description": "Anthropic API key for AI classification", "isRequired": true, "isSecret": true },
|
|
20
|
+
{ "name": "ABUSEIPDB_API_KEY", "description": "AbuseIPDB API key for threat intelligence (optional)", "isRequired": false, "isSecret": true }
|
|
34
21
|
]
|
|
35
22
|
}
|
|
36
23
|
],
|
|
37
|
-
"remotes": [
|
|
38
|
-
{
|
|
39
|
-
"type": "streamable-http",
|
|
40
|
-
"url": "https://data-compliance-mcp-production.up.railway.app"
|
|
41
|
-
}
|
|
42
|
-
]
|
|
24
|
+
"remotes": [{ "type": "streamable-http", "url": "https://data-compliance-mcp-production.up.railway.app" }]
|
|
43
25
|
}
|
package/src/server.js
CHANGED
|
@@ -17,6 +17,8 @@ const FREE_TIER_LIMIT = 20;
|
|
|
17
17
|
const FREE_TIER_WARNING = 16;
|
|
18
18
|
const apiKeys = new Map();
|
|
19
19
|
const PLAN_LIMITS = { pro: 5000, enterprise: Infinity };
|
|
20
|
+
const STRIPE_PRO_URL = 'https://buy.stripe.com/8x24gy9Ah3iZ8W04xiebu0c';
|
|
21
|
+
const STRIPE_ENTERPRISE_URL = 'https://buy.stripe.com/cNi7sKeUB8Dj7RW7Juebu0d';
|
|
20
22
|
|
|
21
23
|
const LEGAL_DISCLAIMER = 'Classification is AI-powered and for informational purposes only. Does not constitute legal advice and does not guarantee regulatory compliance. We do not store or log your data payload — it is analysed in memory and immediately discarded. Jurisdiction detection uses IPinfo (ipinfo.io). Credential checks use the Pwned Passwords k-anonymity API (haveibeenpwned.com) — your credentials are never transmitted in full. Threat checks use AbuseIPDB (abuseipdb.com). Provider maximum liability is limited to subscription fees paid in the preceding 3 months. Full terms: kordagencies.com/terms.html';
|
|
22
24
|
|
|
@@ -403,7 +405,7 @@ async function executeTool(name, args, tier) {
|
|
|
403
405
|
audit_report: 'Pro plan generates structured audit-ready compliance reports',
|
|
404
406
|
threat_intelligence: 'Pro plan checks IP addresses in payload against AbuseIPDB threat database',
|
|
405
407
|
full_reasoning: 'Pro plan includes full AI reasoning per verdict for compliance documentation',
|
|
406
|
-
upgrade_url:
|
|
408
|
+
upgrade_url: STRIPE_PRO_URL
|
|
407
409
|
};
|
|
408
410
|
} else {
|
|
409
411
|
result.reasoning = classification.reasoning;
|
|
@@ -439,7 +441,7 @@ async function executeTool(name, args, tier) {
|
|
|
439
441
|
'Audit-ready compliance report',
|
|
440
442
|
'Redaction targets per flagged payload'
|
|
441
443
|
],
|
|
442
|
-
upgrade_url:
|
|
444
|
+
upgrade_url: STRIPE_PRO_URL,
|
|
443
445
|
checked_at: checkedAt,
|
|
444
446
|
_disclaimer: LEGAL_DISCLAIMER
|
|
445
447
|
};
|
|
@@ -448,7 +450,7 @@ async function executeTool(name, args, tier) {
|
|
|
448
450
|
mode: mode,
|
|
449
451
|
status: 'PREVIEW — paid plan required',
|
|
450
452
|
message: 'Pro plan required for ' + mode + ' reports. Upgrade at kordagencies.com.',
|
|
451
|
-
upgrade_url:
|
|
453
|
+
upgrade_url: STRIPE_PRO_URL,
|
|
452
454
|
checked_at: checkedAt,
|
|
453
455
|
_disclaimer: LEGAL_DISCLAIMER
|
|
454
456
|
};
|
|
@@ -585,7 +587,7 @@ function checkAccess(req, toolName) {
|
|
|
585
587
|
return {
|
|
586
588
|
allowed: false,
|
|
587
589
|
reason: 'Free tier limit of ' + FREE_TIER_LIMIT + ' classifications/month reached. You have seen it work — upgrade to Pro ($49/month) at kordagencies.com for 5,000 classifications/month.',
|
|
588
|
-
upgrade_url:
|
|
590
|
+
upgrade_url: STRIPE_PRO_URL,
|
|
589
591
|
tier: 'free_limit_reached'
|
|
590
592
|
};
|
|
591
593
|
}
|
|
@@ -740,7 +742,7 @@ const server = http.createServer(async (req, res) => {
|
|
|
740
742
|
|
|
741
743
|
if (!access.allowed) {
|
|
742
744
|
res.writeHead(200, { ...cors, 'Content-Type': 'application/json' });
|
|
743
|
-
res.end(JSON.stringify({ jsonrpc: '2.0', id: request.id, result: { content: [{ type: 'text', text: JSON.stringify({ error: access.reason, upgrade_url:
|
|
745
|
+
res.end(JSON.stringify({ jsonrpc: '2.0', id: request.id, result: { content: [{ type: 'text', text: JSON.stringify({ error: access.reason, upgrade_url: STRIPE_PRO_URL, _disclaimer: LEGAL_DISCLAIMER }) }] } }));
|
|
744
746
|
return;
|
|
745
747
|
}
|
|
746
748
|
|