@roomi-fields/notebooklm-mcp 1.5.2 → 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 -201
- 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 +303 -0
- 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 +45 -28
- 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 +33 -13
- 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 +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +15 -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 +275 -7
- 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 +38 -5
- package/dist/session/shared-context-manager.js.map +1 -1
- package/dist/startup/startup-manager.d.ts +60 -0
- package/dist/startup/startup-manager.d.ts.map +1 -0
- package/dist/startup/startup-manager.js +468 -0
- package/dist/startup/startup-manager.js.map +1 -0
- 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 +55 -34
- 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 -0
- 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 +37 -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
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# Docker Deployment
|
|
2
|
+
|
|
3
|
+
Run NotebookLM MCP Server in a Docker container for isolated, reproducible deployments.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
### Using Docker Compose (Recommended)
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Build and start
|
|
11
|
+
docker-compose up -d
|
|
12
|
+
|
|
13
|
+
# View logs
|
|
14
|
+
docker-compose logs -f
|
|
15
|
+
|
|
16
|
+
# Stop
|
|
17
|
+
docker-compose down
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Using Docker CLI
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Build image
|
|
24
|
+
docker build -t notebooklm-mcp .
|
|
25
|
+
|
|
26
|
+
# Run container
|
|
27
|
+
docker run -d \
|
|
28
|
+
--name notebooklm-mcp \
|
|
29
|
+
--restart unless-stopped \
|
|
30
|
+
-p 3000:3000 \
|
|
31
|
+
-p 6080:6080 \
|
|
32
|
+
-v notebooklm-data:/data \
|
|
33
|
+
-e HEADLESS=true \
|
|
34
|
+
-e STEALTH_ENABLED=true \
|
|
35
|
+
-e NOTEBOOKLM_UI_LOCALE=fr \
|
|
36
|
+
notebooklm-mcp
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Ports
|
|
40
|
+
|
|
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
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
curl -X POST http://localhost:3000/setup-auth \
|
|
62
|
+
-H "Content-Type: application/json" \
|
|
63
|
+
-d '{"show_browser": true}'
|
|
64
|
+
```
|
|
65
|
+
|
|
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,...}}
|
|
78
|
+
```
|
|
79
|
+
|
|
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
|
+
```
|
|
91
|
+
|
|
92
|
+
## Configuration
|
|
93
|
+
|
|
94
|
+
### Environment Variables
|
|
95
|
+
|
|
96
|
+
| Variable | Default | Description |
|
|
97
|
+
| ---------------------- | --------- | --------------------- |
|
|
98
|
+
| `HTTP_PORT` | `3000` | HTTP server port |
|
|
99
|
+
| `HTTP_HOST` | `0.0.0.0` | HTTP server host |
|
|
100
|
+
| `HEADLESS` | `true` | Run browser headless |
|
|
101
|
+
| `STEALTH_ENABLED` | `true` | Enable anti-detection |
|
|
102
|
+
| `NOTEBOOKLM_DATA_DIR` | `/data` | Data directory path |
|
|
103
|
+
| `NOTEBOOKLM_UI_LOCALE` | `fr` | UI language (fr/en) |
|
|
104
|
+
| `AUTO_LOGIN_ENABLED` | `false` | Enable auto-login |
|
|
105
|
+
| `ENABLE_VNC` | `true` | Enable noVNC server |
|
|
106
|
+
| `NOVNC_PORT` | `6080` | noVNC web port |
|
|
107
|
+
|
|
108
|
+
### Custom Configuration
|
|
109
|
+
|
|
110
|
+
Edit `docker-compose.yml` to customize:
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
environment:
|
|
114
|
+
- HEADLESS=true
|
|
115
|
+
- NOTEBOOKLM_UI_LOCALE=en
|
|
116
|
+
- AUTO_LOGIN_ENABLED=true
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Data Persistence
|
|
120
|
+
|
|
121
|
+
All data is stored in the `/data` volume:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
/data/
|
|
125
|
+
├── library.json # Notebook library
|
|
126
|
+
├── chrome_profile/ # Chrome profile (Google session)
|
|
127
|
+
├── browser_state/ # Browser state backup
|
|
128
|
+
├── accounts.json # Account configuration
|
|
129
|
+
├── accounts/ # Per-account data
|
|
130
|
+
│ └── account-xxx/
|
|
131
|
+
│ ├── credentials.enc.json
|
|
132
|
+
│ ├── quota.json
|
|
133
|
+
│ └── state.json
|
|
134
|
+
└── encryption.key # Encryption key
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Backup
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Backup data volume
|
|
141
|
+
docker run --rm \
|
|
142
|
+
-v notebooklm-mcp-data:/data:ro \
|
|
143
|
+
-v $(pwd):/backup \
|
|
144
|
+
alpine tar czf /backup/notebooklm-backup.tar.gz -C /data .
|
|
145
|
+
|
|
146
|
+
# Restore
|
|
147
|
+
docker run --rm \
|
|
148
|
+
-v notebooklm-mcp-data:/data \
|
|
149
|
+
-v $(pwd):/backup \
|
|
150
|
+
alpine tar xzf /backup/notebooklm-backup.tar.gz -C /data
|
|
151
|
+
```
|
|
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
|
+
|
|
193
|
+
## Resource Requirements
|
|
194
|
+
|
|
195
|
+
| Resource | Minimum | Recommended |
|
|
196
|
+
| -------- | ------- | ----------- |
|
|
197
|
+
| Memory | 512 MB | 2 GB |
|
|
198
|
+
| CPU | 1 core | 2 cores |
|
|
199
|
+
| Disk | 500 MB | 2 GB |
|
|
200
|
+
|
|
201
|
+
Chromium uses significant memory. Adjust limits in `docker-compose.yml`:
|
|
202
|
+
|
|
203
|
+
```yaml
|
|
204
|
+
deploy:
|
|
205
|
+
resources:
|
|
206
|
+
limits:
|
|
207
|
+
memory: 4G
|
|
208
|
+
reservations:
|
|
209
|
+
memory: 1G
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Troubleshooting
|
|
213
|
+
|
|
214
|
+
### Container won't start
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# Check logs
|
|
218
|
+
docker logs notebooklm-mcp
|
|
219
|
+
|
|
220
|
+
# Check container status
|
|
221
|
+
docker ps -a
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Browser issues
|
|
225
|
+
|
|
226
|
+
If Chromium fails to launch:
|
|
227
|
+
|
|
228
|
+
1. Ensure sufficient memory (minimum 512MB)
|
|
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`
|
|
237
|
+
|
|
238
|
+
### Authentication issues
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
# Check health endpoint
|
|
242
|
+
curl http://localhost:3000/health
|
|
243
|
+
|
|
244
|
+
# If not authenticated, use noVNC method above
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Permission issues
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
# Fix volume permissions
|
|
251
|
+
docker run --rm -v notebooklm-mcp-data:/data alpine chown -R 1000:1000 /data
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Production Deployment
|
|
255
|
+
|
|
256
|
+
### With Reverse Proxy (nginx)
|
|
257
|
+
|
|
258
|
+
```nginx
|
|
259
|
+
server {
|
|
260
|
+
listen 80;
|
|
261
|
+
server_name notebooklm.example.com;
|
|
262
|
+
|
|
263
|
+
location / {
|
|
264
|
+
proxy_pass http://localhost:3000;
|
|
265
|
+
proxy_http_version 1.1;
|
|
266
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
267
|
+
proxy_set_header Connection 'upgrade';
|
|
268
|
+
proxy_set_header Host $host;
|
|
269
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
270
|
+
proxy_cache_bypass $http_upgrade;
|
|
271
|
+
}
|
|
272
|
+
|
|
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
|
+
}
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Security Considerations
|
|
285
|
+
|
|
286
|
+
1. **Don't expose port 6080 publicly** - noVNC gives browser access
|
|
287
|
+
2. **Use a reverse proxy with authentication** for production
|
|
288
|
+
3. **Regular backups** of the data volume
|
|
289
|
+
4. **Monitor container health** using the healthcheck endpoint
|
|
290
|
+
|
|
291
|
+
## Architecture
|
|
292
|
+
|
|
293
|
+
```
|
|
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
|
|
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
|
+
}
|