@pan-sec/notebooklm-mcp 1.4.0 → 1.7.0
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 +61 -7
- package/SECURITY.md +40 -6
- package/dist/auth/mcp-auth.d.ts.map +1 -1
- package/dist/auth/mcp-auth.js +3 -6
- package/dist/auth/mcp-auth.js.map +1 -1
- package/dist/compliance/alert-manager.d.ts +120 -0
- package/dist/compliance/alert-manager.d.ts.map +1 -0
- package/dist/compliance/alert-manager.js +420 -0
- package/dist/compliance/alert-manager.js.map +1 -0
- package/dist/compliance/breach-detection.d.ts +134 -0
- package/dist/compliance/breach-detection.d.ts.map +1 -0
- package/dist/compliance/breach-detection.js +456 -0
- package/dist/compliance/breach-detection.js.map +1 -0
- package/dist/compliance/change-log.d.ts +113 -0
- package/dist/compliance/change-log.d.ts.map +1 -0
- package/dist/compliance/change-log.js +275 -0
- package/dist/compliance/change-log.js.map +1 -0
- package/dist/compliance/compliance-logger.d.ts +136 -0
- package/dist/compliance/compliance-logger.d.ts.map +1 -0
- package/dist/compliance/compliance-logger.js +425 -0
- package/dist/compliance/compliance-logger.js.map +1 -0
- package/dist/compliance/compliance-tools.d.ts +18 -0
- package/dist/compliance/compliance-tools.d.ts.map +1 -0
- package/dist/compliance/compliance-tools.js +673 -0
- package/dist/compliance/compliance-tools.js.map +1 -0
- package/dist/compliance/consent-manager.d.ts +130 -0
- package/dist/compliance/consent-manager.d.ts.map +1 -0
- package/dist/compliance/consent-manager.js +386 -0
- package/dist/compliance/consent-manager.js.map +1 -0
- package/dist/compliance/dashboard.d.ts +243 -0
- package/dist/compliance/dashboard.d.ts.map +1 -0
- package/dist/compliance/dashboard.js +519 -0
- package/dist/compliance/dashboard.js.map +1 -0
- package/dist/compliance/data-classification.d.ts +117 -0
- package/dist/compliance/data-classification.d.ts.map +1 -0
- package/dist/compliance/data-classification.js +469 -0
- package/dist/compliance/data-classification.js.map +1 -0
- package/dist/compliance/data-erasure.d.ts +110 -0
- package/dist/compliance/data-erasure.d.ts.map +1 -0
- package/dist/compliance/data-erasure.js +501 -0
- package/dist/compliance/data-erasure.js.map +1 -0
- package/dist/compliance/data-export.d.ts +85 -0
- package/dist/compliance/data-export.d.ts.map +1 -0
- package/dist/compliance/data-export.js +394 -0
- package/dist/compliance/data-export.js.map +1 -0
- package/dist/compliance/data-inventory.d.ts +136 -0
- package/dist/compliance/data-inventory.d.ts.map +1 -0
- package/dist/compliance/data-inventory.js +335 -0
- package/dist/compliance/data-inventory.js.map +1 -0
- package/dist/compliance/dsar-handler.d.ts +123 -0
- package/dist/compliance/dsar-handler.d.ts.map +1 -0
- package/dist/compliance/dsar-handler.js +371 -0
- package/dist/compliance/dsar-handler.js.map +1 -0
- package/dist/compliance/evidence-collector.d.ts +187 -0
- package/dist/compliance/evidence-collector.d.ts.map +1 -0
- package/dist/compliance/evidence-collector.js +656 -0
- package/dist/compliance/evidence-collector.js.map +1 -0
- package/dist/compliance/health-monitor.d.ts +111 -0
- package/dist/compliance/health-monitor.d.ts.map +1 -0
- package/dist/compliance/health-monitor.js +509 -0
- package/dist/compliance/health-monitor.js.map +1 -0
- package/dist/compliance/incident-manager.d.ts +131 -0
- package/dist/compliance/incident-manager.d.ts.map +1 -0
- package/dist/compliance/incident-manager.js +418 -0
- package/dist/compliance/incident-manager.js.map +1 -0
- package/dist/compliance/index.d.ts +32 -0
- package/dist/compliance/index.d.ts.map +1 -0
- package/dist/compliance/index.js +35 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/policy-docs.d.ts +108 -0
- package/dist/compliance/policy-docs.d.ts.map +1 -0
- package/dist/compliance/policy-docs.js +464 -0
- package/dist/compliance/policy-docs.js.map +1 -0
- package/dist/compliance/privacy-notice-text.d.ts +58 -0
- package/dist/compliance/privacy-notice-text.d.ts.map +1 -0
- package/dist/compliance/privacy-notice-text.js +161 -0
- package/dist/compliance/privacy-notice-text.js.map +1 -0
- package/dist/compliance/privacy-notice.d.ts +128 -0
- package/dist/compliance/privacy-notice.d.ts.map +1 -0
- package/dist/compliance/privacy-notice.js +250 -0
- package/dist/compliance/privacy-notice.js.map +1 -0
- package/dist/compliance/report-generator.d.ts +168 -0
- package/dist/compliance/report-generator.d.ts.map +1 -0
- package/dist/compliance/report-generator.js +830 -0
- package/dist/compliance/report-generator.js.map +1 -0
- package/dist/compliance/retention-engine.d.ts +130 -0
- package/dist/compliance/retention-engine.d.ts.map +1 -0
- package/dist/compliance/retention-engine.js +510 -0
- package/dist/compliance/retention-engine.js.map +1 -0
- package/dist/compliance/siem-exporter.d.ts +150 -0
- package/dist/compliance/siem-exporter.d.ts.map +1 -0
- package/dist/compliance/siem-exporter.js +509 -0
- package/dist/compliance/siem-exporter.js.map +1 -0
- package/dist/compliance/types.d.ts +601 -0
- package/dist/compliance/types.d.ts.map +1 -0
- package/dist/compliance/types.js +22 -0
- package/dist/compliance/types.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/events/event-emitter.d.ts +45 -0
- package/dist/events/event-emitter.d.ts.map +1 -0
- package/dist/events/event-emitter.js +100 -0
- package/dist/events/event-emitter.js.map +1 -0
- package/dist/events/event-types.d.ts +124 -0
- package/dist/events/event-types.d.ts.map +1 -0
- package/dist/events/event-types.js +18 -0
- package/dist/events/event-types.js.map +1 -0
- package/dist/index.js +59 -2
- package/dist/index.js.map +1 -1
- package/dist/library/notebook-library.d.ts +25 -2
- package/dist/library/notebook-library.d.ts.map +1 -1
- package/dist/library/notebook-library.js +144 -3
- package/dist/library/notebook-library.js.map +1 -1
- package/dist/library/types.d.ts +15 -0
- package/dist/library/types.d.ts.map +1 -1
- package/dist/notebook-creation/audio-manager.d.ts +56 -0
- package/dist/notebook-creation/audio-manager.d.ts.map +1 -0
- package/dist/notebook-creation/audio-manager.js +335 -0
- package/dist/notebook-creation/audio-manager.js.map +1 -0
- package/dist/notebook-creation/discover-creation-flow.d.ts +8 -0
- package/dist/notebook-creation/discover-creation-flow.d.ts.map +1 -0
- package/dist/notebook-creation/discover-creation-flow.js +177 -0
- package/dist/notebook-creation/discover-creation-flow.js.map +1 -0
- package/dist/notebook-creation/discover-quota.d.ts +8 -0
- package/dist/notebook-creation/discover-quota.d.ts.map +1 -0
- package/dist/notebook-creation/discover-quota.js +195 -0
- package/dist/notebook-creation/discover-quota.js.map +1 -0
- package/dist/notebook-creation/discover-source-dialog.d.ts +8 -0
- package/dist/notebook-creation/discover-source-dialog.d.ts.map +1 -0
- package/dist/notebook-creation/discover-source-dialog.js +134 -0
- package/dist/notebook-creation/discover-source-dialog.js.map +1 -0
- package/dist/notebook-creation/discover-sources.d.ts +8 -0
- package/dist/notebook-creation/discover-sources.d.ts.map +1 -0
- package/dist/notebook-creation/discover-sources.js +273 -0
- package/dist/notebook-creation/discover-sources.js.map +1 -0
- package/dist/notebook-creation/discover-text-input.d.ts +7 -0
- package/dist/notebook-creation/discover-text-input.d.ts.map +1 -0
- package/dist/notebook-creation/discover-text-input.js +135 -0
- package/dist/notebook-creation/discover-text-input.js.map +1 -0
- package/dist/notebook-creation/index.d.ts +12 -0
- package/dist/notebook-creation/index.d.ts.map +1 -0
- package/dist/notebook-creation/index.js +12 -0
- package/dist/notebook-creation/index.js.map +1 -0
- package/dist/notebook-creation/notebook-creator.d.ts +95 -0
- package/dist/notebook-creation/notebook-creator.d.ts.map +1 -0
- package/dist/notebook-creation/notebook-creator.js +689 -0
- package/dist/notebook-creation/notebook-creator.js.map +1 -0
- package/dist/notebook-creation/notebook-sync.d.ts +93 -0
- package/dist/notebook-creation/notebook-sync.d.ts.map +1 -0
- package/dist/notebook-creation/notebook-sync.js +370 -0
- package/dist/notebook-creation/notebook-sync.js.map +1 -0
- package/dist/notebook-creation/run-discovery.d.ts +11 -0
- package/dist/notebook-creation/run-discovery.d.ts.map +1 -0
- package/dist/notebook-creation/run-discovery.js +151 -0
- package/dist/notebook-creation/run-discovery.js.map +1 -0
- package/dist/notebook-creation/selector-discovery.d.ts +65 -0
- package/dist/notebook-creation/selector-discovery.d.ts.map +1 -0
- package/dist/notebook-creation/selector-discovery.js +421 -0
- package/dist/notebook-creation/selector-discovery.js.map +1 -0
- package/dist/notebook-creation/selectors.d.ts +150 -0
- package/dist/notebook-creation/selectors.d.ts.map +1 -0
- package/dist/notebook-creation/selectors.js +225 -0
- package/dist/notebook-creation/selectors.js.map +1 -0
- package/dist/notebook-creation/source-manager.d.ts +73 -0
- package/dist/notebook-creation/source-manager.d.ts.map +1 -0
- package/dist/notebook-creation/source-manager.js +486 -0
- package/dist/notebook-creation/source-manager.js.map +1 -0
- package/dist/notebook-creation/test-create.d.ts +8 -0
- package/dist/notebook-creation/test-create.d.ts.map +1 -0
- package/dist/notebook-creation/test-create.js +72 -0
- package/dist/notebook-creation/test-create.js.map +1 -0
- package/dist/notebook-creation/types.d.ts +173 -0
- package/dist/notebook-creation/types.d.ts.map +1 -0
- package/dist/notebook-creation/types.js +5 -0
- package/dist/notebook-creation/types.js.map +1 -0
- package/dist/quota/index.d.ts +8 -0
- package/dist/quota/index.d.ts.map +1 -0
- package/dist/quota/index.js +8 -0
- package/dist/quota/index.js.map +1 -0
- package/dist/quota/quota-manager.d.ts +125 -0
- package/dist/quota/quota-manager.d.ts.map +1 -0
- package/dist/quota/quota-manager.js +330 -0
- package/dist/quota/quota-manager.js.map +1 -0
- package/dist/session/session-manager.d.ts +5 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +6 -0
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/shared-context-manager.d.ts.map +1 -1
- package/dist/session/shared-context-manager.js +2 -1
- package/dist/session/shared-context-manager.js.map +1 -1
- package/dist/tools/definitions/notebook-management.d.ts.map +1 -1
- package/dist/tools/definitions/notebook-management.js +525 -0
- package/dist/tools/definitions/notebook-management.js.map +1 -1
- package/dist/tools/definitions/system.d.ts.map +1 -1
- package/dist/tools/definitions/system.js +158 -0
- package/dist/tools/definitions/system.js.map +1 -1
- package/dist/tools/handlers.d.ts +225 -0
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +911 -0
- package/dist/tools/handlers.js.map +1 -1
- package/dist/utils/audit-logger.d.ts +21 -1
- package/dist/utils/audit-logger.d.ts.map +1 -1
- package/dist/utils/audit-logger.js +53 -4
- package/dist/utils/audit-logger.js.map +1 -1
- package/dist/utils/crypto.d.ts.map +1 -1
- package/dist/utils/crypto.js +8 -15
- package/dist/utils/crypto.js.map +1 -1
- package/dist/utils/file-permissions.d.ts +85 -0
- package/dist/utils/file-permissions.d.ts.map +1 -0
- package/dist/utils/file-permissions.js +180 -0
- package/dist/utils/file-permissions.js.map +1 -0
- package/dist/utils/settings-manager.d.ts.map +1 -1
- package/dist/utils/settings-manager.js +6 -11
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/webhooks/index.d.ts +8 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +8 -0
- package/dist/webhooks/index.js.map +1 -0
- package/dist/webhooks/types.d.ts +57 -0
- package/dist/webhooks/types.d.ts.map +1 -0
- package/dist/webhooks/types.js +5 -0
- package/dist/webhooks/types.js.map +1 -0
- package/dist/webhooks/webhook-dispatcher.d.ts +120 -0
- package/dist/webhooks/webhook-dispatcher.d.ts.map +1 -0
- package/dist/webhooks/webhook-dispatcher.js +519 -0
- package/dist/webhooks/webhook-dispatcher.js.map +1 -0
- package/docs/COMPLIANCE-SPEC.md +1452 -0
- package/package.json +30 -4
package/README.md
CHANGED
|
@@ -4,13 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
**Zero-hallucination answers from NotebookLM — now with enterprise-grade security**
|
|
6
6
|
|
|
7
|
+
[](https://www.npmjs.com/package/@pan-sec/notebooklm-mcp)
|
|
7
8
|
[](https://www.typescriptlang.org/)
|
|
8
9
|
[](https://modelcontextprotocol.io/)
|
|
10
|
+
[](#cross-platform-support)
|
|
9
11
|
[](./SECURITY.md)
|
|
10
12
|
[](./SECURITY.md#post-quantum-encryption)
|
|
13
|
+
[](./docs/COMPLIANCE-SPEC.md)
|
|
11
14
|
[](./tests/)
|
|
12
15
|
|
|
13
|
-
[Security Features](#security-features) • [Installation](#installation) • [Quick Start](#quick-start) • [Why This Fork?](#why-this-fork) • [Documentation](./SECURITY.md)
|
|
16
|
+
[Security Features](#security-features) • [Compliance](#enterprise-compliance-v160) • [Installation](#installation) • [Quick Start](#quick-start) • [Why This Fork?](#why-this-fork) • [Documentation](./SECURITY.md)
|
|
14
17
|
|
|
15
18
|
</div>
|
|
16
19
|
|
|
@@ -46,6 +49,7 @@ This fork adds **14 security hardening layers** to protect that data.
|
|
|
46
49
|
| 🚦 | **Rate Limiting** | Per-session request throttling |
|
|
47
50
|
| 🙈 | **Log Sanitization** | Credentials masked in all output |
|
|
48
51
|
| 🐍 | **MEDUSA Integration** | Automated security scanning |
|
|
52
|
+
| 🖥️ | **Cross-Platform** | Native support for Linux, macOS, Windows |
|
|
49
53
|
|
|
50
54
|
### Post-Quantum Ready
|
|
51
55
|
|
|
@@ -60,13 +64,62 @@ ML-KEM-768 (Kyber) + ChaCha20-Poly1305
|
|
|
60
64
|
|
|
61
65
|
Even if one algorithm is broken, the other remains secure.
|
|
62
66
|
|
|
67
|
+
### Cross-Platform Support
|
|
68
|
+
|
|
69
|
+
Full native support for all major operating systems:
|
|
70
|
+
|
|
71
|
+
| Platform | File Permissions | Data Directory |
|
|
72
|
+
|----------|-----------------|----------------|
|
|
73
|
+
| **Linux** | Unix chmod (0o600/0o700) | `~/.local/share/notebooklm-mcp/` |
|
|
74
|
+
| **macOS** | Unix chmod (0o600/0o700) | `~/Library/Application Support/notebooklm-mcp/` |
|
|
75
|
+
| **Windows** | ACLs via icacls (current user only) | `%LOCALAPPDATA%\notebooklm-mcp\` |
|
|
76
|
+
|
|
77
|
+
All sensitive files (encryption keys, auth tokens, audit logs) are automatically protected with owner-only permissions on every platform.
|
|
78
|
+
|
|
79
|
+
### Enterprise Compliance (v1.6.0+)
|
|
80
|
+
|
|
81
|
+
Full compliance support for regulated industries:
|
|
82
|
+
|
|
83
|
+
| Regulation | Features |
|
|
84
|
+
|------------|----------|
|
|
85
|
+
| **GDPR** | Consent management, DSAR handling, right to erasure, data portability |
|
|
86
|
+
| **SOC2 Type II** | Hash-chained audit logs, incident response, availability monitoring |
|
|
87
|
+
| **CSSF** | 7-year retention, SIEM integration, policy documentation |
|
|
88
|
+
|
|
89
|
+
#### Compliance Tools (16 MCP tools)
|
|
90
|
+
```
|
|
91
|
+
compliance_dashboard - Real-time compliance status
|
|
92
|
+
compliance_report - Generate audit reports (JSON/CSV/HTML)
|
|
93
|
+
compliance_evidence - Collect evidence packages
|
|
94
|
+
grant_consent - Record user consent
|
|
95
|
+
submit_dsar - Handle data subject requests
|
|
96
|
+
request_erasure - Right to be forgotten
|
|
97
|
+
export_user_data - Data portability export
|
|
98
|
+
create_incident - Security incident management
|
|
99
|
+
...and 8 more
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### Compliance Dashboard Example
|
|
103
|
+
```
|
|
104
|
+
═══════════════════════════════════════════════════════════════
|
|
105
|
+
COMPLIANCE DASHBOARD - NotebookLM MCP Server
|
|
106
|
+
═══════════════════════════════════════════════════════════════
|
|
107
|
+
Generated: 2025-12-18T10:00:00.000Z
|
|
108
|
+
Overall Score: 95/100
|
|
109
|
+
|
|
110
|
+
GDPR: [COMPLIANT] SOC2: [COMPLIANT] CSSF: [COMPLIANT]
|
|
111
|
+
═══════════════════════════════════════════════════════════════
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
See [COMPLIANCE-SPEC.md](./docs/COMPLIANCE-SPEC.md) for full documentation.
|
|
115
|
+
|
|
63
116
|
---
|
|
64
117
|
|
|
65
118
|
## Installation
|
|
66
119
|
|
|
67
120
|
### Claude Code
|
|
68
121
|
```bash
|
|
69
|
-
claude mcp add notebooklm npx notebooklm-mcp
|
|
122
|
+
claude mcp add notebooklm -- npx @pan-sec/notebooklm-mcp@latest
|
|
70
123
|
```
|
|
71
124
|
|
|
72
125
|
### With Authentication (Recommended)
|
|
@@ -74,12 +127,12 @@ claude mcp add notebooklm npx notebooklm-mcp-secure@latest
|
|
|
74
127
|
claude mcp add notebooklm \
|
|
75
128
|
--env NLMCP_AUTH_ENABLED=true \
|
|
76
129
|
--env NLMCP_AUTH_TOKEN=$(openssl rand -base64 32) \
|
|
77
|
-
npx notebooklm-mcp
|
|
130
|
+
-- npx @pan-sec/notebooklm-mcp@latest
|
|
78
131
|
```
|
|
79
132
|
|
|
80
133
|
### Codex
|
|
81
134
|
```bash
|
|
82
|
-
codex mcp add notebooklm -- npx notebooklm-mcp
|
|
135
|
+
codex mcp add notebooklm -- npx @pan-sec/notebooklm-mcp@latest
|
|
83
136
|
```
|
|
84
137
|
|
|
85
138
|
<details>
|
|
@@ -91,7 +144,7 @@ Add to `~/.cursor/mcp.json`:
|
|
|
91
144
|
"mcpServers": {
|
|
92
145
|
"notebooklm": {
|
|
93
146
|
"command": "npx",
|
|
94
|
-
"args": ["-y", "notebooklm-mcp
|
|
147
|
+
"args": ["-y", "@pan-sec/notebooklm-mcp@latest"],
|
|
95
148
|
"env": {
|
|
96
149
|
"NLMCP_AUTH_ENABLED": "true",
|
|
97
150
|
"NLMCP_AUTH_TOKEN": "your-secure-token"
|
|
@@ -110,7 +163,7 @@ Add to `~/.cursor/mcp.json`:
|
|
|
110
163
|
"mcpServers": {
|
|
111
164
|
"notebooklm": {
|
|
112
165
|
"command": "npx",
|
|
113
|
-
"args": ["notebooklm-mcp
|
|
166
|
+
"args": ["-y", "@pan-sec/notebooklm-mcp@latest"],
|
|
114
167
|
"env": {
|
|
115
168
|
"NLMCP_AUTH_ENABLED": "true",
|
|
116
169
|
"NLMCP_AUTH_TOKEN": "your-secure-token"
|
|
@@ -201,7 +254,7 @@ Or integrate in CI/CD:
|
|
|
201
254
|
|
|
202
255
|
```yaml
|
|
203
256
|
- name: Security Scan
|
|
204
|
-
run: npx notebooklm-mcp
|
|
257
|
+
run: npx @pan-sec/notebooklm-mcp && npm run security-scan
|
|
205
258
|
```
|
|
206
259
|
|
|
207
260
|
---
|
|
@@ -250,6 +303,7 @@ All original functionality from [PleasePrompto/notebooklm-mcp](https://github.co
|
|
|
250
303
|
| Zero-hallucination Q&A | ✅ | ✅ |
|
|
251
304
|
| Library management | ✅ | ✅ |
|
|
252
305
|
| Multi-client support | ✅ | ✅ |
|
|
306
|
+
| **Cross-platform (Linux/macOS/Windows)** | ⚠️ | ✅ |
|
|
253
307
|
| **Post-quantum encryption** | ❌ | ✅ |
|
|
254
308
|
| **Secrets scanning** | ❌ | ✅ |
|
|
255
309
|
| **Certificate pinning** | ❌ | ✅ |
|
package/SECURITY.md
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
This is a security-hardened fork of [PleasePrompto/notebooklm-mcp](https://github.com/PleasePrompto/notebooklm-mcp), maintained by [Pantheon Security](https://pantheonsecurity.io).
|
|
4
4
|
|
|
5
|
-
**Version**: 1.
|
|
5
|
+
**Version**: 1.5.1
|
|
6
6
|
**Security Features**: 14 hardening layers
|
|
7
|
+
**Platforms**: Linux, macOS, Windows
|
|
7
8
|
|
|
8
9
|
## Security Features Overview
|
|
9
10
|
|
|
@@ -21,10 +22,43 @@ This is a security-hardened fork of [PleasePrompto/notebooklm-mcp](https://githu
|
|
|
21
22
|
| **Certificate Pinning** | ✅ | Google TLS MITM protection |
|
|
22
23
|
| **Memory Scrubbing** | ✅ | Zero sensitive data after use |
|
|
23
24
|
| **MEDUSA Integration** | ✅ | Automated security scanning |
|
|
25
|
+
| **Cross-Platform Permissions** | ✅ | Secure file permissions on all OSes |
|
|
24
26
|
|
|
25
27
|
---
|
|
26
28
|
|
|
27
|
-
##
|
|
29
|
+
## Cross-Platform Support
|
|
30
|
+
|
|
31
|
+
Full native support for Linux, macOS, and Windows with proper secure file permissions on each platform.
|
|
32
|
+
|
|
33
|
+
### Platform-Specific Security
|
|
34
|
+
|
|
35
|
+
| Platform | File Permissions | Implementation |
|
|
36
|
+
|----------|-----------------|----------------|
|
|
37
|
+
| **Linux** | Unix chmod | `0o600` (files), `0o700` (directories) |
|
|
38
|
+
| **macOS** | Unix chmod | `0o600` (files), `0o700` (directories) |
|
|
39
|
+
| **Windows** | ACLs via icacls | Current user only (Full Control) |
|
|
40
|
+
|
|
41
|
+
### Data Directories
|
|
42
|
+
|
|
43
|
+
| Platform | Path |
|
|
44
|
+
|----------|------|
|
|
45
|
+
| Linux | `~/.local/share/notebooklm-mcp/` |
|
|
46
|
+
| macOS | `~/Library/Application Support/notebooklm-mcp/` |
|
|
47
|
+
| Windows | `%LOCALAPPDATA%\notebooklm-mcp\` |
|
|
48
|
+
|
|
49
|
+
### Protected Files
|
|
50
|
+
|
|
51
|
+
All sensitive files are automatically protected with owner-only permissions:
|
|
52
|
+
- Encryption keys (`pq-keys.enc`)
|
|
53
|
+
- Authentication tokens (`auth-token.hash`)
|
|
54
|
+
- Audit logs (`audit/*.jsonl`)
|
|
55
|
+
- Browser session state (`browser_state/`)
|
|
56
|
+
- Notebook library (`library.json`)
|
|
57
|
+
- Settings (`settings.json`)
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Post-Quantum Encryption
|
|
28
62
|
|
|
29
63
|
### Why Post-Quantum?
|
|
30
64
|
|
|
@@ -88,7 +122,7 @@ When you upgrade, existing unencrypted files are automatically:
|
|
|
88
122
|
|
|
89
123
|
---
|
|
90
124
|
|
|
91
|
-
## Secrets Scanning
|
|
125
|
+
## Secrets Scanning
|
|
92
126
|
|
|
93
127
|
Real-time detection of credentials in logs and responses using patterns from TruffleHog and GitLeaks.
|
|
94
128
|
|
|
@@ -124,7 +158,7 @@ NLMCP_SECRETS_IGNORE=pattern1,pattern2 # Ignore specific patterns
|
|
|
124
158
|
|
|
125
159
|
---
|
|
126
160
|
|
|
127
|
-
## Certificate Pinning
|
|
161
|
+
## Certificate Pinning
|
|
128
162
|
|
|
129
163
|
Protects HTTPS connections to Google by validating server certificate chains against known-good SPKI hashes.
|
|
130
164
|
|
|
@@ -159,7 +193,7 @@ NLMCP_CERT_REPORT_ONLY=false # Log but don't block (default: false)
|
|
|
159
193
|
|
|
160
194
|
---
|
|
161
195
|
|
|
162
|
-
## Memory Scrubbing
|
|
196
|
+
## Memory Scrubbing
|
|
163
197
|
|
|
164
198
|
Sensitive data is securely wiped from memory after use to prevent:
|
|
165
199
|
- Memory dump attacks
|
|
@@ -197,7 +231,7 @@ await withSecureCredential(apiKey, async (cred) => {
|
|
|
197
231
|
|
|
198
232
|
---
|
|
199
233
|
|
|
200
|
-
## MEDUSA Integration
|
|
234
|
+
## MEDUSA Integration
|
|
201
235
|
|
|
202
236
|
Automated security scanning using [MEDUSA](https://github.com/Pantheon-Security/medusa) - Multi-Language Security Scanner with 46+ analyzers.
|
|
203
237
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-auth.d.ts","sourceRoot":"","sources":["../../src/auth/mcp-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"mcp-auth.d.ts","sourceRoot":"","sources":["../../src/auth/mcp-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uCAAuC;IACvC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAyBD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,cAAc,CAAgD;IACtE,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAI3C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+DjC;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIhC;;OAEG;YACW,aAAa;IAa3B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;;OAMG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,GAAE,MAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmD9F;;OAEG;IACH,SAAS,IAAI;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB;IASD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;CAUrC;AAOD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAKtD;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBrD"}
|
package/dist/auth/mcp-auth.js
CHANGED
|
@@ -15,6 +15,7 @@ import path from "path";
|
|
|
15
15
|
import { CONFIG } from "../config.js";
|
|
16
16
|
import { log } from "../utils/logger.js";
|
|
17
17
|
import { audit } from "../utils/audit-logger.js";
|
|
18
|
+
import { mkdirSecure, writeFileSecure, PERMISSION_MODES, } from "../utils/file-permissions.js";
|
|
18
19
|
/**
|
|
19
20
|
* Get MCP auth configuration from environment
|
|
20
21
|
*/
|
|
@@ -119,12 +120,8 @@ export class MCPAuthenticator {
|
|
|
119
120
|
if (!this.tokenHash)
|
|
120
121
|
return;
|
|
121
122
|
const dir = path.dirname(this.config.tokenFile);
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
fs.writeFileSync(this.config.tokenFile, this.tokenHash, {
|
|
126
|
-
mode: 0o600, // Owner read/write only
|
|
127
|
-
});
|
|
123
|
+
mkdirSecure(dir, PERMISSION_MODES.OWNER_FULL);
|
|
124
|
+
writeFileSecure(this.config.tokenFile, this.tokenHash, PERMISSION_MODES.OWNER_READ_WRITE);
|
|
128
125
|
}
|
|
129
126
|
/**
|
|
130
127
|
* Check if authentication is enabled
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-auth.js","sourceRoot":"","sources":["../../src/auth/mcp-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-auth.js","sourceRoot":"","sources":["../../src/auth/mcp-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alert Manager
|
|
3
|
+
*
|
|
4
|
+
* Sends alerts for security and compliance events.
|
|
5
|
+
* Supports multiple channels: console, file, webhook, email.
|
|
6
|
+
*
|
|
7
|
+
* Added by Pantheon Security for enterprise compliance support.
|
|
8
|
+
*/
|
|
9
|
+
import type { Alert, AlertConfig, AlertSeverity } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Alert Manager class
|
|
12
|
+
*/
|
|
13
|
+
export declare class AlertManager {
|
|
14
|
+
private static instance;
|
|
15
|
+
private config;
|
|
16
|
+
private alertHistory;
|
|
17
|
+
private hourlyAlerts;
|
|
18
|
+
private alertsDir;
|
|
19
|
+
private constructor();
|
|
20
|
+
/**
|
|
21
|
+
* Get singleton instance
|
|
22
|
+
*/
|
|
23
|
+
static getInstance(): AlertManager;
|
|
24
|
+
/**
|
|
25
|
+
* Check if alert should be sent based on severity
|
|
26
|
+
*/
|
|
27
|
+
private meetsMinimumSeverity;
|
|
28
|
+
/**
|
|
29
|
+
* Check if alert is within cooldown period
|
|
30
|
+
*/
|
|
31
|
+
private isInCooldown;
|
|
32
|
+
/**
|
|
33
|
+
* Check if hourly limit is exceeded
|
|
34
|
+
*/
|
|
35
|
+
private isHourlyLimitExceeded;
|
|
36
|
+
/**
|
|
37
|
+
* Record that an alert was sent
|
|
38
|
+
*/
|
|
39
|
+
private recordAlert;
|
|
40
|
+
/**
|
|
41
|
+
* Generate a unique key for deduplication
|
|
42
|
+
*/
|
|
43
|
+
private generateKey;
|
|
44
|
+
/**
|
|
45
|
+
* Send an alert
|
|
46
|
+
*/
|
|
47
|
+
sendAlert(severity: AlertSeverity, title: string, message: string, source: string, details?: Record<string, unknown>): Promise<Alert | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Send alert to console
|
|
50
|
+
*/
|
|
51
|
+
private sendToConsole;
|
|
52
|
+
/**
|
|
53
|
+
* Send alert to file
|
|
54
|
+
*/
|
|
55
|
+
private sendToFile;
|
|
56
|
+
/**
|
|
57
|
+
* Send alert to webhook
|
|
58
|
+
*/
|
|
59
|
+
private sendToWebhook;
|
|
60
|
+
/**
|
|
61
|
+
* Format webhook body for common services (Slack, Teams, generic)
|
|
62
|
+
*/
|
|
63
|
+
private formatWebhookBody;
|
|
64
|
+
/**
|
|
65
|
+
* Get severity icon
|
|
66
|
+
*/
|
|
67
|
+
private getSeverityIcon;
|
|
68
|
+
/**
|
|
69
|
+
* Get severity color (for webhooks)
|
|
70
|
+
*/
|
|
71
|
+
private getSeverityColor;
|
|
72
|
+
/**
|
|
73
|
+
* Send a critical alert
|
|
74
|
+
*/
|
|
75
|
+
critical(title: string, message: string, source: string, details?: Record<string, unknown>): Promise<Alert | null>;
|
|
76
|
+
/**
|
|
77
|
+
* Send an error alert
|
|
78
|
+
*/
|
|
79
|
+
error(title: string, message: string, source: string, details?: Record<string, unknown>): Promise<Alert | null>;
|
|
80
|
+
/**
|
|
81
|
+
* Send a warning alert
|
|
82
|
+
*/
|
|
83
|
+
warning(title: string, message: string, source: string, details?: Record<string, unknown>): Promise<Alert | null>;
|
|
84
|
+
/**
|
|
85
|
+
* Send an info alert
|
|
86
|
+
*/
|
|
87
|
+
info(title: string, message: string, source: string, details?: Record<string, unknown>): Promise<Alert | null>;
|
|
88
|
+
/**
|
|
89
|
+
* Get alert statistics
|
|
90
|
+
*/
|
|
91
|
+
getStats(): {
|
|
92
|
+
enabled: boolean;
|
|
93
|
+
min_severity: AlertSeverity;
|
|
94
|
+
cooldown_seconds: number;
|
|
95
|
+
max_alerts_per_hour: number;
|
|
96
|
+
alerts_this_hour: number;
|
|
97
|
+
channels: string[];
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Update configuration at runtime
|
|
101
|
+
*/
|
|
102
|
+
updateConfig(updates: Partial<AlertConfig>): void;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get the alert manager instance
|
|
106
|
+
*/
|
|
107
|
+
export declare function getAlertManager(): AlertManager;
|
|
108
|
+
/**
|
|
109
|
+
* Send an alert
|
|
110
|
+
*/
|
|
111
|
+
export declare function sendAlert(severity: AlertSeverity, title: string, message: string, source: string, details?: Record<string, unknown>): Promise<Alert | null>;
|
|
112
|
+
/**
|
|
113
|
+
* Send a critical alert
|
|
114
|
+
*/
|
|
115
|
+
export declare function alertCritical(title: string, message: string, source: string, details?: Record<string, unknown>): Promise<Alert | null>;
|
|
116
|
+
/**
|
|
117
|
+
* Send a warning alert
|
|
118
|
+
*/
|
|
119
|
+
export declare function alertWarning(title: string, message: string, source: string, details?: Record<string, unknown>): Promise<Alert | null>;
|
|
120
|
+
//# sourceMappingURL=alert-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-manager.d.ts","sourceRoot":"","sources":["../../src/compliance/alert-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA4CpE;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;IAUP;;OAEG;WACW,WAAW,IAAI,YAAY;IAOzC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACU,SAAS,CACpB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA8DxB;;OAEG;YACW,aAAa;IAiB3B;;OAEG;YACW,UAAU;IAsBxB;;OAEG;YACW,aAAa;IA2C3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4DzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACU,QAAQ,CACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIxB;;OAEG;IACU,KAAK,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIxB;;OAEG;IACU,OAAO,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIxB;;OAEG;IACU,IAAI,CACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIxB;;OAEG;IACI,QAAQ,IAAI;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,aAAa,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB;IAmBD;;OAEG;IACI,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;CAGzD;AAMD;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAMD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAEvB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAEvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAEvB"}
|