@roomi-fields/notebooklm-mcp 1.3.6 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +71 -34
  3. package/deployment/INDEX.md +292 -0
  4. package/deployment/PACKAGE-FILES.txt +180 -0
  5. package/deployment/QUICK-START.md +100 -0
  6. package/deployment/docs/01-INSTALL.md +611 -0
  7. package/deployment/docs/02-CONFIGURATION.md +404 -0
  8. package/deployment/docs/03-API.md +1691 -0
  9. package/deployment/docs/04-N8N-INTEGRATION.md +373 -0
  10. package/deployment/docs/05-TROUBLESHOOTING.md +429 -0
  11. package/deployment/docs/06-NOTEBOOK-LIBRARY.md +692 -0
  12. package/deployment/docs/07-AUTO-DISCOVERY.md +236 -0
  13. package/deployment/docs/08-WSL-USAGE.md +363 -0
  14. package/deployment/docs/09-MULTI-INTERFACE.md +293 -0
  15. package/deployment/docs/10-CONTENT-MANAGEMENT.md +421 -0
  16. package/deployment/docs/11-MULTI-ACCOUNT.md +295 -0
  17. package/deployment/docs/README.md +207 -0
  18. package/deployment/scripts/README.md +564 -0
  19. package/deployment/scripts/install.ps1 +114 -0
  20. package/deployment/scripts/setup-auth.ps1 +217 -0
  21. package/deployment/scripts/start-server.ps1 +72 -0
  22. package/deployment/scripts/stop-server.ps1 +51 -0
  23. package/deployment/scripts/test-api.ps1 +651 -0
  24. package/deployment/scripts/test-auth.ps1 +323 -0
  25. package/deployment/scripts/test-auto-discovery.ps1 +295 -0
  26. package/deployment/scripts/test-cors.ps1 +398 -0
  27. package/deployment/scripts/test-errors.ps1 +581 -0
  28. package/deployment/scripts/test-server.ps1 +140 -0
  29. package/deployment/scripts/test-sessions.ps1 +426 -0
  30. package/deployment/scripts/test-validation.ps1 +299 -0
  31. package/dist/accounts/account-manager.d.ts +163 -0
  32. package/dist/accounts/account-manager.d.ts.map +1 -0
  33. package/dist/accounts/account-manager.js +614 -0
  34. package/dist/accounts/account-manager.js.map +1 -0
  35. package/dist/accounts/auto-login-manager.d.ts +62 -0
  36. package/dist/accounts/auto-login-manager.d.ts.map +1 -0
  37. package/dist/accounts/auto-login-manager.js +537 -0
  38. package/dist/accounts/auto-login-manager.js.map +1 -0
  39. package/dist/accounts/crypto.d.ts +45 -0
  40. package/dist/accounts/crypto.d.ts.map +1 -0
  41. package/dist/accounts/crypto.js +138 -0
  42. package/dist/accounts/crypto.js.map +1 -0
  43. package/dist/accounts/index.d.ts +14 -0
  44. package/dist/accounts/index.d.ts.map +1 -0
  45. package/dist/accounts/index.js +14 -0
  46. package/dist/accounts/index.js.map +1 -0
  47. package/dist/accounts/types.d.ts +103 -0
  48. package/dist/accounts/types.d.ts.map +1 -0
  49. package/dist/accounts/types.js +7 -0
  50. package/dist/accounts/types.js.map +1 -0
  51. package/dist/auth/auth-manager.d.ts +9 -2
  52. package/dist/auth/auth-manager.d.ts.map +1 -1
  53. package/dist/auth/auth-manager.js +60 -6
  54. package/dist/auth/auth-manager.js.map +1 -1
  55. package/dist/auto-discovery/auto-discovery.d.ts.map +1 -1
  56. package/dist/auto-discovery/auto-discovery.js +2 -1
  57. package/dist/auto-discovery/auto-discovery.js.map +1 -1
  58. package/dist/cli/accounts.d.ts +13 -0
  59. package/dist/cli/accounts.d.ts.map +1 -0
  60. package/dist/cli/accounts.js +195 -0
  61. package/dist/cli/accounts.js.map +1 -0
  62. package/dist/config.d.ts +1 -0
  63. package/dist/config.d.ts.map +1 -1
  64. package/dist/config.js +24 -0
  65. package/dist/config.js.map +1 -1
  66. package/dist/content/content-generator.d.ts +153 -0
  67. package/dist/content/content-generator.d.ts.map +1 -0
  68. package/dist/content/content-generator.js +637 -0
  69. package/dist/content/content-generator.js.map +1 -0
  70. package/dist/content/content-manager.d.ts +364 -0
  71. package/dist/content/content-manager.d.ts.map +1 -0
  72. package/dist/content/content-manager.js +3841 -0
  73. package/dist/content/content-manager.js.map +1 -0
  74. package/dist/content/content-templates.d.ts +183 -0
  75. package/dist/content/content-templates.d.ts.map +1 -0
  76. package/dist/content/content-templates.js +719 -0
  77. package/dist/content/content-templates.js.map +1 -0
  78. package/dist/content/index.d.ts +14 -0
  79. package/dist/content/index.d.ts.map +1 -0
  80. package/dist/content/index.js +14 -0
  81. package/dist/content/index.js.map +1 -0
  82. package/dist/content/types.d.ts +285 -0
  83. package/dist/content/types.d.ts.map +1 -0
  84. package/dist/content/types.js +10 -0
  85. package/dist/content/types.js.map +1 -0
  86. package/dist/errors.d.ts +1 -1
  87. package/dist/errors.d.ts.map +1 -1
  88. package/dist/errors.js.map +1 -1
  89. package/dist/http-wrapper.d.ts +7 -0
  90. package/dist/http-wrapper.d.ts.map +1 -1
  91. package/dist/http-wrapper.js +449 -29
  92. package/dist/http-wrapper.js.map +1 -1
  93. package/dist/i18n/en.json +120 -0
  94. package/dist/i18n/fr.json +120 -0
  95. package/dist/i18n/index.d.ts +168 -0
  96. package/dist/i18n/index.d.ts.map +1 -0
  97. package/dist/i18n/index.js +213 -0
  98. package/dist/i18n/index.js.map +1 -0
  99. package/dist/index.js +26 -2
  100. package/dist/index.js.map +1 -1
  101. package/dist/library/notebook-library.d.ts +4 -0
  102. package/dist/library/notebook-library.d.ts.map +1 -1
  103. package/dist/library/notebook-library.js +20 -3
  104. package/dist/library/notebook-library.js.map +1 -1
  105. package/dist/session/browser-session.d.ts +35 -8
  106. package/dist/session/browser-session.d.ts.map +1 -1
  107. package/dist/session/browser-session.js +243 -28
  108. package/dist/session/browser-session.js.map +1 -1
  109. package/dist/session/session-manager.d.ts +6 -0
  110. package/dist/session/session-manager.d.ts.map +1 -1
  111. package/dist/session/session-manager.js +46 -14
  112. package/dist/session/session-manager.js.map +1 -1
  113. package/dist/session/shared-context-manager.d.ts +3 -3
  114. package/dist/session/shared-context-manager.d.ts.map +1 -1
  115. package/dist/session/shared-context-manager.js +10 -7
  116. package/dist/session/shared-context-manager.js.map +1 -1
  117. package/dist/stdio-http-proxy.d.ts +24 -0
  118. package/dist/stdio-http-proxy.d.ts.map +1 -0
  119. package/dist/stdio-http-proxy.js +592 -0
  120. package/dist/stdio-http-proxy.js.map +1 -0
  121. package/dist/tools/index.d.ts +106 -1
  122. package/dist/tools/index.d.ts.map +1 -1
  123. package/dist/tools/index.js +1028 -7
  124. package/dist/tools/index.js.map +1 -1
  125. package/dist/types.d.ts +81 -17
  126. package/dist/types.d.ts.map +1 -1
  127. package/dist/utils/citation-extractor.d.ts +66 -0
  128. package/dist/utils/citation-extractor.d.ts.map +1 -0
  129. package/dist/utils/citation-extractor.js +492 -0
  130. package/dist/utils/citation-extractor.js.map +1 -0
  131. package/dist/utils/page-utils.d.ts +8 -0
  132. package/dist/utils/page-utils.d.ts.map +1 -1
  133. package/dist/utils/page-utils.js +112 -8
  134. package/dist/utils/page-utils.js.map +1 -1
  135. package/docs/ADDING_A_LANGUAGE.md +209 -0
  136. package/docs/ARCHITECTURE_MIGRATION_STUDY.md +894 -0
  137. package/docs/CHROME_PROFILE_LIMITATION.md +15 -1
  138. package/docs/MULTI_ACCOUNT_SYSTEM.md +304 -0
  139. package/package.json +15 -12
  140. package/scripts/archive/add-and-activate-notebook.ps1 +31 -0
  141. package/scripts/archive/add-new-notebook.ps1 +25 -0
  142. package/scripts/archive/add-rom1pey.ps1 +2 -0
  143. package/scripts/archive/add-rpmonster.ps1 +2 -0
  144. package/scripts/archive/add-source-debug.ps1 +11 -0
  145. package/scripts/archive/add-source-e2e.ps1 +28 -0
  146. package/scripts/archive/add-source-visible.ps1 +11 -0
  147. package/scripts/archive/add-test-notebook.ps1 +13 -0
  148. package/scripts/archive/add-test-source.ps1 +50 -0
  149. package/scripts/archive/capture-screen.ps1 +11 -0
  150. package/scripts/archive/change-language.mjs +45 -0
  151. package/scripts/archive/change-language.ts +44 -0
  152. package/scripts/archive/check-account.ps1 +19 -0
  153. package/scripts/archive/check-notebook-2.ps1 +8 -0
  154. package/scripts/archive/check-test-notebook.ps1 +11 -0
  155. package/scripts/archive/create-notebook-auto.ps1 +31 -0
  156. package/scripts/archive/create-notebook.ps1 +8 -0
  157. package/scripts/archive/create-rom1pey-notebook.ps1 +19 -0
  158. package/scripts/archive/create-rom1pey.ps1 +8 -0
  159. package/scripts/archive/create-test-notebook-fresh.ps1 +21 -0
  160. package/scripts/archive/create-test-notebook.ps1 +16 -0
  161. package/scripts/archive/debug-add-source-auto.ps1 +29 -0
  162. package/scripts/archive/debug-add-source.ps1 +19 -0
  163. package/scripts/archive/debug-add-text-source.ps1 +47 -0
  164. package/scripts/archive/debug-home.ps1 +10 -0
  165. package/scripts/archive/debug-selectors.ps1 +55 -0
  166. package/scripts/archive/debug-sources-panel.ps1 +22 -0
  167. package/scripts/archive/debug-ui.ps1 +17 -0
  168. package/scripts/archive/discover-home.ps1 +26 -0
  169. package/scripts/archive/kill-automation-chrome.ps1 +37 -0
  170. package/scripts/archive/list-my-notebooks.ps1 +27 -0
  171. package/scripts/archive/navigate-home-visible.ps1 +23 -0
  172. package/scripts/archive/navigate-home.ps1 +15 -0
  173. package/scripts/archive/run-e2e-english.ps1 +111 -0
  174. package/scripts/archive/run-e2e-rom1pey-v2.ps1 +122 -0
  175. package/scripts/archive/run-e2e-rom1pey.ps1 +117 -0
  176. package/scripts/archive/setup-english-test.ps1 +36 -0
  177. package/scripts/archive/setup-test-notebook.ps1 +71 -0
  178. package/scripts/archive/simple-add-source.ps1 +14 -0
  179. package/scripts/archive/t10.ps1 +2 -0
  180. package/scripts/archive/t20.ps1 +4 -0
  181. package/scripts/archive/t30.ps1 +9 -0
  182. package/scripts/archive/t31.ps1 +11 -0
  183. package/scripts/archive/t32.ps1 +6 -0
  184. package/scripts/archive/t39.ps1 +5 -0
  185. package/scripts/archive/t40.ps1 +5 -0
  186. package/scripts/archive/t53.ps1 +12 -0
  187. package/scripts/archive/t54.ps1 +12 -0
  188. package/scripts/archive/t55.ps1 +11 -0
  189. package/scripts/archive/t9.ps1 +1 -0
  190. package/scripts/archive/test-access.ps1 +28 -0
  191. package/scripts/archive/test-add-delete-source.ps1 +64 -0
  192. package/scripts/archive/test-add-source-visible.ps1 +16 -0
  193. package/scripts/archive/test-add-source.ps1 +19 -0
  194. package/scripts/archive/test-add-text-debug.ps1 +28 -0
  195. package/scripts/archive/test-add-text-source.ps1 +8 -0
  196. package/scripts/archive/test-add-url-source.ps1 +7 -0
  197. package/scripts/archive/test-ask-ascii.ps1 +20 -0
  198. package/scripts/archive/test-ask-cnv.ps1 +20 -0
  199. package/scripts/archive/test-ask-headed.ps1 +51 -0
  200. package/scripts/archive/test-ask-ifs.ps1 +16 -0
  201. package/scripts/archive/test-ask-now.ps1 +24 -0
  202. package/scripts/archive/test-ask-real.ps1 +19 -0
  203. package/scripts/archive/test-ask-visible.ps1 +20 -0
  204. package/scripts/archive/test-create-notebook.ps1 +8 -0
  205. package/scripts/archive/test-create-then-add.ps1 +17 -0
  206. package/scripts/archive/test-delete-source.ps1 +41 -0
  207. package/scripts/archive/test-e2e-notebook.ps1 +21 -0
  208. package/scripts/archive/test-english-notebook.ps1 +20 -0
  209. package/scripts/archive/test-english.ps1 +7 -0
  210. package/scripts/archive/test-full-custom-instructions.ps1 +40 -0
  211. package/scripts/archive/test-full-infographic.ps1 +34 -0
  212. package/scripts/archive/test-full-language.ps1 +21 -0
  213. package/scripts/archive/test-full-presentation.ps1 +85 -0
  214. package/scripts/archive/test-full-report.ps1 +34 -0
  215. package/scripts/archive/test-full-source-selection.ps1 +35 -0
  216. package/scripts/archive/test-full-video-brief.ps1 +22 -0
  217. package/scripts/archive/test-full-video-explainer.ps1 +22 -0
  218. package/scripts/archive/test-full-video-styles.ps1 +37 -0
  219. package/scripts/archive/test-generate-report.ps1 +15 -0
  220. package/scripts/archive/test-generate-study-guide.ps1 +11 -0
  221. package/scripts/archive/test-headed-ask.ps1 +13 -0
  222. package/scripts/archive/test-headed-now.ps1 +9 -0
  223. package/scripts/archive/test-headed.ps1 +9 -0
  224. package/scripts/archive/test-hello.ps1 +7 -0
  225. package/scripts/archive/test-i18n-studio.ps1 +8 -0
  226. package/scripts/archive/test-i18n.ps1 +7 -0
  227. package/scripts/archive/test-manual-headed.ps1 +26 -0
  228. package/scripts/archive/test-mathieu-quota.ps1 +8 -0
  229. package/scripts/archive/test-notebook-1.ps1 +10 -0
  230. package/scripts/archive/test-notebook-2-sources.ps1 +12 -0
  231. package/scripts/archive/test-notebook1.ps1 +14 -0
  232. package/scripts/archive/test-personal-notebook.ps1 +14 -0
  233. package/scripts/archive/test-rate-limit.ps1 +19 -0
  234. package/scripts/archive/test-real-ask.ps1 +50 -0
  235. package/scripts/archive/test-real-ask2.ps1 +30 -0
  236. package/scripts/archive/test-rom1pey.ps1 +7 -0
  237. package/scripts/archive/test-rotation-complete.ps1 +14 -0
  238. package/scripts/archive/test-rotation.ps1 +8 -0
  239. package/scripts/archive/test-show-browser.ps1 +39 -0
  240. package/scripts/archive/test-update-notebook.ps1 +4 -0
  241. package/scripts/archive/verify-language-slow.ps1 +21 -0
  242. package/scripts/archive/verify-language.ps1 +15 -0
  243. package/scripts/check-server.ps1 +46 -0
  244. package/scripts/mcp-wsl-helper.sh +146 -0
  245. package/scripts/start-server.ps1 +94 -0
  246. package/scripts/stop-server.ps1 +30 -0
  247. package/scripts/switch-account-language.sh +191 -0
  248. package/scripts/test-account.ps1 +58 -0
  249. package/dist/__tests__/cleanup-manager.test.d.ts +0 -2
  250. package/dist/__tests__/cleanup-manager.test.d.ts.map +0 -1
  251. package/dist/__tests__/cleanup-manager.test.js +0 -341
  252. package/dist/__tests__/cleanup-manager.test.js.map +0 -1
  253. package/dist/__tests__/config-parsing.test.d.ts +0 -2
  254. package/dist/__tests__/config-parsing.test.d.ts.map +0 -1
  255. package/dist/__tests__/config-parsing.test.js +0 -338
  256. package/dist/__tests__/config-parsing.test.js.map +0 -1
  257. package/dist/__tests__/config.test.d.ts +0 -2
  258. package/dist/__tests__/config.test.d.ts.map +0 -1
  259. package/dist/__tests__/config.test.js +0 -267
  260. package/dist/__tests__/config.test.js.map +0 -1
  261. package/dist/__tests__/errors.test.d.ts +0 -2
  262. package/dist/__tests__/errors.test.d.ts.map +0 -1
  263. package/dist/__tests__/errors.test.js +0 -166
  264. package/dist/__tests__/errors.test.js.map +0 -1
  265. package/dist/__tests__/logger.test.d.ts +0 -2
  266. package/dist/__tests__/logger.test.d.ts.map +0 -1
  267. package/dist/__tests__/logger.test.js +0 -324
  268. package/dist/__tests__/logger.test.js.map +0 -1
  269. package/dist/__tests__/page-utils.test.d.ts +0 -2
  270. package/dist/__tests__/page-utils.test.d.ts.map +0 -1
  271. package/dist/__tests__/page-utils.test.js +0 -349
  272. package/dist/__tests__/page-utils.test.js.map +0 -1
  273. package/dist/__tests__/setup-verification.test.d.ts +0 -2
  274. package/dist/__tests__/setup-verification.test.d.ts.map +0 -1
  275. package/dist/__tests__/setup-verification.test.js +0 -15
  276. package/dist/__tests__/setup-verification.test.js.map +0 -1
  277. package/dist/__tests__/stealth-utils.test.d.ts +0 -2
  278. package/dist/__tests__/stealth-utils.test.d.ts.map +0 -1
  279. package/dist/__tests__/stealth-utils.test.js +0 -413
  280. package/dist/__tests__/stealth-utils.test.js.map +0 -1
  281. package/dist/__tests__/types.test.d.ts +0 -2
  282. package/dist/__tests__/types.test.d.ts.map +0 -1
  283. package/dist/__tests__/types.test.js +0 -461
  284. package/dist/__tests__/types.test.js.map +0 -1
