@roomi-fields/notebooklm-mcp 1.5.3 → 1.5.7
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/LICENSE +22 -22
- package/README.md +219 -203
- package/deployment/INDEX.md +0 -0
- package/deployment/PACKAGE-FILES.txt +180 -180
- package/deployment/QUICK-START.md +0 -0
- package/deployment/docs/01-INSTALL.md +0 -0
- package/deployment/docs/02-CONFIGURATION.md +0 -0
- package/deployment/docs/03-API.md +99 -13
- package/deployment/docs/04-N8N-INTEGRATION.md +0 -0
- package/deployment/docs/05-TROUBLESHOOTING.md +0 -0
- package/deployment/docs/06-NOTEBOOK-LIBRARY.md +0 -0
- package/deployment/docs/07-AUTO-DISCOVERY.md +0 -0
- package/deployment/docs/08-DOCKER.md +125 -55
- package/deployment/docs/08-WSL-USAGE.md +0 -0
- package/deployment/docs/09-MULTI-INTERFACE.md +0 -0
- package/deployment/docs/10-CONTENT-MANAGEMENT.md +0 -0
- package/deployment/docs/11-MULTI-ACCOUNT.md +0 -0
- package/deployment/docs/README.md +9 -2
- package/deployment/scripts/README.md +0 -0
- package/deployment/scripts/install.ps1 +114 -114
- package/deployment/scripts/setup-auth.ps1 +217 -217
- package/deployment/scripts/start-server.ps1 +72 -72
- package/deployment/scripts/stop-server.ps1 +51 -51
- package/deployment/scripts/test-api.ps1 +651 -651
- package/deployment/scripts/test-auth.ps1 +0 -0
- package/deployment/scripts/test-auto-discovery.ps1 +295 -295
- package/deployment/scripts/test-cors.ps1 +398 -398
- package/deployment/scripts/test-errors.ps1 +581 -581
- package/deployment/scripts/test-server.ps1 +140 -140
- package/deployment/scripts/test-sessions.ps1 +426 -426
- package/deployment/scripts/test-validation.ps1 +299 -299
- package/dist/accounts/account-manager.d.ts +15 -0
- package/dist/accounts/account-manager.d.ts.map +1 -1
- package/dist/accounts/account-manager.js +104 -0
- package/dist/accounts/account-manager.js.map +1 -1
- package/dist/accounts/auto-login-manager.d.ts +0 -0
- package/dist/accounts/auto-login-manager.d.ts.map +1 -1
- package/dist/accounts/auto-login-manager.js +29 -25
- package/dist/accounts/auto-login-manager.js.map +1 -1
- package/dist/accounts/crypto.d.ts +0 -0
- package/dist/accounts/crypto.d.ts.map +0 -0
- package/dist/accounts/crypto.js +0 -0
- package/dist/accounts/crypto.js.map +0 -0
- package/dist/accounts/index.d.ts +0 -0
- package/dist/accounts/index.d.ts.map +0 -0
- package/dist/accounts/index.js +0 -0
- package/dist/accounts/index.js.map +0 -0
- package/dist/accounts/types.d.ts +0 -0
- package/dist/accounts/types.d.ts.map +0 -0
- package/dist/accounts/types.js +0 -0
- package/dist/accounts/types.js.map +0 -0
- package/dist/auth/auth-manager.d.ts +1 -1
- package/dist/auth/auth-manager.d.ts.map +1 -1
- package/dist/auth/auth-manager.js +14 -9
- package/dist/auth/auth-manager.js.map +1 -1
- package/dist/auto-discovery/auto-discovery.d.ts +0 -0
- package/dist/auto-discovery/auto-discovery.d.ts.map +0 -0
- package/dist/auto-discovery/auto-discovery.js +0 -0
- package/dist/auto-discovery/auto-discovery.js.map +0 -0
- package/dist/cli/accounts.d.ts +0 -0
- package/dist/cli/accounts.d.ts.map +0 -0
- package/dist/cli/accounts.js +0 -0
- package/dist/cli/accounts.js.map +0 -0
- package/dist/cli/de-auth.d.ts +0 -0
- package/dist/cli/de-auth.d.ts.map +0 -0
- package/dist/cli/de-auth.js +0 -0
- package/dist/cli/de-auth.js.map +0 -0
- package/dist/cli/help.d.ts +0 -0
- package/dist/cli/help.d.ts.map +0 -0
- package/dist/cli/help.js +0 -0
- package/dist/cli/help.js.map +0 -0
- package/dist/cli/setup-auth.d.ts +0 -0
- package/dist/cli/setup-auth.d.ts.map +0 -0
- package/dist/cli/setup-auth.js +18 -10
- package/dist/cli/setup-auth.js.map +1 -1
- package/dist/config.d.ts +0 -0
- package/dist/config.d.ts.map +0 -0
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/content/content-generator.d.ts +0 -0
- package/dist/content/content-generator.d.ts.map +0 -0
- package/dist/content/content-generator.js +0 -0
- package/dist/content/content-generator.js.map +0 -0
- package/dist/content/content-manager.d.ts +0 -0
- package/dist/content/content-manager.d.ts.map +0 -0
- package/dist/content/content-manager.js +0 -0
- package/dist/content/content-manager.js.map +0 -0
- package/dist/content/content-templates.d.ts +0 -0
- package/dist/content/content-templates.d.ts.map +0 -0
- package/dist/content/content-templates.js +0 -0
- package/dist/content/content-templates.js.map +0 -0
- package/dist/content/index.d.ts +0 -0
- package/dist/content/index.d.ts.map +0 -0
- package/dist/content/index.js +0 -0
- package/dist/content/index.js.map +0 -0
- package/dist/content/types.d.ts +0 -0
- package/dist/content/types.d.ts.map +0 -0
- package/dist/content/types.js +0 -0
- package/dist/content/types.js.map +0 -0
- package/dist/errors.d.ts +0 -0
- package/dist/errors.d.ts.map +0 -0
- package/dist/errors.js +0 -0
- package/dist/errors.js.map +0 -0
- package/dist/http-wrapper.d.ts +0 -0
- package/dist/http-wrapper.d.ts.map +1 -1
- package/dist/http-wrapper.js +245 -6
- package/dist/http-wrapper.js.map +1 -1
- package/dist/i18n/en.json +0 -0
- package/dist/i18n/fr.json +0 -0
- package/dist/i18n/index.d.ts +0 -0
- package/dist/i18n/index.d.ts.map +0 -0
- package/dist/i18n/index.js +0 -0
- package/dist/i18n/index.js.map +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.d.ts.map +0 -0
- package/dist/index.js +0 -0
- package/dist/index.js.map +0 -0
- package/dist/library/notebook-library.d.ts +0 -0
- package/dist/library/notebook-library.d.ts.map +0 -0
- package/dist/library/notebook-library.js +0 -0
- package/dist/library/notebook-library.js.map +0 -0
- package/dist/library/types.d.ts +0 -0
- package/dist/library/types.d.ts.map +0 -0
- package/dist/library/types.js +0 -0
- package/dist/library/types.js.map +0 -0
- package/dist/session/browser-session.d.ts +0 -0
- package/dist/session/browser-session.d.ts.map +1 -1
- package/dist/session/browser-session.js +215 -91
- package/dist/session/browser-session.js.map +1 -1
- package/dist/session/session-manager.d.ts +0 -0
- package/dist/session/session-manager.d.ts.map +0 -0
- package/dist/session/session-manager.js +0 -0
- package/dist/session/session-manager.js.map +0 -0
- package/dist/session/shared-context-manager.d.ts +0 -0
- package/dist/session/shared-context-manager.d.ts.map +1 -1
- package/dist/session/shared-context-manager.js +22 -2
- package/dist/session/shared-context-manager.js.map +1 -1
- package/dist/startup/startup-manager.d.ts +8 -0
- package/dist/startup/startup-manager.d.ts.map +1 -1
- package/dist/startup/startup-manager.js +176 -28
- package/dist/startup/startup-manager.js.map +1 -1
- package/dist/stdio-http-proxy.d.ts +0 -0
- package/dist/stdio-http-proxy.d.ts.map +0 -0
- package/dist/stdio-http-proxy.js +91 -16
- package/dist/stdio-http-proxy.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +52 -32
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +0 -0
- package/dist/types.d.ts.map +0 -0
- package/dist/types.js +0 -0
- package/dist/types.js.map +0 -0
- package/dist/utils/citation-extractor.d.ts +6 -7
- package/dist/utils/citation-extractor.d.ts.map +1 -1
- package/dist/utils/citation-extractor.js +138 -303
- package/dist/utils/citation-extractor.js.map +1 -1
- package/dist/utils/cleanup-manager.d.ts +0 -0
- package/dist/utils/cleanup-manager.d.ts.map +0 -0
- package/dist/utils/cleanup-manager.js +0 -0
- package/dist/utils/cleanup-manager.js.map +0 -0
- package/dist/utils/logger.d.ts +0 -0
- package/dist/utils/logger.d.ts.map +0 -0
- package/dist/utils/logger.js +0 -0
- package/dist/utils/logger.js.map +0 -0
- package/dist/utils/page-utils.d.ts +0 -0
- package/dist/utils/page-utils.d.ts.map +1 -1
- package/dist/utils/page-utils.js +12 -13
- package/dist/utils/page-utils.js.map +1 -1
- package/dist/utils/stealth-utils.d.ts +0 -0
- package/dist/utils/stealth-utils.d.ts.map +0 -0
- package/dist/utils/stealth-utils.js +0 -0
- package/dist/utils/stealth-utils.js.map +0 -0
- package/docs/ADDING_A_LANGUAGE.md +0 -0
- package/docs/ARCHITECTURE_MIGRATION_STUDY.md +0 -0
- package/docs/CHROME_PROFILE_LIMITATION.md +0 -0
- package/docs/MULTI_ACCOUNT_SYSTEM.md +0 -0
- package/docs/archive/auto-discovery-complet.md +906 -0
- package/package.json +4 -2
- package/scripts/add-totp.ts +110 -0
- package/scripts/archive/add-and-activate-notebook.ps1 +0 -0
- package/scripts/archive/add-new-notebook.ps1 +0 -0
- package/scripts/archive/add-rom1pey.ps1 +0 -0
- package/scripts/archive/add-rpmonster.ps1 +0 -0
- package/scripts/archive/add-source-debug.ps1 +0 -0
- package/scripts/archive/add-source-e2e.ps1 +0 -0
- package/scripts/archive/add-source-visible.ps1 +0 -0
- package/scripts/archive/add-test-notebook.ps1 +0 -0
- package/scripts/archive/add-test-source.ps1 +0 -0
- package/scripts/archive/capture-screen.ps1 +0 -0
- package/scripts/archive/change-language.mjs +0 -0
- package/scripts/archive/change-language.ts +0 -0
- package/scripts/archive/check-account.ps1 +0 -0
- package/scripts/archive/check-notebook-2.ps1 +0 -0
- package/scripts/archive/check-test-notebook.ps1 +0 -0
- package/scripts/archive/create-notebook-auto.ps1 +0 -0
- package/scripts/archive/create-notebook.ps1 +0 -0
- package/scripts/archive/create-rom1pey-notebook.ps1 +0 -0
- package/scripts/archive/create-rom1pey.ps1 +0 -0
- package/scripts/archive/create-test-notebook-fresh.ps1 +0 -0
- package/scripts/archive/create-test-notebook.ps1 +0 -0
- package/scripts/archive/debug-add-source-auto.ps1 +0 -0
- package/scripts/archive/debug-add-source.ps1 +0 -0
- package/scripts/archive/debug-add-text-source.ps1 +0 -0
- package/scripts/archive/debug-home.ps1 +0 -0
- package/scripts/archive/debug-selectors.ps1 +0 -0
- package/scripts/archive/debug-sources-panel.ps1 +0 -0
- package/scripts/archive/debug-ui.ps1 +0 -0
- package/scripts/archive/discover-home.ps1 +0 -0
- package/scripts/archive/kill-automation-chrome.ps1 +0 -0
- package/scripts/archive/list-my-notebooks.ps1 +0 -0
- package/scripts/archive/navigate-home-visible.ps1 +0 -0
- package/scripts/archive/navigate-home.ps1 +0 -0
- package/scripts/archive/run-e2e-english.ps1 +0 -0
- package/scripts/archive/run-e2e-rom1pey-v2.ps1 +0 -0
- package/scripts/archive/run-e2e-rom1pey.ps1 +0 -0
- package/scripts/archive/setup-english-test.ps1 +0 -0
- package/scripts/archive/setup-test-notebook.ps1 +0 -0
- package/scripts/archive/simple-add-source.ps1 +0 -0
- package/scripts/archive/t10.ps1 +0 -0
- package/scripts/archive/t20.ps1 +0 -0
- package/scripts/archive/t30.ps1 +0 -0
- package/scripts/archive/t31.ps1 +0 -0
- package/scripts/archive/t32.ps1 +0 -0
- package/scripts/archive/t39.ps1 +0 -0
- package/scripts/archive/t40.ps1 +0 -0
- package/scripts/archive/t53.ps1 +0 -0
- package/scripts/archive/t54.ps1 +0 -0
- package/scripts/archive/t55.ps1 +0 -0
- package/scripts/archive/t9.ps1 +0 -0
- package/scripts/archive/test-access.ps1 +0 -0
- package/scripts/archive/test-add-delete-source.ps1 +0 -0
- package/scripts/archive/test-add-source-visible.ps1 +0 -0
- package/scripts/archive/test-add-source.ps1 +0 -0
- package/scripts/archive/test-add-text-debug.ps1 +0 -0
- package/scripts/archive/test-add-text-source.ps1 +0 -0
- package/scripts/archive/test-add-url-source.ps1 +0 -0
- package/scripts/archive/test-ask-ascii.ps1 +0 -0
- package/scripts/archive/test-ask-cnv.ps1 +0 -0
- package/scripts/archive/test-ask-headed.ps1 +0 -0
- package/scripts/archive/test-ask-ifs.ps1 +0 -0
- package/scripts/archive/test-ask-now.ps1 +0 -0
- package/scripts/archive/test-ask-real.ps1 +0 -0
- package/scripts/archive/test-ask-visible.ps1 +0 -0
- package/scripts/archive/test-create-notebook.ps1 +0 -0
- package/scripts/archive/test-create-then-add.ps1 +0 -0
- package/scripts/archive/test-delete-source.ps1 +0 -0
- package/scripts/archive/test-e2e-notebook.ps1 +0 -0
- package/scripts/archive/test-english-notebook.ps1 +0 -0
- package/scripts/archive/test-english.ps1 +0 -0
- package/scripts/archive/test-full-custom-instructions.ps1 +0 -0
- package/scripts/archive/test-full-infographic.ps1 +0 -0
- package/scripts/archive/test-full-language.ps1 +0 -0
- package/scripts/archive/test-full-presentation.ps1 +0 -0
- package/scripts/archive/test-full-report.ps1 +0 -0
- package/scripts/archive/test-full-source-selection.ps1 +0 -0
- package/scripts/archive/test-full-video-brief.ps1 +0 -0
- package/scripts/archive/test-full-video-explainer.ps1 +0 -0
- package/scripts/archive/test-full-video-styles.ps1 +0 -0
- package/scripts/archive/test-generate-report.ps1 +0 -0
- package/scripts/archive/test-generate-study-guide.ps1 +0 -0
- package/scripts/archive/test-headed-ask.ps1 +0 -0
- package/scripts/archive/test-headed-now.ps1 +0 -0
- package/scripts/archive/test-headed.ps1 +0 -0
- package/scripts/archive/test-hello.ps1 +0 -0
- package/scripts/archive/test-i18n-studio.ps1 +0 -0
- package/scripts/archive/test-i18n.ps1 +0 -0
- package/scripts/archive/test-manual-headed.ps1 +0 -0
- package/scripts/archive/test-mathieu-quota.ps1 +0 -0
- package/scripts/archive/test-notebook-1.ps1 +0 -0
- package/scripts/archive/test-notebook-2-sources.ps1 +0 -0
- package/scripts/archive/test-notebook1.ps1 +0 -0
- package/scripts/archive/test-personal-notebook.ps1 +0 -0
- package/scripts/archive/test-rate-limit.ps1 +0 -0
- package/scripts/archive/test-real-ask.ps1 +0 -0
- package/scripts/archive/test-real-ask2.ps1 +0 -0
- package/scripts/archive/test-rom1pey.ps1 +0 -0
- package/scripts/archive/test-rotation-complete.ps1 +0 -0
- package/scripts/archive/test-rotation.ps1 +0 -0
- package/scripts/archive/test-show-browser.ps1 +0 -0
- package/scripts/archive/test-update-notebook.ps1 +0 -0
- package/scripts/archive/verify-language-slow.ps1 +0 -0
- package/scripts/archive/verify-language.ps1 +0 -0
- package/scripts/check-server.ps1 +0 -0
- package/scripts/docker-entrypoint.sh +25 -29
- package/scripts/mcp-proxy-hidden.ps1 +31 -0
- package/scripts/mcp-wsl-helper.sh +146 -146
- package/scripts/start-server-hidden.vbs +13 -0
- package/scripts/start-server.ps1 +0 -0
- package/scripts/start-vnc.sh +0 -0
- package/scripts/stop-server.bat +5 -0
- package/scripts/stop-server.ps1 +0 -0
- package/scripts/switch-account-language.sh +0 -0
- package/scripts/test-account.ps1 +0 -0
|
@@ -26,26 +26,68 @@ docker build -t notebooklm-mcp .
|
|
|
26
26
|
# Run container
|
|
27
27
|
docker run -d \
|
|
28
28
|
--name notebooklm-mcp \
|
|
29
|
+
--restart unless-stopped \
|
|
29
30
|
-p 3000:3000 \
|
|
31
|
+
-p 6080:6080 \
|
|
30
32
|
-v notebooklm-data:/data \
|
|
33
|
+
-e HEADLESS=true \
|
|
34
|
+
-e STEALTH_ENABLED=true \
|
|
35
|
+
-e NOTEBOOKLM_UI_LOCALE=fr \
|
|
31
36
|
notebooklm-mcp
|
|
32
37
|
```
|
|
33
38
|
|
|
34
|
-
##
|
|
39
|
+
## Ports
|
|
35
40
|
|
|
36
|
-
|
|
41
|
+
| Port | Description |
|
|
42
|
+
| ---- | ---------------------------------------- |
|
|
43
|
+
| 3000 | HTTP REST API |
|
|
44
|
+
| 6080 | noVNC web interface (for authentication) |
|
|
45
|
+
|
|
46
|
+
## First-Time Authentication via noVNC
|
|
47
|
+
|
|
48
|
+
Docker includes a **noVNC server** for visual browser access, required for initial Google authentication.
|
|
49
|
+
|
|
50
|
+
### Step 1: Open noVNC
|
|
51
|
+
|
|
52
|
+
Open in your browser:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
http://localhost:6080/vnc.html
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Step 2: Trigger Authentication
|
|
37
59
|
|
|
38
60
|
```bash
|
|
39
|
-
# Option 1: Use the setup-auth endpoint
|
|
40
61
|
curl -X POST http://localhost:3000/setup-auth \
|
|
41
62
|
-H "Content-Type: application/json" \
|
|
42
63
|
-d '{"show_browser": true}'
|
|
64
|
+
```
|
|
43
65
|
|
|
44
|
-
|
|
45
|
-
|
|
66
|
+
### Step 3: Login in noVNC
|
|
67
|
+
|
|
68
|
+
1. The Chromium browser appears in the noVNC window
|
|
69
|
+
2. Complete Google login
|
|
70
|
+
3. Authentication is saved automatically
|
|
71
|
+
4. Browser closes when done
|
|
72
|
+
|
|
73
|
+
### Verify Authentication
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
curl http://localhost:3000/health
|
|
77
|
+
# → {"success":true,"data":{"authenticated":true,...}}
|
|
46
78
|
```
|
|
47
79
|
|
|
48
|
-
|
|
80
|
+
## Alternative: Copy Existing Credentials
|
|
81
|
+
|
|
82
|
+
If you've already authenticated locally:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Copy from local machine to container
|
|
86
|
+
docker cp ~/.local/share/notebooklm-mcp/. notebooklm-mcp:/data/
|
|
87
|
+
|
|
88
|
+
# Restart container
|
|
89
|
+
docker restart notebooklm-mcp
|
|
90
|
+
```
|
|
49
91
|
|
|
50
92
|
## Configuration
|
|
51
93
|
|
|
@@ -60,6 +102,8 @@ docker cp ~/.local/share/notebooklm-mcp/. notebooklm-mcp:/data/
|
|
|
60
102
|
| `NOTEBOOKLM_DATA_DIR` | `/data` | Data directory path |
|
|
61
103
|
| `NOTEBOOKLM_UI_LOCALE` | `fr` | UI language (fr/en) |
|
|
62
104
|
| `AUTO_LOGIN_ENABLED` | `false` | Enable auto-login |
|
|
105
|
+
| `ENABLE_VNC` | `true` | Enable noVNC server |
|
|
106
|
+
| `NOVNC_PORT` | `6080` | noVNC web port |
|
|
63
107
|
|
|
64
108
|
### Custom Configuration
|
|
65
109
|
|
|
@@ -79,15 +123,15 @@ All data is stored in the `/data` volume:
|
|
|
79
123
|
```
|
|
80
124
|
/data/
|
|
81
125
|
├── library.json # Notebook library
|
|
126
|
+
├── chrome_profile/ # Chrome profile (Google session)
|
|
127
|
+
├── browser_state/ # Browser state backup
|
|
82
128
|
├── accounts.json # Account configuration
|
|
83
129
|
├── accounts/ # Per-account data
|
|
84
130
|
│ └── account-xxx/
|
|
85
131
|
│ ├── credentials.enc.json
|
|
86
132
|
│ ├── quota.json
|
|
87
133
|
│ └── state.json
|
|
88
|
-
|
|
89
|
-
│ └── state.json
|
|
90
|
-
└── chrome_profile/ # Chrome profile data
|
|
134
|
+
└── encryption.key # Encryption key
|
|
91
135
|
```
|
|
92
136
|
|
|
93
137
|
### Backup
|
|
@@ -106,6 +150,46 @@ docker run --rm \
|
|
|
106
150
|
alpine tar xzf /backup/notebooklm-backup.tar.gz -C /data
|
|
107
151
|
```
|
|
108
152
|
|
|
153
|
+
## NAS Deployment (Synology, QNAP)
|
|
154
|
+
|
|
155
|
+
### Build and Export
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# On your local machine
|
|
159
|
+
npm run build
|
|
160
|
+
docker build -t notebooklm-mcp:latest .
|
|
161
|
+
docker save notebooklm-mcp:latest | gzip > notebooklm-mcp.tar.gz
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Upload and Deploy
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# Upload to NAS
|
|
168
|
+
scp notebooklm-mcp.tar.gz user@nas:/volume1/docker/
|
|
169
|
+
|
|
170
|
+
# SSH to NAS and load
|
|
171
|
+
ssh user@nas
|
|
172
|
+
docker load < /volume1/docker/notebooklm-mcp.tar.gz
|
|
173
|
+
|
|
174
|
+
# Run container
|
|
175
|
+
docker run -d \
|
|
176
|
+
--name notebooklm-mcp \
|
|
177
|
+
--restart unless-stopped \
|
|
178
|
+
-p 3000:3000 \
|
|
179
|
+
-p 6080:6080 \
|
|
180
|
+
-v /volume1/docker/notebooklm/data:/data \
|
|
181
|
+
-e HEADLESS=true \
|
|
182
|
+
-e STEALTH_ENABLED=true \
|
|
183
|
+
-e NOTEBOOKLM_UI_LOCALE=fr \
|
|
184
|
+
notebooklm-mcp:latest
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Authenticate via noVNC
|
|
188
|
+
|
|
189
|
+
1. Open `http://nas-ip:6080/vnc.html`
|
|
190
|
+
2. Run setup-auth command
|
|
191
|
+
3. Complete Google login in VNC window
|
|
192
|
+
|
|
109
193
|
## Resource Requirements
|
|
110
194
|
|
|
111
195
|
| Resource | Minimum | Recommended |
|
|
@@ -114,7 +198,7 @@ docker run --rm \
|
|
|
114
198
|
| CPU | 1 core | 2 cores |
|
|
115
199
|
| Disk | 500 MB | 2 GB |
|
|
116
200
|
|
|
117
|
-
Chromium
|
|
201
|
+
Chromium uses significant memory. Adjust limits in `docker-compose.yml`:
|
|
118
202
|
|
|
119
203
|
```yaml
|
|
120
204
|
deploy:
|
|
@@ -131,13 +215,10 @@ deploy:
|
|
|
131
215
|
|
|
132
216
|
```bash
|
|
133
217
|
# Check logs
|
|
134
|
-
docker
|
|
218
|
+
docker logs notebooklm-mcp
|
|
135
219
|
|
|
136
220
|
# Check container status
|
|
137
221
|
docker ps -a
|
|
138
|
-
|
|
139
|
-
# Inspect container
|
|
140
|
-
docker inspect notebooklm-mcp
|
|
141
222
|
```
|
|
142
223
|
|
|
143
224
|
### Browser issues
|
|
@@ -145,8 +226,14 @@ docker inspect notebooklm-mcp
|
|
|
145
226
|
If Chromium fails to launch:
|
|
146
227
|
|
|
147
228
|
1. Ensure sufficient memory (minimum 512MB)
|
|
148
|
-
2. Check for
|
|
149
|
-
3. Try rebuilding: `docker
|
|
229
|
+
2. Check logs for errors
|
|
230
|
+
3. Try rebuilding: `docker build --no-cache -t notebooklm-mcp .`
|
|
231
|
+
|
|
232
|
+
### noVNC not accessible
|
|
233
|
+
|
|
234
|
+
1. Verify port 6080 is exposed
|
|
235
|
+
2. Check firewall rules
|
|
236
|
+
3. Verify container is running: `docker ps`
|
|
150
237
|
|
|
151
238
|
### Authentication issues
|
|
152
239
|
|
|
@@ -154,8 +241,7 @@ If Chromium fails to launch:
|
|
|
154
241
|
# Check health endpoint
|
|
155
242
|
curl http://localhost:3000/health
|
|
156
243
|
|
|
157
|
-
# If not authenticated,
|
|
158
|
-
curl -X POST http://localhost:3000/setup-auth
|
|
244
|
+
# If not authenticated, use noVNC method above
|
|
159
245
|
```
|
|
160
246
|
|
|
161
247
|
### Permission issues
|
|
@@ -183,51 +269,35 @@ server {
|
|
|
183
269
|
proxy_set_header X-Real-IP $remote_addr;
|
|
184
270
|
proxy_cache_bypass $http_upgrade;
|
|
185
271
|
}
|
|
186
|
-
}
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### With Traefik
|
|
190
272
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
273
|
+
# noVNC (restrict access!)
|
|
274
|
+
location /vnc {
|
|
275
|
+
proxy_pass http://localhost:6080;
|
|
276
|
+
proxy_http_version 1.1;
|
|
277
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
278
|
+
proxy_set_header Connection 'upgrade';
|
|
279
|
+
# Add authentication here!
|
|
280
|
+
}
|
|
281
|
+
}
|
|
198
282
|
```
|
|
199
283
|
|
|
200
284
|
### Security Considerations
|
|
201
285
|
|
|
202
|
-
1. **Don't expose port
|
|
203
|
-
2. **Use
|
|
286
|
+
1. **Don't expose port 6080 publicly** - noVNC gives browser access
|
|
287
|
+
2. **Use a reverse proxy with authentication** for production
|
|
204
288
|
3. **Regular backups** of the data volume
|
|
205
289
|
4. **Monitor container health** using the healthcheck endpoint
|
|
206
290
|
|
|
207
|
-
##
|
|
208
|
-
|
|
209
|
-
```bash
|
|
210
|
-
# Build with specific Node version
|
|
211
|
-
docker build --build-arg NODE_VERSION=20 -t notebooklm-mcp:custom .
|
|
291
|
+
## Architecture
|
|
212
292
|
|
|
213
|
-
# Multi-platform build
|
|
214
|
-
docker buildx build --platform linux/amd64,linux/arm64 -t notebooklm-mcp:multi .
|
|
215
293
|
```
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
notebooklm-mcp:
|
|
226
|
-
build:
|
|
227
|
-
context: .
|
|
228
|
-
dockerfile: Dockerfile.dev
|
|
229
|
-
volumes:
|
|
230
|
-
- .:/app
|
|
231
|
-
- /app/node_modules
|
|
232
|
-
command: npm run dev:http
|
|
294
|
+
Docker Container
|
|
295
|
+
├── Node.js HTTP Server (port 3000)
|
|
296
|
+
├── Xvfb (:99) - Virtual display
|
|
297
|
+
├── x11vnc - VNC server
|
|
298
|
+
├── websockify/noVNC (port 6080) - Web VNC
|
|
299
|
+
└── Chromium browser
|
|
300
|
+
|
|
301
|
+
User → noVNC (6080) → VNC → Xvfb → Chromium
|
|
302
|
+
User → HTTP API (3000) → Node.js → Chromium
|
|
233
303
|
```
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
| [**05-TROUBLESHOOTING.md**](./05-TROUBLESHOOTING.md) | Solutions to common problems | Debugging, errors |
|
|
24
24
|
| [**06-NOTEBOOK-LIBRARY.md**](./06-NOTEBOOK-LIBRARY.md) | Multi-notebook library management | Notebook management |
|
|
25
25
|
| [**07-AUTO-DISCOVERY.md**](./07-AUTO-DISCOVERY.md) | Autonomous resource discovery pattern | Auto-discovery feature |
|
|
26
|
+
| [**08-DOCKER.md**](./08-DOCKER.md) | Docker deployment with noVNC | Docker, NAS users |
|
|
26
27
|
| [**11-MULTI-ACCOUNT.md**](./11-MULTI-ACCOUNT.md) | Multi-account management and rotation | Rate limit handling |
|
|
27
28
|
| [**Test Scripts**](../scripts/README.md) | PowerShell validation scripts | Testing, CI/CD |
|
|
28
29
|
|
|
@@ -64,6 +65,12 @@
|
|
|
64
65
|
2. [Automatic rotation](./11-MULTI-ACCOUNT.md#automatic-rotation-flow) — How rotation works
|
|
65
66
|
3. [Quota management](./11-MULTI-ACCOUNT.md#troubleshooting) — Reset and monitor quotas
|
|
66
67
|
|
|
68
|
+
### I want to deploy on Docker/NAS
|
|
69
|
+
|
|
70
|
+
1. [Docker guide](./08-DOCKER.md) — Complete Docker deployment
|
|
71
|
+
2. [noVNC authentication](./08-DOCKER.md#first-time-authentication-via-novnc) — Visual auth in browser
|
|
72
|
+
3. [NAS deployment](./08-DOCKER.md#nas-deployment-synology-qnap) — Synology, QNAP setup
|
|
73
|
+
|
|
67
74
|
---
|
|
68
75
|
|
|
69
76
|
## 📖 Quick Reference
|
|
@@ -203,5 +210,5 @@ Or directly propose a PR to improve the documentation!
|
|
|
203
210
|
|
|
204
211
|
---
|
|
205
212
|
|
|
206
|
-
**Documentation updated:**
|
|
207
|
-
**Version:** 1.
|
|
213
|
+
**Documentation updated:** 2026-01-05
|
|
214
|
+
**Version:** 1.5.3
|
|
File without changes
|
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
# Automatic installation script - NotebookLM MCP HTTP Server
|
|
2
|
-
# Version: 1.3.0
|
|
3
|
-
# Description: Installs all dependencies and compiles the project
|
|
4
|
-
|
|
5
|
-
Write-Host "╔══════════════════════════════════════════════════════════╗" -ForegroundColor Cyan
|
|
6
|
-
Write-Host "║ NotebookLM MCP - Automatic Installation ║" -ForegroundColor Cyan
|
|
7
|
-
Write-Host "╚══════════════════════════════════════════════════════════╝" -ForegroundColor Cyan
|
|
8
|
-
Write-Host ""
|
|
9
|
-
|
|
10
|
-
# Check Node.js
|
|
11
|
-
Write-Host "🔍 Checking Node.js..." -ForegroundColor Yellow
|
|
12
|
-
try {
|
|
13
|
-
$nodeVersion = node --version
|
|
14
|
-
$npmVersion = npm --version
|
|
15
|
-
Write-Host "✅ Node.js $nodeVersion found" -ForegroundColor Green
|
|
16
|
-
Write-Host "✅ npm $npmVersion found" -ForegroundColor Green
|
|
17
|
-
} catch {
|
|
18
|
-
Write-Host "❌ Node.js is not installed!" -ForegroundColor Red
|
|
19
|
-
Write-Host ""
|
|
20
|
-
Write-Host "📥 Download Node.js from: https://nodejs.org/" -ForegroundColor Yellow
|
|
21
|
-
Write-Host " Install the LTS version and run this script again." -ForegroundColor Yellow
|
|
22
|
-
exit 1
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
Write-Host ""
|
|
26
|
-
|
|
27
|
-
# Check that we're in the right directory
|
|
28
|
-
Write-Host "🔍 Checking directory..." -ForegroundColor Yellow
|
|
29
|
-
if (-not (Test-Path "package.json")) {
|
|
30
|
-
Write-Host "❌ package.json file not found!" -ForegroundColor Red
|
|
31
|
-
Write-Host " Make sure you are in the project root directory." -ForegroundColor Yellow
|
|
32
|
-
exit 1
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
$projectName = (Get-Content "package.json" -Raw | ConvertFrom-Json).name
|
|
36
|
-
Write-Host "✅ Project detected: $projectName" -ForegroundColor Green
|
|
37
|
-
Write-Host ""
|
|
38
|
-
|
|
39
|
-
# Install dependencies
|
|
40
|
-
Write-Host "📦 Installing npm dependencies..." -ForegroundColor Yellow
|
|
41
|
-
Write-Host " (This may take 2-5 minutes)" -ForegroundColor Gray
|
|
42
|
-
Write-Host ""
|
|
43
|
-
|
|
44
|
-
npm install
|
|
45
|
-
|
|
46
|
-
if ($LASTEXITCODE -ne 0) {
|
|
47
|
-
Write-Host ""
|
|
48
|
-
Write-Host "❌ Error during dependency installation" -ForegroundColor Red
|
|
49
|
-
Write-Host " Check your Internet connection and try again." -ForegroundColor Yellow
|
|
50
|
-
exit 1
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
Write-Host ""
|
|
54
|
-
Write-Host "✅ Dependencies installed successfully!" -ForegroundColor Green
|
|
55
|
-
Write-Host ""
|
|
56
|
-
|
|
57
|
-
# TypeScript compilation
|
|
58
|
-
Write-Host "🔨 Compiling project..." -ForegroundColor Yellow
|
|
59
|
-
npm run build
|
|
60
|
-
|
|
61
|
-
if ($LASTEXITCODE -ne 0) {
|
|
62
|
-
Write-Host ""
|
|
63
|
-
Write-Host "❌ Error during compilation" -ForegroundColor Red
|
|
64
|
-
exit 1
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
Write-Host ""
|
|
68
|
-
Write-Host "✅ Compilation successful!" -ForegroundColor Green
|
|
69
|
-
Write-Host ""
|
|
70
|
-
|
|
71
|
-
# Final checks
|
|
72
|
-
Write-Host "🔍 Final checks..." -ForegroundColor Yellow
|
|
73
|
-
|
|
74
|
-
$checks = @(
|
|
75
|
-
@{File = "dist\http-wrapper.js"; Description = "HTTP Server"},
|
|
76
|
-
@{File = "dist\index.js"; Description = "MCP Server"},
|
|
77
|
-
@{File = "node_modules\express"; Description = "Express.js"}
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
$allOk = $true
|
|
81
|
-
foreach ($check in $checks) {
|
|
82
|
-
if (Test-Path $check.File) {
|
|
83
|
-
Write-Host " ✅ $($check.Description)" -ForegroundColor Green
|
|
84
|
-
} else {
|
|
85
|
-
Write-Host " ❌ $($check.Description) - $($check.File) not found" -ForegroundColor Red
|
|
86
|
-
$allOk = $false
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
Write-Host ""
|
|
91
|
-
|
|
92
|
-
if ($allOk) {
|
|
93
|
-
Write-Host "╔══════════════════════════════════════════════════════════╗" -ForegroundColor Green
|
|
94
|
-
Write-Host "║ ✅ INSTALLATION COMPLETED SUCCESSFULLY! ║" -ForegroundColor Green
|
|
95
|
-
Write-Host "╚══════════════════════════════════════════════════════════╝" -ForegroundColor Green
|
|
96
|
-
Write-Host ""
|
|
97
|
-
Write-Host "📋 Next steps:" -ForegroundColor Cyan
|
|
98
|
-
Write-Host ""
|
|
99
|
-
Write-Host "1️⃣ Configure Google authentication (one time only):" -ForegroundColor White
|
|
100
|
-
Write-Host " .\deployment\scripts\setup-auth.ps1" -ForegroundColor Gray
|
|
101
|
-
Write-Host ""
|
|
102
|
-
Write-Host "2️⃣ Start the server:" -ForegroundColor White
|
|
103
|
-
Write-Host " npm run start:http" -ForegroundColor Gray
|
|
104
|
-
Write-Host ""
|
|
105
|
-
Write-Host "3️⃣ Test the server:" -ForegroundColor White
|
|
106
|
-
Write-Host " curl http://localhost:3000/health" -ForegroundColor Gray
|
|
107
|
-
Write-Host ""
|
|
108
|
-
Write-Host "📖 Complete documentation: .\deployment\docs\" -ForegroundColor Cyan
|
|
109
|
-
Write-Host ""
|
|
110
|
-
} else {
|
|
111
|
-
Write-Host "❌ Installation encountered problems" -ForegroundColor Red
|
|
112
|
-
Write-Host " See: .\deployment\docs\05-TROUBLESHOOTING.md" -ForegroundColor Yellow
|
|
113
|
-
exit 1
|
|
114
|
-
}
|
|
1
|
+
# Automatic installation script - NotebookLM MCP HTTP Server
|
|
2
|
+
# Version: 1.3.0
|
|
3
|
+
# Description: Installs all dependencies and compiles the project
|
|
4
|
+
|
|
5
|
+
Write-Host "╔══════════════════════════════════════════════════════════╗" -ForegroundColor Cyan
|
|
6
|
+
Write-Host "║ NotebookLM MCP - Automatic Installation ║" -ForegroundColor Cyan
|
|
7
|
+
Write-Host "╚══════════════════════════════════════════════════════════╝" -ForegroundColor Cyan
|
|
8
|
+
Write-Host ""
|
|
9
|
+
|
|
10
|
+
# Check Node.js
|
|
11
|
+
Write-Host "🔍 Checking Node.js..." -ForegroundColor Yellow
|
|
12
|
+
try {
|
|
13
|
+
$nodeVersion = node --version
|
|
14
|
+
$npmVersion = npm --version
|
|
15
|
+
Write-Host "✅ Node.js $nodeVersion found" -ForegroundColor Green
|
|
16
|
+
Write-Host "✅ npm $npmVersion found" -ForegroundColor Green
|
|
17
|
+
} catch {
|
|
18
|
+
Write-Host "❌ Node.js is not installed!" -ForegroundColor Red
|
|
19
|
+
Write-Host ""
|
|
20
|
+
Write-Host "📥 Download Node.js from: https://nodejs.org/" -ForegroundColor Yellow
|
|
21
|
+
Write-Host " Install the LTS version and run this script again." -ForegroundColor Yellow
|
|
22
|
+
exit 1
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
Write-Host ""
|
|
26
|
+
|
|
27
|
+
# Check that we're in the right directory
|
|
28
|
+
Write-Host "🔍 Checking directory..." -ForegroundColor Yellow
|
|
29
|
+
if (-not (Test-Path "package.json")) {
|
|
30
|
+
Write-Host "❌ package.json file not found!" -ForegroundColor Red
|
|
31
|
+
Write-Host " Make sure you are in the project root directory." -ForegroundColor Yellow
|
|
32
|
+
exit 1
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
$projectName = (Get-Content "package.json" -Raw | ConvertFrom-Json).name
|
|
36
|
+
Write-Host "✅ Project detected: $projectName" -ForegroundColor Green
|
|
37
|
+
Write-Host ""
|
|
38
|
+
|
|
39
|
+
# Install dependencies
|
|
40
|
+
Write-Host "📦 Installing npm dependencies..." -ForegroundColor Yellow
|
|
41
|
+
Write-Host " (This may take 2-5 minutes)" -ForegroundColor Gray
|
|
42
|
+
Write-Host ""
|
|
43
|
+
|
|
44
|
+
npm install
|
|
45
|
+
|
|
46
|
+
if ($LASTEXITCODE -ne 0) {
|
|
47
|
+
Write-Host ""
|
|
48
|
+
Write-Host "❌ Error during dependency installation" -ForegroundColor Red
|
|
49
|
+
Write-Host " Check your Internet connection and try again." -ForegroundColor Yellow
|
|
50
|
+
exit 1
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
Write-Host ""
|
|
54
|
+
Write-Host "✅ Dependencies installed successfully!" -ForegroundColor Green
|
|
55
|
+
Write-Host ""
|
|
56
|
+
|
|
57
|
+
# TypeScript compilation
|
|
58
|
+
Write-Host "🔨 Compiling project..." -ForegroundColor Yellow
|
|
59
|
+
npm run build
|
|
60
|
+
|
|
61
|
+
if ($LASTEXITCODE -ne 0) {
|
|
62
|
+
Write-Host ""
|
|
63
|
+
Write-Host "❌ Error during compilation" -ForegroundColor Red
|
|
64
|
+
exit 1
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
Write-Host ""
|
|
68
|
+
Write-Host "✅ Compilation successful!" -ForegroundColor Green
|
|
69
|
+
Write-Host ""
|
|
70
|
+
|
|
71
|
+
# Final checks
|
|
72
|
+
Write-Host "🔍 Final checks..." -ForegroundColor Yellow
|
|
73
|
+
|
|
74
|
+
$checks = @(
|
|
75
|
+
@{File = "dist\http-wrapper.js"; Description = "HTTP Server"},
|
|
76
|
+
@{File = "dist\index.js"; Description = "MCP Server"},
|
|
77
|
+
@{File = "node_modules\express"; Description = "Express.js"}
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
$allOk = $true
|
|
81
|
+
foreach ($check in $checks) {
|
|
82
|
+
if (Test-Path $check.File) {
|
|
83
|
+
Write-Host " ✅ $($check.Description)" -ForegroundColor Green
|
|
84
|
+
} else {
|
|
85
|
+
Write-Host " ❌ $($check.Description) - $($check.File) not found" -ForegroundColor Red
|
|
86
|
+
$allOk = $false
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
Write-Host ""
|
|
91
|
+
|
|
92
|
+
if ($allOk) {
|
|
93
|
+
Write-Host "╔══════════════════════════════════════════════════════════╗" -ForegroundColor Green
|
|
94
|
+
Write-Host "║ ✅ INSTALLATION COMPLETED SUCCESSFULLY! ║" -ForegroundColor Green
|
|
95
|
+
Write-Host "╚══════════════════════════════════════════════════════════╝" -ForegroundColor Green
|
|
96
|
+
Write-Host ""
|
|
97
|
+
Write-Host "📋 Next steps:" -ForegroundColor Cyan
|
|
98
|
+
Write-Host ""
|
|
99
|
+
Write-Host "1️⃣ Configure Google authentication (one time only):" -ForegroundColor White
|
|
100
|
+
Write-Host " .\deployment\scripts\setup-auth.ps1" -ForegroundColor Gray
|
|
101
|
+
Write-Host ""
|
|
102
|
+
Write-Host "2️⃣ Start the server:" -ForegroundColor White
|
|
103
|
+
Write-Host " npm run start:http" -ForegroundColor Gray
|
|
104
|
+
Write-Host ""
|
|
105
|
+
Write-Host "3️⃣ Test the server:" -ForegroundColor White
|
|
106
|
+
Write-Host " curl http://localhost:3000/health" -ForegroundColor Gray
|
|
107
|
+
Write-Host ""
|
|
108
|
+
Write-Host "📖 Complete documentation: .\deployment\docs\" -ForegroundColor Cyan
|
|
109
|
+
Write-Host ""
|
|
110
|
+
} else {
|
|
111
|
+
Write-Host "❌ Installation encountered problems" -ForegroundColor Red
|
|
112
|
+
Write-Host " See: .\deployment\docs\05-TROUBLESHOOTING.md" -ForegroundColor Yellow
|
|
113
|
+
exit 1
|
|
114
|
+
}
|