@privacyscrubber/mcp-server 1.7.0 ā 1.7.2
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/README.md +6 -5
- package/index.js +430 -145
- package/install.js +63 -0
- package/manifest.json +1 -1
- package/package.json +5 -3
- package/pii-masking-run.js +2 -2
- package/scrubber-core.cjs +1 -1
- package/server.json +3 -3
- package/.well-known/mcp/server-card.json +0 -78
- package/LICENSE +0 -21
package/install.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import os from 'os';
|
|
6
|
+
|
|
7
|
+
console.log('š”ļø PrivacyScrubber MCP Server 1-Click Installer');
|
|
8
|
+
console.log('================================================\n');
|
|
9
|
+
|
|
10
|
+
const mcpConfig = {
|
|
11
|
+
command: "npx",
|
|
12
|
+
args: ["-y", "@privacyscrubber/mcp-server"]
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
let claudeConfigPath = '';
|
|
16
|
+
if (process.platform === 'darwin') {
|
|
17
|
+
claudeConfigPath = path.join(os.homedir(), 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
|
|
18
|
+
} else if (process.platform === 'win32') {
|
|
19
|
+
claudeConfigPath = path.join(process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'), 'Claude', 'claude_desktop_config.json');
|
|
20
|
+
} else {
|
|
21
|
+
// Linux fallback, though Claude Desktop is not officially supported on Linux yet, we check common paths
|
|
22
|
+
claudeConfigPath = path.join(os.homedir(), '.config', 'Claude', 'claude_desktop_config.json');
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// 1. Configure Claude Desktop
|
|
26
|
+
let installedClaude = false;
|
|
27
|
+
try {
|
|
28
|
+
let configDir = path.dirname(claudeConfigPath);
|
|
29
|
+
if (!fs.existsSync(configDir)) {
|
|
30
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
let config = {};
|
|
34
|
+
if (fs.existsSync(claudeConfigPath)) {
|
|
35
|
+
const rawData = fs.readFileSync(claudeConfigPath, 'utf8');
|
|
36
|
+
if (rawData.trim() !== '') {
|
|
37
|
+
config = JSON.parse(rawData);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (!config.mcpServers) {
|
|
42
|
+
config.mcpServers = {};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
config.mcpServers['privacyscrubber'] = mcpConfig;
|
|
46
|
+
|
|
47
|
+
fs.writeFileSync(claudeConfigPath, JSON.stringify(config, null, 2), 'utf8');
|
|
48
|
+
console.log(`ā
[Claude Desktop] Successfully injected PrivacyScrubber MCP into:`);
|
|
49
|
+
console.log(` ${claudeConfigPath}`);
|
|
50
|
+
installedClaude = true;
|
|
51
|
+
} catch (e) {
|
|
52
|
+
console.log(`ā ļø [Claude Desktop] Could not configure automatically: ${e.message}`);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
console.log('\n---');
|
|
56
|
+
console.log('\nšµ [Cursor / Windsurf Users]');
|
|
57
|
+
console.log('To install PrivacyScrubber in Cursor or Windsurf:');
|
|
58
|
+
console.log('1. Open Settings -> Features -> MCP Servers (or type "MCP" in settings).');
|
|
59
|
+
console.log('2. Click "+ Add New MCP Server".');
|
|
60
|
+
console.log('3. Set Name: privacyscrubber');
|
|
61
|
+
console.log('4. Set Type: command');
|
|
62
|
+
console.log('5. Set Command: npx -y @privacyscrubber/mcp-server');
|
|
63
|
+
console.log('\nš Installation complete! Restart your IDE or Claude Desktop to start redacting PII locally.');
|
package/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "privacyscrubber/pii-masking-mcp",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.7.1",
|
|
5
5
|
"description": "CISO-Approved Zero-Trust PII & Secrets Redaction MCP Server for Cursor, Windsurf, and Claude Desktop. Prevent API leaks and comply with HIPAA/SOC 2 locally.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "PrivacyScrubber",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@privacyscrubber/mcp-server",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.2",
|
|
4
4
|
"mcpName": "io.github.moxno/privacyscrubber-mcp",
|
|
5
5
|
"description": "CISO-Approved Zero-Trust PII & Secrets Redaction MCP Server for Cursor, Windsurf, and Claude Desktop. Prevent API leaks and comply with HIPAA/SOC 2 locally.",
|
|
6
6
|
"main": "index.js",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"index.js",
|
|
13
|
+
"install.js",
|
|
13
14
|
"pii-masking-run.js",
|
|
14
15
|
"scrubber-core.cjs",
|
|
15
16
|
"smithery.yaml",
|
|
@@ -21,7 +22,8 @@
|
|
|
21
22
|
"bin": {
|
|
22
23
|
"mcp-server": "index.js",
|
|
23
24
|
"privacyscrubber-mcp": "index.js",
|
|
24
|
-
"pii-masking-run": "pii-masking-run.js"
|
|
25
|
+
"pii-masking-run": "pii-masking-run.js",
|
|
26
|
+
"privacyscrubber-mcp-install": "install.js"
|
|
25
27
|
},
|
|
26
28
|
"scripts": {
|
|
27
29
|
"start": "node index.js"
|
|
@@ -57,7 +59,7 @@
|
|
|
57
59
|
],
|
|
58
60
|
"author": "Ilya Sibiryakov (BrandMeWeb)",
|
|
59
61
|
"license": "MIT",
|
|
60
|
-
"homepage": "https://privacyscrubber.com/pii-mcp
|
|
62
|
+
"homepage": "https://privacyscrubber.com/pii-mcp/?utm_source=npm&utm_medium=readme&utm_campaign=mcp_server",
|
|
61
63
|
"repository": {
|
|
62
64
|
"type": "git",
|
|
63
65
|
"url": "git+https://github.com/moxno/privacyscrubber-mcp.git"
|
package/pii-masking-run.js
CHANGED
|
@@ -190,12 +190,12 @@ function performSanitization(text) {
|
|
|
190
190
|
}
|
|
191
191
|
if (isSecret) {
|
|
192
192
|
hasSecrets = true;
|
|
193
|
-
result.scrubbedText = result.scrubbedText.replace(token,
|
|
193
|
+
result.scrubbedText = result.scrubbedText.replace(token, '[SECRET_BLOCKED_UPGRADE_TO_PRO]');
|
|
194
194
|
}
|
|
195
195
|
});
|
|
196
196
|
|
|
197
197
|
if (hasSecrets) {
|
|
198
|
-
process.stderr.write(
|
|
198
|
+
process.stderr.write(`\x1b[1;31mš« [PrivacyScrubber] Secrets/Keys detected in output. Replaced with [SECRET_BLOCKED_UPGRADE_TO_PRO] to protect your data (Requires PRO tier).\x1b[0m\n`);
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
|