@@ -0,0 +1,564 @@
1
+ # Test and Configuration Scripts
2
+
3
+ > PowerShell scripts to test and configure the NotebookLM MCP HTTP Server
4
+
5
+ ---
6
+
7
+ ## 📋 Available Scripts
8
+
9
+ | Script | Description | Duration |
10
+ | ----------------- | ----------------------------------------------- | -------- |
11
+ | `setup-auth.ps1` | Google authentication configuration | 2-3 min |
12
+ | `test-server.ps1` | Quick validation tests (3 basic tests) | ~30 sec |
13
+ | `test-api.ps1` | Complete tests of all endpoints (success cases) | 5-10 min |
14
+ | `test-errors.ps1` | Error case tests | 2-5 min |
15
+
16
+ ---
17
+
18
+ ## 🔐 setup-auth.ps1
19
+
20
+ Configures Google authentication to access NotebookLM.
21
+
22
+ ### Usage
23
+
24
+ ```powershell
25
+ .\deployment\scripts\setup-auth.ps1
26
+ ```
27
+
28
+ ### What happens
29
+
30
+ 1. Checks if authentication already exists
31
+ - If yes: asks for confirmation to reset
32
+ - If no: continues
33
+ 2. Opens Chrome (visible)
34
+ 3. You must log in to Google and go to notebooklm.google.com
35
+ 4. Close Chrome when you see your notebooks
36
+ 5. The script verifies that the files have been created
37
+
38
+ ### Created files
39
+
40
+ ```
41
+ %LOCALAPPDATA%\notebooklm-mcp\Data\
42
+ ├── chrome_profile\Default\Network\Cookies (>10 KB)
43
+ └── browser_state\state.json (16 cookies)
44
+ ```
45
+
46
+ ### Options
47
+
48
+ ```powershell
49
+ # Interactive mode (default)
50
+ .\deployment\scripts\setup-auth.ps1
51
+
52
+ # Force reset without asking
53
+ .\deployment\scripts\setup-auth.ps1 -Force
54
+ ```
55
+
56
+ ---
57
+
58
+ ## ⚡ test-server.ps1
59
+
60
+ Quick validation tests to verify that the server is working correctly.
61
+
62
+ ### Prerequisites
63
+
64
+ - The HTTP server must be started
65
+
66
+ ### Usage
67
+
68
+ ```powershell
69
+ # Start the server in a first terminal
70
+ npm run start:http
71
+
72
+ # In a second terminal, run the quick test
73
+ .\deployment\scripts\test-server.ps1
74
+ ```
75
+
76
+ ### Tests performed (3)
77
+
78
+ 1. ✅ GET /health - Server health
79
+ 2. ✅ GET /notebooks - Notebook list
80
+ 3. ⚠️ POST /ask - Ask a question (optional, requires auth + notebook)
81
+
82
+ ### Options
83
+
84
+ ```powershell
85
+ # Default server (localhost:3000)
86
+ .\deployment\scripts\test-server.ps1
87
+
88
+ # Server on a different port
89
+ .\deployment\scripts\test-server.ps1 -BaseUrl "http://localhost:8080"
90
+
91
+ # Remote server
92
+ .\deployment\scripts\test-server.ps1 -BaseUrl "http://192.168.1.100:3000"
93
+ ```
94
+
95
+ ### Output
96
+
97
+ ```
98
+ ╔══════════════════════════════════════════════════════════╗
99
+ ║ NotebookLM MCP - Quick Validation Tests ║
100
+ ╚══════════════════════════════════════════════════════════╝
101
+
102
+ Server tested: http://localhost:3000
103
+
104
+ Test 1: Health Check
105
+ GET http://localhost:3000/health
106
+ ✅ PASS - Server operational
107
+ Authenticated: True
108
+ Sessions: 0
109
+ Notebooks: 2
110
+
111
+ Test 2: List Notebooks
112
+ GET http://localhost:3000/notebooks
113
+ ✅ PASS - Endpoint working
114
+ Notebooks found: 2
115
+
116
+ Test 3: Ask Question (authentication + notebook required)
117
+ POST http://localhost:3000/ask
118
+ Using notebook: my-notebook
119
+ ✅ PASS - Question processed
120
+ Answer length: 42 chars
121
+ Session ID: abc123
122
+
123
+ ════════════════════════════════════════════════════════════
124
+
125
+ ✅ ALL TESTS PASSED!
126
+
127
+ 📖 Next steps:
128
+ - Check API documentation: .\deployment\docs\03-API.md
129
+ - Integrate with n8n: .\deployment\docs\04-N8N-INTEGRATION.md
130
+ ```
131
+
132
+ ### Duration
133
+
134
+ - **~30 seconds** if authenticated with notebooks
135
+ - **~5 seconds** if no notebooks (skip test 3)
136
+
137
+ ### Use cases
138
+
139
+ **Quick check after installation:**
140
+
141
+ ```powershell
142
+ npm run start:http
143
+ .\deployment\scripts\test-server.ps1
144
+ ```
145
+
146
+ **CI/CD - Quick health check:**
147
+
148
+ ```yaml
149
+ - name: Quick Health Check
150
+ run: |
151
+ npm run start:http &
152
+ sleep 5
153
+ pwsh -File deployment/scripts/test-server.ps1
154
+ ```
155
+
156
+ ---
157
+
158
+ ## ✅ test-api.ps1
159
+
160
+ Complete tests of all API endpoints (success cases).
161
+
162
+ ### Prerequisites
163
+
164
+ - The HTTP server must be started
165
+ - At least 1 configured notebook (for complete tests)
166
+
167
+ ### Usage
168
+
169
+ ```powershell
170
+ # Start the server in a first terminal
171
+ npm run start:http
172
+
173
+ # In a second terminal, run the tests
174
+ .\deployment\scripts\test-api.ps1
175
+ ```
176
+
177
+ ### Tests performed (10)
178
+
179
+ 1. ✅ GET /health - Server health
180
+ 2. ✅ GET /notebooks - Notebook list
181
+ 3. ✅ GET /notebooks/:id - Notebook details
182
+ 4. ✅ PUT /notebooks/:id/activate - Activate a notebook
183
+ 5. ✅ POST /ask (without notebook_id) - Uses active notebook
184
+ 6. ✅ GET /sessions - Session list
185
+ 7. ✅ POST /ask (with session_id) - Continue a conversation
186
+ 8. ✅ DELETE /sessions/:id - Close a session
187
+ 9. ✅ POST /ask (with notebook_url) - Direct URL
188
+ 10. ✅ DELETE /notebooks/:id - Delete a notebook
189
+
190
+ ### Options
191
+
192
+ ```powershell
193
+ # Default server (localhost:3000)
194
+ .\deployment\scripts\test-api.ps1
195
+
196
+ # Server on a different port
197
+ .\deployment\scripts\test-api.ps1 -BaseUrl "http://localhost:8080"
198
+
199
+ # Remote server
200
+ .\deployment\scripts\test-api.ps1 -BaseUrl "http://192.168.1.100:3000"
201
+ ```
202
+
203
+ ### Output
204
+
205
+ ```
206
+ ╔════════════════════════════════════════════════════════╗
207
+ ║ NOTEBOOKLM MCP HTTP SERVER API TESTS ║
208
+ ╚════════════════════════════════════════════════════════╝
209
+
210
+ ✓ Server accessible at http://localhost:3000
211
+
212
+ ═══════════════════════════════════════════════════════
213
+ [1/10] GET /health - Server health check
214
+ ═══════════════════════════════════════════════════════
215
+ ✓ Server healthy
216
+ ...
217
+
218
+ ╔════════════════════════════════════════════════════════╗
219
+ ║ TEST SUMMARY ║
220
+ ╚════════════════════════════════════════════════════════╝
221
+
222
+ Total tests: 10
223
+ Passed tests: 10
224
+ Failed tests: 0
225
+ Success rate: 100%
226
+
227
+ ════════════════════════════════════════════════════════
228
+ ✓ ALL TESTS PASSED SUCCESSFULLY!
229
+ ════════════════════════════════════════════════════════
230
+ ```
231
+
232
+ ### Duration
233
+
234
+ - **Without configured notebooks:** ~1 minute (partial tests)
235
+ - **With notebooks:** ~5-10 minutes (complete tests with NotebookLM questions)
236
+
237
+ ### Special behaviors
238
+
239
+ - **Skips tests** if no notebook is configured
240
+ - **Does not delete** your only notebook
241
+ - **Prefers to delete** test notebooks (suffix -1, -2, etc.)
242
+ - **Reuses data** between tests (session_id, notebook_id)
243
+
244
+ ---
245
+
246
+ ## ❌ test-errors.ps1
247
+
248
+ Error case tests (validation of error messages).
249
+
250
+ ### Prerequisites
251
+
252
+ - The HTTP server must be started
253
+
254
+ ### Usage
255
+
256
+ ```powershell
257
+ # Start the server
258
+ npm run start:http
259
+
260
+ # Run error tests
261
+ .\deployment\scripts\test-errors.ps1
262
+ ```
263
+
264
+ ### Tests performed (12)
265
+
266
+ 1. ❌ POST /ask - Missing question
267
+ 2. ❌ POST /ask - Non-existent notebook_id
268
+ 3. ❌ POST /ask - No configured notebook
269
+ 4. ❌ POST /notebooks - Missing URL
270
+ 5. ❌ POST /notebooks - Missing name
271
+ 6. ❌ POST /notebooks - Invalid URL format
272
+ 7. ❌ POST /notebooks - Name already in use (duplicate)
273
+ 8. ❌ POST /notebooks - Inaccessible notebook (live validation)
274
+ 9. ❌ GET /notebooks/:id - Non-existent notebook
275
+ 10. ❌ DELETE /notebooks/:id - Non-existent notebook
276
+ 11. ❌ PUT /notebooks/:id/activate - Non-existent notebook
277
+ 12. ❌ DELETE /sessions/:id - Non-existent session
278
+
279
+ ### Options
280
+
281
+ ```powershell
282
+ # Default server (localhost:3000)
283
+ .\deployment\scripts\test-errors.ps1
284
+
285
+ # Remote server
286
+ .\deployment\scripts\test-errors.ps1 -BaseUrl "http://192.168.1.100:3000"
287
+ ```
288
+
289
+ ### Output
290
+
291
+ ```
292
+ ╔════════════════════════════════════════════════════════╗
293
+ ║ ERROR CASE TESTS - HTTP API ║
294
+ ╚════════════════════════════════════════════════════════╝
295
+
296
+ ✓ Server accessible at http://localhost:3000
297
+
298
+ ═══════════════════════════════════════════════════════
299
+ [1/12] POST /ask - Error: missing question
300
+ ═══════════════════════════════════════════════════════
301
+ ✓ Expected error: Missing required field: question
302
+ ✓ Correct error message (mentions 'question')
303
+ ...
304
+
305
+ ╔════════════════════════════════════════════════════════╗
306
+ ║ ERROR TEST SUMMARY ║
307
+ ╚════════════════════════════════════════════════════════╝
308
+
309
+ Total tests: 12
310
+ Passed tests: 10
311
+ Failed tests: 0
312
+ Skipped tests: 2
313
+ Success rate: 100%
314
+
315
+ ════════════════════════════════════════════════════════
316
+ ✓ ALL ERROR CASES ARE HANDLED CORRECTLY!
317
+ ════════════════════════════════════════════════════════
318
+ ```
319
+
320
+ ### Duration
321
+
322
+ - **~2-5 minutes** (includes 1 live validation test that takes 15-30s)
323
+
324
+ ### Skipped tests
325
+
326
+ Some tests may be skipped if conditions are not met:
327
+
328
+ - **Test 3** (no notebook): skipped if you have configured notebooks
329
+ - **Test 7** (duplicate): skipped if no notebook exists
330
+
331
+ ---
332
+
333
+ ## 🚀 Complete Test Workflow
334
+
335
+ ### 1. Installation and Configuration
336
+
337
+ ```powershell
338
+ # 1. Install dependencies
339
+ npm install
340
+
341
+ # 2. Compile TypeScript
342
+ npm run build
343
+
344
+ # 3. Configure authentication
345
+ .\deployment\scripts\setup-auth.ps1
346
+ ```
347
+
348
+ ### 2. Add a Notebook
349
+
350
+ ```powershell
351
+ # Start the server
352
+ npm run start:http
353
+
354
+ # In another terminal
355
+ $body = @{
356
+ url = "https://notebooklm.google.com/notebook/YOUR-NOTEBOOK-ID"
357
+ name = "My Notebook"
358
+ description = "My notebook description"
359
+ topics = @("topic1", "topic2")
360
+ } | ConvertTo-Json
361
+
362
+ Invoke-RestMethod -Uri "http://localhost:3000/notebooks" `
363
+ -Method Post -Body $body -ContentType "application/json"
364
+ ```
365
+
366
+ ### 3. Run the Tests
367
+
368
+ ```powershell
369
+ # Success tests (5-10 min)
370
+ .\deployment\scripts\test-api.ps1
371
+
372
+ # Error tests (2-5 min)
373
+ .\deployment\scripts\test-errors.ps1
374
+ ```
375
+
376
+ ### 4. Expected Results
377
+
378
+ ✅ **test-api.ps1**: 100% success (10/10 tests)
379
+ ✅ **test-errors.ps1**: 100% success (10-12/12 tests)
380
+
381
+ ---
382
+
383
+ ## 🐛 Troubleshooting
384
+
385
+ ### Error: "Unable to connect to server"
386
+
387
+ **Cause:** The server is not started
388
+
389
+ **Solution:**
390
+
391
+ ```powershell
392
+ # Check that the server is running
393
+ Get-Process node
394
+
395
+ # If not, start it
396
+ npm run start:http
397
+ ```
398
+
399
+ ### Error: "No configured notebook"
400
+
401
+ **Cause:** Empty library
402
+
403
+ **Solution:** Add at least one notebook (see section 2 above)
404
+
405
+ ### Skipped tests in test-api.ps1
406
+
407
+ **Normal** if you don't have configured notebooks. Tests that require notebooks will be skipped with an informative message.
408
+
409
+ ### Skipped tests in test-errors.ps1
410
+
411
+ **Normal** depending on your configuration:
412
+
413
+ - "No notebook" test skipped if you have notebooks
414
+ - "Duplicate" test skipped if you don't have notebooks
415
+
416
+ ### Port already in use
417
+
418
+ **Error:** `EADDRINUSE: address already in use`
419
+
420
+ **Solution:**
421
+
422
+ ```powershell
423
+ # Change the port
424
+ $env:HTTP_PORT="8080"
425
+ npm run start:http
426
+
427
+ # Then test
428
+ .\deployment\scripts\test-api.ps1 -BaseUrl "http://localhost:8080"
429
+ ```
430
+
431
+ ---
432
+
433
+ ## 📊 Exit Codes
434
+
435
+ The scripts return standard exit codes:
436
+
437
+ | Code | Meaning |
438
+ | ---- | ------------------------ |
439
+ | `0` | All tests passed |
440
+ | `1` | At least one test failed |
441
+
442
+ **Usage in CI/CD:**
443
+
444
+ ```powershell
445
+ # Run tests and capture exit code
446
+ .\deployment\scripts\test-api.ps1
447
+ if ($LASTEXITCODE -ne 0) {
448
+ Write-Error "Tests failed!"
449
+ exit 1
450
+ }
451
+ ```
452
+
453
+ ---
454
+
455
+ ## 🎯 Best Practices
456
+
457
+ ### Before Committing
458
+
459
+ ```powershell
460
+ # 1. Build
461
+ npm run build
462
+
463
+ # 2. Test success
464
+ .\deployment\scripts\test-api.ps1
465
+
466
+ # 3. Test errors
467
+ .\deployment\scripts\test-errors.ps1
468
+
469
+ # 4. If everything is green, commit
470
+ git add .
471
+ git commit -m "your message"
472
+ ```
473
+
474
+ ### CI/CD Pipeline
475
+
476
+ ```yaml
477
+ # GitHub Actions example
478
+ - name: Run API Tests
479
+ run: |
480
+ npm run start:http &
481
+ sleep 10
482
+ pwsh -File deployment/scripts/test-api.ps1
483
+ pwsh -File deployment/scripts/test-errors.ps1
484
+ ```
485
+
486
+ ### Production
487
+
488
+ **DO NOT run these tests in production**:
489
+
490
+ - Tests create/delete notebooks
491
+ - Tests create/close sessions
492
+ - Tests ask questions to NotebookLM
493
+
494
+ **To check health in production:**
495
+
496
+ ```powershell
497
+ # Simple health check
498
+ Invoke-RestMethod -Uri "http://YOUR-SERVER:3000/health"
499
+ ```
500
+
501
+ ---
502
+
503
+ ## 📝 Customization
504
+
505
+ ### Modify Test Questions
506
+
507
+ In `test-api.ps1`, change the questions:
508
+
509
+ ```powershell
510
+ # Line ~247
511
+ $body = @{
512
+ question = "Your custom question"
513
+ } | ConvertTo-Json
514
+ ```
515
+
516
+ ### Add Tests
517
+
518
+ Copy the existing pattern:
519
+
520
+ ```powershell
521
+ Write-TestHeader "Your new test" X $TotalTests
522
+
523
+ try {
524
+ # Your test code
525
+ $result = Invoke-RestMethod -Uri "$BaseUrl/your-endpoint"
526
+
527
+ if ($result.success) {
528
+ Write-Success "Test passed"
529
+ $PassedTests++
530
+ } else {
531
+ Write-Error-Custom "Test failed"
532
+ $FailedTests++
533
+ }
534
+ } catch {
535
+ Write-Error-Custom "Error: $_"
536
+ $FailedTests++
537
+ }
538
+ ```
539
+
540
+ ### Custom Timeout
541
+
542
+ ```powershell
543
+ # For long tests (NotebookLM questions)
544
+ $result = Invoke-RestMethod `
545
+ -Uri "$BaseUrl/ask" `
546
+ -Method Post `
547
+ -Body $body `
548
+ -ContentType "application/json" `
549
+ -TimeoutSec 120 # 2 minutes
550
+ ```
551
+
552
+ ---
553
+
554
+ ## 📖 Complete Documentation
555
+
556
+ For more information, see:
557
+
558
+ - [01-INSTALL.md](../docs/01-INSTALL.md) - Installation guide
559
+ - [03-API.md](../docs/03-API.md) - Complete API reference
560
+ - [05-TROUBLESHOOTING.md](../docs/05-TROUBLESHOOTING.md) - Troubleshooting
561
+
562
+ ---
563
+
564
+ **Scripts created for NotebookLM MCP HTTP Server v1.1.2**
@@ -0,0 +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
+ }