@roomi-fields/notebooklm-mcp 1.5.7 → 1.5.8
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 -219
- 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 +21 -1
- package/deployment/docs/02-CONFIGURATION.md +0 -0
- package/deployment/docs/03-API.md +16 -10
- package/deployment/docs/04-N8N-INTEGRATION.md +0 -0
- package/deployment/docs/05-TROUBLESHOOTING.md +19 -1
- package/deployment/docs/06-NOTEBOOK-LIBRARY.md +9 -9
- package/deployment/docs/07-AUTO-DISCOVERY.md +6 -15
- package/deployment/docs/08-DOCKER.md +0 -0
- package/deployment/docs/08-WSL-USAGE.md +7 -7
- package/deployment/docs/09-MULTI-INTERFACE.md +6 -6
- package/deployment/docs/10-CONTENT-MANAGEMENT.md +0 -0
- package/deployment/docs/11-MULTI-ACCOUNT.md +1 -1
- package/deployment/docs/README.md +0 -0
- 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 +0 -0
- package/dist/accounts/account-manager.d.ts.map +0 -0
- package/dist/accounts/account-manager.js +0 -0
- package/dist/accounts/account-manager.js.map +0 -0
- package/dist/accounts/auto-login-manager.d.ts +0 -0
- package/dist/accounts/auto-login-manager.d.ts.map +0 -0
- package/dist/accounts/auto-login-manager.js +0 -0
- package/dist/accounts/auto-login-manager.js.map +0 -0
- 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 +0 -0
- package/dist/auth/auth-manager.d.ts.map +0 -0
- package/dist/auth/auth-manager.js +0 -0
- package/dist/auth/auth-manager.js.map +0 -0
- 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 +5 -0
- package/dist/cli/help.js.map +1 -1
- 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 +0 -0
- package/dist/cli/setup-auth.js.map +0 -0
- package/dist/config.d.ts +0 -0
- package/dist/config.d.ts.map +0 -0
- package/dist/config.js +0 -0
- package/dist/config.js.map +0 -0
- 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 +8 -0
- package/dist/content/content-manager.d.ts.map +1 -1
- package/dist/content/content-manager.js +411 -67
- package/dist/content/content-manager.js.map +1 -1
- 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 +0 -0
- package/dist/http-wrapper.js +0 -0
- package/dist/http-wrapper.js.map +0 -0
- 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 +12 -0
- package/dist/session/browser-session.d.ts.map +1 -1
- package/dist/session/browser-session.js +156 -32
- 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 +0 -0
- package/dist/session/shared-context-manager.js +0 -0
- package/dist/session/shared-context-manager.js.map +0 -0
- package/dist/startup/startup-manager.d.ts +0 -0
- package/dist/startup/startup-manager.d.ts.map +0 -0
- package/dist/startup/startup-manager.js +0 -0
- package/dist/startup/startup-manager.js.map +0 -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 +0 -0
- package/dist/stdio-http-proxy.js.map +0 -0
- package/dist/tools/index.d.ts +0 -0
- package/dist/tools/index.d.ts.map +0 -0
- package/dist/tools/index.js +0 -0
- package/dist/tools/index.js.map +0 -0
- 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 +0 -0
- package/dist/utils/citation-extractor.d.ts.map +0 -0
- package/dist/utils/citation-extractor.js +67 -67
- package/dist/utils/citation-extractor.js.map +0 -0
- 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 +5 -0
- package/dist/utils/page-utils.d.ts.map +1 -1
- package/dist/utils/page-utils.js +73 -15
- 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/package.json +5 -3
- package/scripts/archive/add-and-activate-notebook.ps1 +4 -4
- package/scripts/archive/add-new-notebook.ps1 +4 -4
- package/scripts/archive/add-rom1pey.ps1 +2 -2
- package/scripts/archive/add-rpmonster.ps1 +2 -2
- package/scripts/archive/add-source-debug.ps1 +1 -1
- package/scripts/archive/add-source-e2e.ps1 +1 -1
- package/scripts/archive/add-source-visible.ps1 +1 -1
- package/scripts/archive/add-test-notebook.ps1 +1 -1
- package/scripts/archive/add-test-source.ps1 +1 -1
- package/scripts/archive/capture-screen.ps1 +1 -1
- package/scripts/archive/change-language.mjs +4 -3
- package/scripts/archive/change-language.ts +5 -3
- 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 +2 -2
- package/scripts/archive/create-rom1pey-notebook.ps1 +2 -2
- package/scripts/archive/create-rom1pey.ps1 +2 -2
- 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 +4 -4
- package/scripts/archive/debug-home.ps1 +0 -0
- package/scripts/archive/debug-selectors.ps1 +1 -1
- package/scripts/archive/debug-sources-panel.ps1 +0 -0
- package/scripts/archive/debug-ui.ps1 +0 -0
- package/scripts/archive/discover-home.ps1 +2 -2
- 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 +1 -1
- package/scripts/archive/navigate-home.ps1 +1 -1
- package/scripts/archive/run-e2e-english.ps1 +3 -3
- package/scripts/archive/run-e2e-rom1pey-v2.ps1 +4 -4
- package/scripts/archive/run-e2e-rom1pey.ps1 +4 -4
- package/scripts/archive/setup-english-test.ps1 +6 -6
- package/scripts/archive/setup-test-notebook.ps1 +1 -1
- package/scripts/archive/simple-add-source.ps1 +1 -1
- package/scripts/archive/t10.ps1 +1 -1
- package/scripts/archive/t20.ps1 +1 -1
- package/scripts/archive/t30.ps1 +1 -1
- package/scripts/archive/t31.ps1 +1 -1
- package/scripts/archive/t32.ps1 +1 -1
- package/scripts/archive/t39.ps1 +0 -0
- package/scripts/archive/t40.ps1 +0 -0
- package/scripts/archive/t53.ps1 +1 -1
- 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 +1 -1
- package/scripts/archive/test-add-delete-source.ps1 +4 -4
- package/scripts/archive/test-add-source-visible.ps1 +1 -1
- package/scripts/archive/test-add-source.ps1 +1 -1
- package/scripts/archive/test-add-text-debug.ps1 +2 -2
- 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 +1 -1
- 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 +4 -4
- package/scripts/archive/test-e2e-notebook.ps1 +2 -2
- package/scripts/archive/test-english-notebook.ps1 +4 -4
- package/scripts/archive/test-english.ps1 +1 -1
- package/scripts/archive/test-full-custom-instructions.ps1 +1 -1
- package/scripts/archive/test-full-infographic.ps1 +1 -1
- package/scripts/archive/test-full-language.ps1 +1 -1
- package/scripts/archive/test-full-presentation.ps1 +1 -1
- package/scripts/archive/test-full-report.ps1 +1 -1
- package/scripts/archive/test-full-source-selection.ps1 +1 -1
- package/scripts/archive/test-full-video-brief.ps1 +1 -1
- package/scripts/archive/test-full-video-explainer.ps1 +1 -1
- package/scripts/archive/test-full-video-styles.ps1 +1 -1
- 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 +1 -1
- package/scripts/archive/test-headed-now.ps1 +2 -2
- package/scripts/archive/test-headed.ps1 +2 -2
- package/scripts/archive/test-hello.ps1 +1 -1
- package/scripts/archive/test-i18n-studio.ps1 +0 -0
- package/scripts/archive/test-i18n.ps1 +0 -0
- package/scripts/archive/test-manual-headed.ps1 +1 -1
- package/scripts/archive/test-mathieu-quota.ps1 +1 -1
- 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 +1 -1
- package/scripts/archive/test-rate-limit.ps1 +1 -1
- package/scripts/archive/test-real-ask.ps1 +1 -1
- package/scripts/archive/test-real-ask2.ps1 +1 -1
- package/scripts/archive/test-rom1pey.ps1 +1 -1
- package/scripts/archive/test-rotation-complete.ps1 +1 -1
- package/scripts/archive/test-rotation.ps1 +2 -2
- package/scripts/archive/test-show-browser.ps1 +1 -1
- package/scripts/archive/test-update-notebook.ps1 +1 -1
- package/scripts/archive/verify-language-slow.ps1 +1 -1
- package/scripts/archive/verify-language.ps1 +1 -1
- package/scripts/check-server.ps1 +0 -0
- package/scripts/docker-entrypoint.sh +25 -25
- package/scripts/doctor.mjs +257 -0
- package/scripts/mcp-proxy-hidden.ps1 +0 -0
- package/scripts/mcp-wsl-helper.sh +146 -146
- package/scripts/start-server-hidden.vbs +13 -10
- package/scripts/start-server.ps1 +1 -1
- package/scripts/start-vnc.sh +0 -0
- package/scripts/stop-server.bat +0 -0
- package/scripts/stop-server.ps1 +0 -0
- package/scripts/switch-account-language.sh +87 -128
- package/scripts/test-account.ps1 +0 -0
- package/docs/archive/auto-discovery-complet.md +0 -906
- package/scripts/add-totp.ts +0 -110
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Docker entrypoint for NotebookLM MCP Server
|
|
3
|
-
# Starts VNC services (for visual auth) and Node.js HTTP server
|
|
4
|
-
set -e
|
|
5
|
-
echo "==========================================="
|
|
6
|
-
echo " NotebookLM MCP Server - Docker"
|
|
7
|
-
echo "==========================================="
|
|
8
|
-
echo ""
|
|
9
|
-
# Check if VNC should be started (default: yes in Docker)
|
|
10
|
-
ENABLE_VNC="${ENABLE_VNC:-true}"
|
|
11
|
-
if [ "$ENABLE_VNC" = "true" ]; then
|
|
12
|
-
echo "[Entrypoint] Starting VNC services..."
|
|
13
|
-
source /app/scripts/start-vnc.sh
|
|
14
|
-
echo ""
|
|
15
|
-
echo "[Entrypoint] VNC ready at: http://<host>:${NOVNC_PORT:-6080}/vnc.html"
|
|
16
|
-
echo ""
|
|
17
|
-
else
|
|
18
|
-
echo "[Entrypoint] VNC disabled (ENABLE_VNC=false)"
|
|
19
|
-
fi
|
|
20
|
-
# Render injecte automatiquement PORT, on l'utilise en priorité
|
|
21
|
-
export HTTP_PORT=${PORT:-${HTTP_PORT:-3000}}
|
|
22
|
-
echo "[Entrypoint] Starting Node.js HTTP server on port ${HTTP_PORT}..."
|
|
23
|
-
echo ""
|
|
24
|
-
# Start the Node.js server (foreground)
|
|
25
|
-
exec node dist/http-wrapper.js
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Docker entrypoint for NotebookLM MCP Server
|
|
3
|
+
# Starts VNC services (for visual auth) and Node.js HTTP server
|
|
4
|
+
set -e
|
|
5
|
+
echo "==========================================="
|
|
6
|
+
echo " NotebookLM MCP Server - Docker"
|
|
7
|
+
echo "==========================================="
|
|
8
|
+
echo ""
|
|
9
|
+
# Check if VNC should be started (default: yes in Docker)
|
|
10
|
+
ENABLE_VNC="${ENABLE_VNC:-true}"
|
|
11
|
+
if [ "$ENABLE_VNC" = "true" ]; then
|
|
12
|
+
echo "[Entrypoint] Starting VNC services..."
|
|
13
|
+
source /app/scripts/start-vnc.sh
|
|
14
|
+
echo ""
|
|
15
|
+
echo "[Entrypoint] VNC ready at: http://<host>:${NOVNC_PORT:-6080}/vnc.html"
|
|
16
|
+
echo ""
|
|
17
|
+
else
|
|
18
|
+
echo "[Entrypoint] VNC disabled (ENABLE_VNC=false)"
|
|
19
|
+
fi
|
|
20
|
+
# Render injecte automatiquement PORT, on l'utilise en priorité
|
|
21
|
+
export HTTP_PORT=${PORT:-${HTTP_PORT:-3000}}
|
|
22
|
+
echo "[Entrypoint] Starting Node.js HTTP server on port ${HTTP_PORT}..."
|
|
23
|
+
echo ""
|
|
24
|
+
# Start the Node.js server (foreground)
|
|
25
|
+
exec node dist/http-wrapper.js
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { existsSync, readFileSync } from 'fs';
|
|
4
|
+
import { dirname, join, resolve } from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const repoRoot = resolve(__dirname, '..');
|
|
9
|
+
|
|
10
|
+
function parseArgs(argv) {
|
|
11
|
+
const args = {
|
|
12
|
+
mode: 'basic',
|
|
13
|
+
baseUrl: process.env.NOTEBOOKLM_MCP_BASE_URL || 'http://127.0.0.1:3000',
|
|
14
|
+
notebookUrl: process.env.NOTEBOOK_URL || '',
|
|
15
|
+
timeoutMs: 15000,
|
|
16
|
+
question:
|
|
17
|
+
'What is the main topic covered by this notebook? Answer in one sentence.',
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
for (let i = 0; i < argv.length; i++) {
|
|
21
|
+
const arg = argv[i];
|
|
22
|
+
switch (arg) {
|
|
23
|
+
case '--basic':
|
|
24
|
+
args.mode = 'basic';
|
|
25
|
+
break;
|
|
26
|
+
case '--http':
|
|
27
|
+
args.mode = 'http';
|
|
28
|
+
break;
|
|
29
|
+
case '--base-url':
|
|
30
|
+
args.baseUrl = argv[++i] || args.baseUrl;
|
|
31
|
+
break;
|
|
32
|
+
case '--notebook-url':
|
|
33
|
+
args.notebookUrl = argv[++i] || '';
|
|
34
|
+
break;
|
|
35
|
+
case '--timeout-ms':
|
|
36
|
+
args.timeoutMs = Number(argv[++i] || args.timeoutMs);
|
|
37
|
+
break;
|
|
38
|
+
case '--question':
|
|
39
|
+
args.question = argv[++i] || args.question;
|
|
40
|
+
break;
|
|
41
|
+
case '--help':
|
|
42
|
+
case '-h':
|
|
43
|
+
printHelp();
|
|
44
|
+
process.exit(0);
|
|
45
|
+
default:
|
|
46
|
+
if (arg.startsWith('--base-url=')) {
|
|
47
|
+
args.baseUrl = arg.split('=', 2)[1];
|
|
48
|
+
} else if (arg.startsWith('--notebook-url=')) {
|
|
49
|
+
args.notebookUrl = arg.split('=', 2)[1];
|
|
50
|
+
} else if (arg.startsWith('--timeout-ms=')) {
|
|
51
|
+
args.timeoutMs = Number(arg.split('=', 2)[1]);
|
|
52
|
+
} else if (arg.startsWith('--question=')) {
|
|
53
|
+
args.question = arg.split('=', 2)[1];
|
|
54
|
+
} else {
|
|
55
|
+
throw new Error(`Unknown argument: ${arg}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return args;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function printHelp() {
|
|
64
|
+
console.log(`NotebookLM MCP doctor
|
|
65
|
+
|
|
66
|
+
Usage:
|
|
67
|
+
node scripts/doctor.mjs --basic
|
|
68
|
+
node scripts/doctor.mjs --http
|
|
69
|
+
node scripts/doctor.mjs --http --notebook-url "https://notebooklm.google.com/notebook/<your-notebook-id>"
|
|
70
|
+
|
|
71
|
+
Options:
|
|
72
|
+
--basic Run repo and build checks only.
|
|
73
|
+
--http Also verify the local HTTP server.
|
|
74
|
+
--base-url <url> Override HTTP base URL (default: http://127.0.0.1:3000).
|
|
75
|
+
--notebook-url <url> Optional NotebookLM URL for /content and /ask checks.
|
|
76
|
+
--timeout-ms <ms> Per-request timeout in milliseconds.
|
|
77
|
+
--question <text> Custom ask prompt for the /ask verification step.
|
|
78
|
+
`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function pass(message) {
|
|
82
|
+
console.log(`[PASS] ${message}`);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function warn(message) {
|
|
86
|
+
console.log(`[WARN] ${message}`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function fail(message) {
|
|
90
|
+
console.error(`[FAIL] ${message}`);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function loadPackageJson() {
|
|
94
|
+
const packagePath = join(repoRoot, 'package.json');
|
|
95
|
+
if (!existsSync(packagePath)) {
|
|
96
|
+
throw new Error(`package.json not found at ${packagePath}`);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return JSON.parse(readFileSync(packagePath, 'utf8'));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function getMinNodeMajor(range) {
|
|
103
|
+
const match = String(range || '').match(/(\d+)/);
|
|
104
|
+
return match ? Number(match[1]) : 18;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
async function fetchJson(url, options = {}, timeoutMs = 15000) {
|
|
108
|
+
const controller = new AbortController();
|
|
109
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
const response = await fetch(url, {
|
|
113
|
+
...options,
|
|
114
|
+
signal: controller.signal,
|
|
115
|
+
headers: {
|
|
116
|
+
'Content-Type': 'application/json',
|
|
117
|
+
...(options.headers || {}),
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
const text = await response.text();
|
|
122
|
+
let data;
|
|
123
|
+
try {
|
|
124
|
+
data = text ? JSON.parse(text) : {};
|
|
125
|
+
} catch {
|
|
126
|
+
data = { raw: text };
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return { ok: response.ok, status: response.status, data };
|
|
130
|
+
} finally {
|
|
131
|
+
clearTimeout(timeout);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
async function main() {
|
|
136
|
+
const args = parseArgs(process.argv.slice(2));
|
|
137
|
+
let hasFailure = false;
|
|
138
|
+
|
|
139
|
+
const packageJson = loadPackageJson();
|
|
140
|
+
const requiredNode = getMinNodeMajor(packageJson.engines?.node);
|
|
141
|
+
const currentNode = Number(process.versions.node.split('.')[0]);
|
|
142
|
+
|
|
143
|
+
if (currentNode < requiredNode) {
|
|
144
|
+
fail(`Node.js ${process.versions.node} is too old. Required: >=${requiredNode}`);
|
|
145
|
+
hasFailure = true;
|
|
146
|
+
} else {
|
|
147
|
+
pass(`Node.js ${process.versions.node} satisfies engines.node (${packageJson.engines?.node})`);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const requiredPaths = [
|
|
151
|
+
['package.json', join(repoRoot, 'package.json')],
|
|
152
|
+
['README.md', join(repoRoot, 'README.md')],
|
|
153
|
+
['dist/index.js', join(repoRoot, 'dist', 'index.js')],
|
|
154
|
+
['dist/http-wrapper.js', join(repoRoot, 'dist', 'http-wrapper.js')],
|
|
155
|
+
];
|
|
156
|
+
|
|
157
|
+
for (const [label, filePath] of requiredPaths) {
|
|
158
|
+
if (existsSync(filePath)) {
|
|
159
|
+
pass(`Found ${label}`);
|
|
160
|
+
} else {
|
|
161
|
+
fail(`Missing ${label} at ${filePath}`);
|
|
162
|
+
hasFailure = true;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (args.mode !== 'http') {
|
|
167
|
+
if (hasFailure) {
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
pass('Basic verification completed.');
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const health = await fetchJson(`${args.baseUrl}/health`, {}, args.timeoutMs).catch((error) => {
|
|
175
|
+
fail(`Could not reach ${args.baseUrl}/health: ${error.message}`);
|
|
176
|
+
hasFailure = true;
|
|
177
|
+
return null;
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
if (!health) {
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (!health.ok || !health.data?.success) {
|
|
185
|
+
fail(`/health failed with status ${health.status}`);
|
|
186
|
+
hasFailure = true;
|
|
187
|
+
} else {
|
|
188
|
+
pass(`/health succeeded (authenticated=${health.data?.data?.authenticated === true})`);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (!args.notebookUrl) {
|
|
192
|
+
warn('No notebook URL provided. Skipping /content and /ask checks.');
|
|
193
|
+
process.exit(hasFailure ? 1 : 0);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const encodedNotebookUrl = encodeURIComponent(args.notebookUrl);
|
|
197
|
+
const content = await fetchJson(
|
|
198
|
+
`${args.baseUrl}/content?notebook_url=${encodedNotebookUrl}`,
|
|
199
|
+
{},
|
|
200
|
+
Math.max(args.timeoutMs, 30000)
|
|
201
|
+
).catch((error) => {
|
|
202
|
+
fail(`/content request failed: ${error.message}`);
|
|
203
|
+
hasFailure = true;
|
|
204
|
+
return null;
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
if (content) {
|
|
208
|
+
if (!content.ok || !content.data?.success) {
|
|
209
|
+
fail(`/content failed with status ${content.status}`);
|
|
210
|
+
hasFailure = true;
|
|
211
|
+
} else {
|
|
212
|
+
const sourceCount = content.data?.data?.sourceCount;
|
|
213
|
+
pass(`/content succeeded${typeof sourceCount === 'number' ? ` (sourceCount=${sourceCount})` : ''}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const askPayload = {
|
|
218
|
+
question: args.question,
|
|
219
|
+
notebook_url: args.notebookUrl,
|
|
220
|
+
session_id: `doctor-${Date.now()}`,
|
|
221
|
+
source_format: 'none',
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
const ask = await fetchJson(
|
|
225
|
+
`${args.baseUrl}/ask`,
|
|
226
|
+
{
|
|
227
|
+
method: 'POST',
|
|
228
|
+
body: JSON.stringify(askPayload),
|
|
229
|
+
},
|
|
230
|
+
Math.max(args.timeoutMs, 120000)
|
|
231
|
+
).catch((error) => {
|
|
232
|
+
fail(`/ask request failed: ${error.message}`);
|
|
233
|
+
hasFailure = true;
|
|
234
|
+
return null;
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
if (ask) {
|
|
238
|
+
if (!ask.ok || !ask.data?.success) {
|
|
239
|
+
fail(`/ask failed with status ${ask.status}`);
|
|
240
|
+
hasFailure = true;
|
|
241
|
+
} else {
|
|
242
|
+
const answer = ask.data?.data?.answer || '';
|
|
243
|
+
pass(`/ask succeeded (${answer.length} chars returned)`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (hasFailure) {
|
|
248
|
+
process.exit(1);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
pass('HTTP verification completed.');
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
main().catch((error) => {
|
|
255
|
+
fail(error.message);
|
|
256
|
+
process.exit(1);
|
|
257
|
+
});
|
|
File without changes
|
|
@@ -1,146 +1,146 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# NotebookLM MCP HTTP Server - WSL Helper Script
|
|
3
|
-
# This script helps interact with the Windows-hosted MCP server from WSL
|
|
4
|
-
#
|
|
5
|
-
# Usage:
|
|
6
|
-
# ./mcp-wsl-helper.sh start Start the server (Windows)
|
|
7
|
-
# ./mcp-wsl-helper.sh stop Stop the server
|
|
8
|
-
# ./mcp-wsl-helper.sh status Check if server is running
|
|
9
|
-
# ./mcp-wsl-helper.sh health Get health status
|
|
10
|
-
# ./mcp-wsl-helper.sh ask "question" Ask a question to the active notebook
|
|
11
|
-
# ./mcp-wsl-helper.sh auth Launch authentication (opens Chrome)
|
|
12
|
-
|
|
13
|
-
set -e
|
|
14
|
-
|
|
15
|
-
MCP_PORT=3000
|
|
16
|
-
MCP_DIR="D:/
|
|
17
|
-
|
|
18
|
-
# Helper function to call the API via PowerShell (bypasses WSL network issues)
|
|
19
|
-
call_api() {
|
|
20
|
-
local method="$1"
|
|
21
|
-
local endpoint="$2"
|
|
22
|
-
local body="$3"
|
|
23
|
-
|
|
24
|
-
if [ -n "$body" ]; then
|
|
25
|
-
powershell.exe -Command "Invoke-RestMethod -Uri 'http://localhost:${MCP_PORT}${endpoint}' -Method ${method} -ContentType 'application/json' -Body '${body}' | ConvertTo-Json -Depth 10" 2>&1
|
|
26
|
-
else
|
|
27
|
-
powershell.exe -Command "Invoke-RestMethod -Uri 'http://localhost:${MCP_PORT}${endpoint}' -Method ${method} | ConvertTo-Json -Depth 10" 2>&1
|
|
28
|
-
fi
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
# Check if server is running
|
|
32
|
-
is_running() {
|
|
33
|
-
cmd.exe /c "netstat -ano | findstr :${MCP_PORT} | findstr LISTENING" >/dev/null 2>&1
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
# Get server PID
|
|
37
|
-
get_pid() {
|
|
38
|
-
cmd.exe /c "netstat -ano | findstr :${MCP_PORT} | findstr LISTENING" 2>/dev/null | awk '{print $5}' | tr -d '\r'
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
case "$1" in
|
|
42
|
-
start)
|
|
43
|
-
if is_running; then
|
|
44
|
-
echo "Server already running (PID: $(get_pid))"
|
|
45
|
-
exit 0
|
|
46
|
-
fi
|
|
47
|
-
echo "Starting NotebookLM MCP HTTP Server..."
|
|
48
|
-
powershell.exe -Command "Start-Process -NoNewWindow -FilePath 'node' -ArgumentList '${MCP_DIR}/dist/http-wrapper.js' -WorkingDirectory '${MCP_DIR}'" 2>&1
|
|
49
|
-
sleep 3
|
|
50
|
-
if is_running; then
|
|
51
|
-
echo "Server started successfully (PID: $(get_pid))"
|
|
52
|
-
echo "Health: http://localhost:${MCP_PORT}/health"
|
|
53
|
-
else
|
|
54
|
-
echo "Failed to start server"
|
|
55
|
-
exit 1
|
|
56
|
-
fi
|
|
57
|
-
;;
|
|
58
|
-
|
|
59
|
-
stop)
|
|
60
|
-
if ! is_running; then
|
|
61
|
-
echo "Server not running"
|
|
62
|
-
exit 0
|
|
63
|
-
fi
|
|
64
|
-
PID=$(get_pid)
|
|
65
|
-
echo "Stopping server (PID: ${PID})..."
|
|
66
|
-
cmd.exe /c "taskkill /PID ${PID} /F" 2>&1
|
|
67
|
-
echo "Server stopped"
|
|
68
|
-
;;
|
|
69
|
-
|
|
70
|
-
status)
|
|
71
|
-
if is_running; then
|
|
72
|
-
echo "Server is RUNNING (PID: $(get_pid))"
|
|
73
|
-
echo ""
|
|
74
|
-
call_api "GET" "/health"
|
|
75
|
-
else
|
|
76
|
-
echo "Server is STOPPED"
|
|
77
|
-
exit 1
|
|
78
|
-
fi
|
|
79
|
-
;;
|
|
80
|
-
|
|
81
|
-
health)
|
|
82
|
-
if ! is_running; then
|
|
83
|
-
echo '{"success":false,"error":"Server not running"}'
|
|
84
|
-
exit 1
|
|
85
|
-
fi
|
|
86
|
-
call_api "GET" "/health"
|
|
87
|
-
;;
|
|
88
|
-
|
|
89
|
-
auth)
|
|
90
|
-
if ! is_running; then
|
|
91
|
-
echo "Server not running. Start it first with: $0 start"
|
|
92
|
-
exit 1
|
|
93
|
-
fi
|
|
94
|
-
echo "Launching authentication (Chrome will open)..."
|
|
95
|
-
call_api "POST" "/setup-auth" '{"show_browser": true}'
|
|
96
|
-
;;
|
|
97
|
-
|
|
98
|
-
ask)
|
|
99
|
-
if [ -z "$2" ]; then
|
|
100
|
-
echo "Usage: $0 ask \"your question here\" [notebook_id]"
|
|
101
|
-
exit 1
|
|
102
|
-
fi
|
|
103
|
-
if ! is_running; then
|
|
104
|
-
echo '{"success":false,"error":"Server not running"}'
|
|
105
|
-
exit 1
|
|
106
|
-
fi
|
|
107
|
-
QUESTION="$2"
|
|
108
|
-
NOTEBOOK_ID="${3:-}"
|
|
109
|
-
|
|
110
|
-
if [ -n "$NOTEBOOK_ID" ]; then
|
|
111
|
-
BODY="{\"question\": \"${QUESTION}\", \"notebook_id\": \"${NOTEBOOK_ID}\"}"
|
|
112
|
-
else
|
|
113
|
-
BODY="{\"question\": \"${QUESTION}\"}"
|
|
114
|
-
fi
|
|
115
|
-
|
|
116
|
-
call_api "POST" "/ask" "$BODY"
|
|
117
|
-
;;
|
|
118
|
-
|
|
119
|
-
notebooks)
|
|
120
|
-
if ! is_running; then
|
|
121
|
-
echo '{"success":false,"error":"Server not running"}'
|
|
122
|
-
exit 1
|
|
123
|
-
fi
|
|
124
|
-
call_api "GET" "/notebooks"
|
|
125
|
-
;;
|
|
126
|
-
|
|
127
|
-
*)
|
|
128
|
-
echo "NotebookLM MCP HTTP Server - WSL Helper"
|
|
129
|
-
echo ""
|
|
130
|
-
echo "Usage: $0 <command> [args]"
|
|
131
|
-
echo ""
|
|
132
|
-
echo "Commands:"
|
|
133
|
-
echo " start Start the server (Windows background process)"
|
|
134
|
-
echo " stop Stop the server"
|
|
135
|
-
echo " status Check server status and health"
|
|
136
|
-
echo " health Get health status (JSON)"
|
|
137
|
-
echo " auth Launch authentication (opens Chrome)"
|
|
138
|
-
echo " ask \"question\" Ask a question to the active notebook"
|
|
139
|
-
echo " notebooks List available notebooks"
|
|
140
|
-
echo ""
|
|
141
|
-
echo "Examples:"
|
|
142
|
-
echo " $0 start"
|
|
143
|
-
echo " $0 ask \"What is the main topic?\" my-notebook"
|
|
144
|
-
echo " $0 status"
|
|
145
|
-
;;
|
|
146
|
-
esac
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# NotebookLM MCP HTTP Server - WSL Helper Script
|
|
3
|
+
# This script helps interact with the Windows-hosted MCP server from WSL
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# ./mcp-wsl-helper.sh start Start the server (Windows)
|
|
7
|
+
# ./mcp-wsl-helper.sh stop Stop the server
|
|
8
|
+
# ./mcp-wsl-helper.sh status Check if server is running
|
|
9
|
+
# ./mcp-wsl-helper.sh health Get health status
|
|
10
|
+
# ./mcp-wsl-helper.sh ask "question" Ask a question to the active notebook
|
|
11
|
+
# ./mcp-wsl-helper.sh auth Launch authentication (opens Chrome)
|
|
12
|
+
|
|
13
|
+
set -e
|
|
14
|
+
|
|
15
|
+
MCP_PORT=3000
|
|
16
|
+
MCP_DIR="D:/path/to/notebooklm-mcp"
|
|
17
|
+
|
|
18
|
+
# Helper function to call the API via PowerShell (bypasses WSL network issues)
|
|
19
|
+
call_api() {
|
|
20
|
+
local method="$1"
|
|
21
|
+
local endpoint="$2"
|
|
22
|
+
local body="$3"
|
|
23
|
+
|
|
24
|
+
if [ -n "$body" ]; then
|
|
25
|
+
powershell.exe -Command "Invoke-RestMethod -Uri 'http://localhost:${MCP_PORT}${endpoint}' -Method ${method} -ContentType 'application/json' -Body '${body}' | ConvertTo-Json -Depth 10" 2>&1
|
|
26
|
+
else
|
|
27
|
+
powershell.exe -Command "Invoke-RestMethod -Uri 'http://localhost:${MCP_PORT}${endpoint}' -Method ${method} | ConvertTo-Json -Depth 10" 2>&1
|
|
28
|
+
fi
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
# Check if server is running
|
|
32
|
+
is_running() {
|
|
33
|
+
cmd.exe /c "netstat -ano | findstr :${MCP_PORT} | findstr LISTENING" >/dev/null 2>&1
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# Get server PID
|
|
37
|
+
get_pid() {
|
|
38
|
+
cmd.exe /c "netstat -ano | findstr :${MCP_PORT} | findstr LISTENING" 2>/dev/null | awk '{print $5}' | tr -d '\r'
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
case "$1" in
|
|
42
|
+
start)
|
|
43
|
+
if is_running; then
|
|
44
|
+
echo "Server already running (PID: $(get_pid))"
|
|
45
|
+
exit 0
|
|
46
|
+
fi
|
|
47
|
+
echo "Starting NotebookLM MCP HTTP Server..."
|
|
48
|
+
powershell.exe -Command "Start-Process -NoNewWindow -FilePath 'node' -ArgumentList '${MCP_DIR}/dist/http-wrapper.js' -WorkingDirectory '${MCP_DIR}'" 2>&1
|
|
49
|
+
sleep 3
|
|
50
|
+
if is_running; then
|
|
51
|
+
echo "Server started successfully (PID: $(get_pid))"
|
|
52
|
+
echo "Health: http://localhost:${MCP_PORT}/health"
|
|
53
|
+
else
|
|
54
|
+
echo "Failed to start server"
|
|
55
|
+
exit 1
|
|
56
|
+
fi
|
|
57
|
+
;;
|
|
58
|
+
|
|
59
|
+
stop)
|
|
60
|
+
if ! is_running; then
|
|
61
|
+
echo "Server not running"
|
|
62
|
+
exit 0
|
|
63
|
+
fi
|
|
64
|
+
PID=$(get_pid)
|
|
65
|
+
echo "Stopping server (PID: ${PID})..."
|
|
66
|
+
cmd.exe /c "taskkill /PID ${PID} /F" 2>&1
|
|
67
|
+
echo "Server stopped"
|
|
68
|
+
;;
|
|
69
|
+
|
|
70
|
+
status)
|
|
71
|
+
if is_running; then
|
|
72
|
+
echo "Server is RUNNING (PID: $(get_pid))"
|
|
73
|
+
echo ""
|
|
74
|
+
call_api "GET" "/health"
|
|
75
|
+
else
|
|
76
|
+
echo "Server is STOPPED"
|
|
77
|
+
exit 1
|
|
78
|
+
fi
|
|
79
|
+
;;
|
|
80
|
+
|
|
81
|
+
health)
|
|
82
|
+
if ! is_running; then
|
|
83
|
+
echo '{"success":false,"error":"Server not running"}'
|
|
84
|
+
exit 1
|
|
85
|
+
fi
|
|
86
|
+
call_api "GET" "/health"
|
|
87
|
+
;;
|
|
88
|
+
|
|
89
|
+
auth)
|
|
90
|
+
if ! is_running; then
|
|
91
|
+
echo "Server not running. Start it first with: $0 start"
|
|
92
|
+
exit 1
|
|
93
|
+
fi
|
|
94
|
+
echo "Launching authentication (Chrome will open)..."
|
|
95
|
+
call_api "POST" "/setup-auth" '{"show_browser": true}'
|
|
96
|
+
;;
|
|
97
|
+
|
|
98
|
+
ask)
|
|
99
|
+
if [ -z "$2" ]; then
|
|
100
|
+
echo "Usage: $0 ask \"your question here\" [notebook_id]"
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
if ! is_running; then
|
|
104
|
+
echo '{"success":false,"error":"Server not running"}'
|
|
105
|
+
exit 1
|
|
106
|
+
fi
|
|
107
|
+
QUESTION="$2"
|
|
108
|
+
NOTEBOOK_ID="${3:-}"
|
|
109
|
+
|
|
110
|
+
if [ -n "$NOTEBOOK_ID" ]; then
|
|
111
|
+
BODY="{\"question\": \"${QUESTION}\", \"notebook_id\": \"${NOTEBOOK_ID}\"}"
|
|
112
|
+
else
|
|
113
|
+
BODY="{\"question\": \"${QUESTION}\"}"
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
call_api "POST" "/ask" "$BODY"
|
|
117
|
+
;;
|
|
118
|
+
|
|
119
|
+
notebooks)
|
|
120
|
+
if ! is_running; then
|
|
121
|
+
echo '{"success":false,"error":"Server not running"}'
|
|
122
|
+
exit 1
|
|
123
|
+
fi
|
|
124
|
+
call_api "GET" "/notebooks"
|
|
125
|
+
;;
|
|
126
|
+
|
|
127
|
+
*)
|
|
128
|
+
echo "NotebookLM MCP HTTP Server - WSL Helper"
|
|
129
|
+
echo ""
|
|
130
|
+
echo "Usage: $0 <command> [args]"
|
|
131
|
+
echo ""
|
|
132
|
+
echo "Commands:"
|
|
133
|
+
echo " start Start the server (Windows background process)"
|
|
134
|
+
echo " stop Stop the server"
|
|
135
|
+
echo " status Check server status and health"
|
|
136
|
+
echo " health Get health status (JSON)"
|
|
137
|
+
echo " auth Launch authentication (opens Chrome)"
|
|
138
|
+
echo " ask \"question\" Ask a question to the active notebook"
|
|
139
|
+
echo " notebooks List available notebooks"
|
|
140
|
+
echo ""
|
|
141
|
+
echo "Examples:"
|
|
142
|
+
echo " $0 start"
|
|
143
|
+
echo " $0 ask \"What is the main topic?\" my-notebook"
|
|
144
|
+
echo " $0 status"
|
|
145
|
+
;;
|
|
146
|
+
esac
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
' NotebookLM MCP Server -
|
|
2
|
-
'
|
|
3
|
-
' Pour démarrage automatique : ajouter au dossier Démarrage Windows
|
|
1
|
+
' NotebookLM MCP Server - hidden startup helper
|
|
2
|
+
' Starts the HTTP server without opening a visible console window.
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
Dim fso
|
|
5
|
+
Dim shell
|
|
6
|
+
Dim scriptDir
|
|
7
|
+
Dim projectDir
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
Set
|
|
10
|
-
WshEnv("DATA_DIR") = "C:\Users\romai\AppData\Local\notebooklm-mcp\Data"
|
|
9
|
+
Set fso = CreateObject("Scripting.FileSystemObject")
|
|
10
|
+
Set shell = CreateObject("WScript.Shell")
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
scriptDir = fso.GetParentFolderName(WScript.ScriptFullName)
|
|
13
|
+
projectDir = fso.GetParentFolderName(scriptDir)
|
|
14
|
+
|
|
15
|
+
shell.CurrentDirectory = projectDir
|
|
16
|
+
shell.Run "node dist/http-wrapper.js", 0, False
|
package/scripts/start-server.ps1
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
.EXAMPLE
|
|
13
13
|
# Run in background (hidden window)
|
|
14
|
-
Start-Process powershell -ArgumentList "-ExecutionPolicy Bypass -File D:\
|
|
14
|
+
Start-Process powershell -ArgumentList "-ExecutionPolicy Bypass -File D:\path\to\notebooklm-mcp\scripts\start-server.ps1" -WindowStyle Hidden
|
|
15
15
|
#>
|
|
16
16
|
|
|
17
17
|
param(
|
package/scripts/start-vnc.sh
CHANGED
|
File without changes
|
package/scripts/stop-server.bat
CHANGED
|
File without changes
|
package/scripts/stop-server.ps1
CHANGED
|
File without changes
|