@pan-sec/notebooklm-mcp 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +289 -0
- package/SECURITY.md +539 -0
- package/dist/auth/auth-manager.d.ts +137 -0
- package/dist/auth/auth-manager.d.ts.map +1 -0
- package/dist/auth/auth-manager.js +984 -0
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/auth/mcp-auth.d.ts +102 -0
- package/dist/auth/mcp-auth.d.ts.map +1 -0
- package/dist/auth/mcp-auth.js +286 -0
- package/dist/auth/mcp-auth.js.map +1 -0
- package/dist/config.d.ts +89 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +216 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +26 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +41 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +371 -0
- package/dist/index.js.map +1 -0
- package/dist/library/notebook-library.d.ts +70 -0
- package/dist/library/notebook-library.d.ts.map +1 -0
- package/dist/library/notebook-library.js +279 -0
- package/dist/library/notebook-library.js.map +1 -0
- package/dist/library/types.d.ts +67 -0
- package/dist/library/types.d.ts.map +1 -0
- package/dist/library/types.js +8 -0
- package/dist/library/types.js.map +1 -0
- package/dist/resources/resource-handlers.d.ts +22 -0
- package/dist/resources/resource-handlers.d.ts.map +1 -0
- package/dist/resources/resource-handlers.js +216 -0
- package/dist/resources/resource-handlers.js.map +1 -0
- package/dist/session/browser-session.d.ts +108 -0
- package/dist/session/browser-session.d.ts.map +1 -0
- package/dist/session/browser-session.js +621 -0
- package/dist/session/browser-session.js.map +1 -0
- package/dist/session/session-manager.d.ts +77 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +314 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/session/session-timeout.d.ts +122 -0
- package/dist/session/session-timeout.d.ts.map +1 -0
- package/dist/session/session-timeout.js +281 -0
- package/dist/session/session-timeout.js.map +1 -0
- package/dist/session/shared-context-manager.d.ts +107 -0
- package/dist/session/shared-context-manager.d.ts.map +1 -0
- package/dist/session/shared-context-manager.js +447 -0
- package/dist/session/shared-context-manager.js.map +1 -0
- package/dist/tools/definitions/ask-question.d.ts +8 -0
- package/dist/tools/definitions/ask-question.d.ts.map +1 -0
- package/dist/tools/definitions/ask-question.js +211 -0
- package/dist/tools/definitions/ask-question.js.map +1 -0
- package/dist/tools/definitions/notebook-management.d.ts +3 -0
- package/dist/tools/definitions/notebook-management.d.ts.map +1 -0
- package/dist/tools/definitions/notebook-management.js +243 -0
- package/dist/tools/definitions/notebook-management.js.map +1 -0
- package/dist/tools/definitions/session-management.d.ts +3 -0
- package/dist/tools/definitions/session-management.d.ts.map +1 -0
- package/dist/tools/definitions/session-management.js +41 -0
- package/dist/tools/definitions/session-management.js.map +1 -0
- package/dist/tools/definitions/system.d.ts +3 -0
- package/dist/tools/definitions/system.d.ts.map +1 -0
- package/dist/tools/definitions/system.js +143 -0
- package/dist/tools/definitions/system.js.map +1 -0
- package/dist/tools/definitions.d.ts +12 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +26 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/handlers.d.ts +213 -0
- package/dist/tools/handlers.d.ts.map +1 -0
- package/dist/tools/handlers.js +813 -0
- package/dist/tools/handlers.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +82 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/audit-logger.d.ts +140 -0
- package/dist/utils/audit-logger.d.ts.map +1 -0
- package/dist/utils/audit-logger.js +361 -0
- package/dist/utils/audit-logger.js.map +1 -0
- package/dist/utils/cert-pinning.d.ts +97 -0
- package/dist/utils/cert-pinning.d.ts.map +1 -0
- package/dist/utils/cert-pinning.js +328 -0
- package/dist/utils/cert-pinning.js.map +1 -0
- package/dist/utils/cleanup-manager.d.ts +133 -0
- package/dist/utils/cleanup-manager.d.ts.map +1 -0
- package/dist/utils/cleanup-manager.js +673 -0
- package/dist/utils/cleanup-manager.js.map +1 -0
- package/dist/utils/cli-handler.d.ts +16 -0
- package/dist/utils/cli-handler.d.ts.map +1 -0
- package/dist/utils/cli-handler.js +102 -0
- package/dist/utils/cli-handler.js.map +1 -0
- package/dist/utils/crypto.d.ts +175 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +612 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/logger.d.ts +61 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +92 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/page-utils.d.ts +54 -0
- package/dist/utils/page-utils.d.ts.map +1 -0
- package/dist/utils/page-utils.js +405 -0
- package/dist/utils/page-utils.js.map +1 -0
- package/dist/utils/response-validator.d.ts +98 -0
- package/dist/utils/response-validator.d.ts.map +1 -0
- package/dist/utils/response-validator.js +352 -0
- package/dist/utils/response-validator.js.map +1 -0
- package/dist/utils/secrets-scanner.d.ts +126 -0
- package/dist/utils/secrets-scanner.d.ts.map +1 -0
- package/dist/utils/secrets-scanner.js +443 -0
- package/dist/utils/secrets-scanner.js.map +1 -0
- package/dist/utils/secure-memory.d.ts +130 -0
- package/dist/utils/secure-memory.d.ts.map +1 -0
- package/dist/utils/secure-memory.js +279 -0
- package/dist/utils/secure-memory.js.map +1 -0
- package/dist/utils/security.d.ts +83 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +272 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +37 -0
- package/dist/utils/settings-manager.d.ts.map +1 -0
- package/dist/utils/settings-manager.js +125 -0
- package/dist/utils/settings-manager.js.map +1 -0
- package/dist/utils/stealth-utils.d.ts +135 -0
- package/dist/utils/stealth-utils.d.ts.map +1 -0
- package/dist/utils/stealth-utils.js +398 -0
- package/dist/utils/stealth-utils.js.map +1 -0
- package/dist/utils/tool-validation.d.ts +93 -0
- package/dist/utils/tool-validation.d.ts.map +1 -0
- package/dist/utils/tool-validation.js +277 -0
- package/dist/utils/tool-validation.js.map +1 -0
- package/docs/SECURITY_IMPLEMENTATION_PLAN.md +437 -0
- package/docs/configuration.md +94 -0
- package/docs/tools.md +34 -0
- package/docs/troubleshooting.md +59 -0
- package/docs/usage-guide.md +245 -0
- package/package.json +82 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for NotebookLM MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Config Priority (highest to lowest):
|
|
5
|
+
* 1. Hardcoded Defaults (works out of the box!)
|
|
6
|
+
* 2. Environment Variables (optional, for advanced users)
|
|
7
|
+
* 3. Tool Parameters (passed by Claude at runtime)
|
|
8
|
+
*
|
|
9
|
+
* No config.json file needed - all settings via ENV or tool parameters!
|
|
10
|
+
*/
|
|
11
|
+
import envPaths from "env-paths";
|
|
12
|
+
import fs from "fs";
|
|
13
|
+
import path from "path";
|
|
14
|
+
// Cross-platform data paths (unified without -nodejs suffix)
|
|
15
|
+
// Linux: ~/.local/share/notebooklm-mcp/
|
|
16
|
+
// macOS: ~/Library/Application Support/notebooklm-mcp/
|
|
17
|
+
// Windows: %APPDATA%\notebooklm-mcp\
|
|
18
|
+
// IMPORTANT: Pass empty string suffix to disable envPaths' default '-nodejs' suffix!
|
|
19
|
+
const paths = envPaths("notebooklm-mcp", { suffix: "" });
|
|
20
|
+
/**
|
|
21
|
+
* Google NotebookLM Auth URL (used by setup_auth)
|
|
22
|
+
* This is the base Google login URL that redirects to NotebookLM
|
|
23
|
+
*/
|
|
24
|
+
export const NOTEBOOKLM_AUTH_URL = "https://accounts.google.com/v3/signin/identifier?continue=https%3A%2F%2Fnotebooklm.google.com%2F&flowName=GlifWebSignIn&flowEntry=ServiceLogin";
|
|
25
|
+
/**
|
|
26
|
+
* Default Configuration (works out of the box!)
|
|
27
|
+
*/
|
|
28
|
+
const DEFAULTS = {
|
|
29
|
+
// NotebookLM
|
|
30
|
+
notebookUrl: "",
|
|
31
|
+
// Browser Settings
|
|
32
|
+
headless: true,
|
|
33
|
+
browserTimeout: 30000,
|
|
34
|
+
viewport: { width: 1024, height: 768 },
|
|
35
|
+
// Session Management
|
|
36
|
+
maxSessions: 10,
|
|
37
|
+
sessionTimeout: 900, // 15 minutes
|
|
38
|
+
// Authentication
|
|
39
|
+
autoLoginEnabled: false,
|
|
40
|
+
loginEmail: "",
|
|
41
|
+
loginPassword: "",
|
|
42
|
+
autoLoginTimeoutMs: 120000, // 2 minutes
|
|
43
|
+
// Stealth Settings
|
|
44
|
+
stealthEnabled: true,
|
|
45
|
+
stealthRandomDelays: true,
|
|
46
|
+
stealthHumanTyping: true,
|
|
47
|
+
stealthMouseMovements: true,
|
|
48
|
+
typingWpmMin: 160,
|
|
49
|
+
typingWpmMax: 240,
|
|
50
|
+
minDelayMs: 100,
|
|
51
|
+
maxDelayMs: 400,
|
|
52
|
+
// Paths (cross-platform via env-paths)
|
|
53
|
+
configDir: paths.config,
|
|
54
|
+
dataDir: paths.data,
|
|
55
|
+
browserStateDir: path.join(paths.data, "browser_state"),
|
|
56
|
+
chromeProfileDir: path.join(paths.data, "chrome_profile"),
|
|
57
|
+
chromeInstancesDir: path.join(paths.data, "chrome_profile_instances"),
|
|
58
|
+
// Library Configuration
|
|
59
|
+
notebookDescription: "General knowledge base",
|
|
60
|
+
notebookTopics: ["General topics"],
|
|
61
|
+
notebookContentTypes: ["documentation", "examples"],
|
|
62
|
+
notebookUseCases: ["General research"],
|
|
63
|
+
// Multi-instance strategy
|
|
64
|
+
profileStrategy: "auto",
|
|
65
|
+
cloneProfileOnIsolated: false,
|
|
66
|
+
cleanupInstancesOnStartup: true,
|
|
67
|
+
cleanupInstancesOnShutdown: true,
|
|
68
|
+
instanceProfileTtlHours: 72,
|
|
69
|
+
instanceProfileMaxCount: 20,
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Parse boolean from string (for env vars)
|
|
73
|
+
*/
|
|
74
|
+
function parseBoolean(value, defaultValue) {
|
|
75
|
+
if (value === undefined)
|
|
76
|
+
return defaultValue;
|
|
77
|
+
const lower = value.toLowerCase();
|
|
78
|
+
if (lower === "true" || lower === "1")
|
|
79
|
+
return true;
|
|
80
|
+
if (lower === "false" || lower === "0")
|
|
81
|
+
return false;
|
|
82
|
+
return defaultValue;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Parse integer from string (for env vars)
|
|
86
|
+
*/
|
|
87
|
+
function parseInteger(value, defaultValue) {
|
|
88
|
+
if (value === undefined)
|
|
89
|
+
return defaultValue;
|
|
90
|
+
const parsed = Number.parseInt(value, 10);
|
|
91
|
+
return Number.isNaN(parsed) ? defaultValue : parsed;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Parse comma-separated array (for env vars)
|
|
95
|
+
*/
|
|
96
|
+
function parseArray(value, defaultValue) {
|
|
97
|
+
if (!value)
|
|
98
|
+
return defaultValue;
|
|
99
|
+
return value.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Apply environment variable overrides (legacy support)
|
|
103
|
+
*/
|
|
104
|
+
function applyEnvOverrides(config) {
|
|
105
|
+
return {
|
|
106
|
+
...config,
|
|
107
|
+
// Override with env vars if present
|
|
108
|
+
notebookUrl: process.env.NOTEBOOK_URL || config.notebookUrl,
|
|
109
|
+
headless: parseBoolean(process.env.HEADLESS, config.headless),
|
|
110
|
+
browserTimeout: parseInteger(process.env.BROWSER_TIMEOUT, config.browserTimeout),
|
|
111
|
+
maxSessions: parseInteger(process.env.MAX_SESSIONS, config.maxSessions),
|
|
112
|
+
sessionTimeout: parseInteger(process.env.SESSION_TIMEOUT, config.sessionTimeout),
|
|
113
|
+
autoLoginEnabled: parseBoolean(process.env.AUTO_LOGIN_ENABLED, config.autoLoginEnabled),
|
|
114
|
+
loginEmail: process.env.LOGIN_EMAIL || config.loginEmail,
|
|
115
|
+
loginPassword: process.env.LOGIN_PASSWORD || config.loginPassword,
|
|
116
|
+
autoLoginTimeoutMs: parseInteger(process.env.AUTO_LOGIN_TIMEOUT_MS, config.autoLoginTimeoutMs),
|
|
117
|
+
stealthEnabled: parseBoolean(process.env.STEALTH_ENABLED, config.stealthEnabled),
|
|
118
|
+
stealthRandomDelays: parseBoolean(process.env.STEALTH_RANDOM_DELAYS, config.stealthRandomDelays),
|
|
119
|
+
stealthHumanTyping: parseBoolean(process.env.STEALTH_HUMAN_TYPING, config.stealthHumanTyping),
|
|
120
|
+
stealthMouseMovements: parseBoolean(process.env.STEALTH_MOUSE_MOVEMENTS, config.stealthMouseMovements),
|
|
121
|
+
typingWpmMin: parseInteger(process.env.TYPING_WPM_MIN, config.typingWpmMin),
|
|
122
|
+
typingWpmMax: parseInteger(process.env.TYPING_WPM_MAX, config.typingWpmMax),
|
|
123
|
+
minDelayMs: parseInteger(process.env.MIN_DELAY_MS, config.minDelayMs),
|
|
124
|
+
maxDelayMs: parseInteger(process.env.MAX_DELAY_MS, config.maxDelayMs),
|
|
125
|
+
notebookDescription: process.env.NOTEBOOK_DESCRIPTION || config.notebookDescription,
|
|
126
|
+
notebookTopics: parseArray(process.env.NOTEBOOK_TOPICS, config.notebookTopics),
|
|
127
|
+
notebookContentTypes: parseArray(process.env.NOTEBOOK_CONTENT_TYPES, config.notebookContentTypes),
|
|
128
|
+
notebookUseCases: parseArray(process.env.NOTEBOOK_USE_CASES, config.notebookUseCases),
|
|
129
|
+
profileStrategy: process.env.NOTEBOOK_PROFILE_STRATEGY || config.profileStrategy,
|
|
130
|
+
cloneProfileOnIsolated: parseBoolean(process.env.NOTEBOOK_CLONE_PROFILE, config.cloneProfileOnIsolated),
|
|
131
|
+
cleanupInstancesOnStartup: parseBoolean(process.env.NOTEBOOK_CLEANUP_ON_STARTUP, config.cleanupInstancesOnStartup),
|
|
132
|
+
cleanupInstancesOnShutdown: parseBoolean(process.env.NOTEBOOK_CLEANUP_ON_SHUTDOWN, config.cleanupInstancesOnShutdown),
|
|
133
|
+
instanceProfileTtlHours: parseInteger(process.env.NOTEBOOK_INSTANCE_TTL_HOURS, config.instanceProfileTtlHours),
|
|
134
|
+
instanceProfileMaxCount: parseInteger(process.env.NOTEBOOK_INSTANCE_MAX_COUNT, config.instanceProfileMaxCount),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Build final configuration
|
|
139
|
+
* Priority: Defaults → Environment Variables → Tool Parameters (at runtime)
|
|
140
|
+
* No config.json files - everything via ENV or tool parameters!
|
|
141
|
+
*/
|
|
142
|
+
function buildConfig() {
|
|
143
|
+
return applyEnvOverrides(DEFAULTS);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Global configuration instance
|
|
147
|
+
*/
|
|
148
|
+
export const CONFIG = buildConfig();
|
|
149
|
+
/**
|
|
150
|
+
* Ensure all required directories exist
|
|
151
|
+
* NOTE: We do NOT create configDir - it's not needed!
|
|
152
|
+
*/
|
|
153
|
+
export function ensureDirectories() {
|
|
154
|
+
const dirs = [
|
|
155
|
+
CONFIG.dataDir,
|
|
156
|
+
CONFIG.browserStateDir,
|
|
157
|
+
CONFIG.chromeProfileDir,
|
|
158
|
+
CONFIG.chromeInstancesDir,
|
|
159
|
+
];
|
|
160
|
+
for (const dir of dirs) {
|
|
161
|
+
if (!fs.existsSync(dir)) {
|
|
162
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Apply browser options to CONFIG (returns modified copy, doesn't mutate global CONFIG)
|
|
168
|
+
*/
|
|
169
|
+
export function applyBrowserOptions(options, legacyShowBrowser) {
|
|
170
|
+
const config = { ...CONFIG };
|
|
171
|
+
// Handle legacy show_browser parameter
|
|
172
|
+
if (legacyShowBrowser !== undefined) {
|
|
173
|
+
config.headless = !legacyShowBrowser;
|
|
174
|
+
}
|
|
175
|
+
// Apply browser_options (takes precedence over legacy parameter)
|
|
176
|
+
if (options) {
|
|
177
|
+
if (options.show !== undefined) {
|
|
178
|
+
config.headless = !options.show;
|
|
179
|
+
}
|
|
180
|
+
if (options.headless !== undefined) {
|
|
181
|
+
config.headless = options.headless;
|
|
182
|
+
}
|
|
183
|
+
if (options.timeout_ms !== undefined) {
|
|
184
|
+
config.browserTimeout = options.timeout_ms;
|
|
185
|
+
}
|
|
186
|
+
if (options.stealth) {
|
|
187
|
+
const s = options.stealth;
|
|
188
|
+
if (s.enabled !== undefined)
|
|
189
|
+
config.stealthEnabled = s.enabled;
|
|
190
|
+
if (s.random_delays !== undefined)
|
|
191
|
+
config.stealthRandomDelays = s.random_delays;
|
|
192
|
+
if (s.human_typing !== undefined)
|
|
193
|
+
config.stealthHumanTyping = s.human_typing;
|
|
194
|
+
if (s.mouse_movements !== undefined)
|
|
195
|
+
config.stealthMouseMovements = s.mouse_movements;
|
|
196
|
+
if (s.typing_wpm_min !== undefined)
|
|
197
|
+
config.typingWpmMin = s.typing_wpm_min;
|
|
198
|
+
if (s.typing_wpm_max !== undefined)
|
|
199
|
+
config.typingWpmMax = s.typing_wpm_max;
|
|
200
|
+
if (s.delay_min_ms !== undefined)
|
|
201
|
+
config.minDelayMs = s.delay_min_ms;
|
|
202
|
+
if (s.delay_max_ms !== undefined)
|
|
203
|
+
config.maxDelayMs = s.delay_max_ms;
|
|
204
|
+
}
|
|
205
|
+
if (options.viewport) {
|
|
206
|
+
config.viewport = {
|
|
207
|
+
width: options.viewport.width ?? config.viewport.width,
|
|
208
|
+
height: options.viewport.height ?? config.viewport.height,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return config;
|
|
213
|
+
}
|
|
214
|
+
// Create directories on import
|
|
215
|
+
ensureDirectories();
|
|
216
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom Error Types for NotebookLM MCP Server
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown when NotebookLM rate limit is exceeded
|
|
6
|
+
*
|
|
7
|
+
* Free users have 50 queries/day limit.
|
|
8
|
+
* This error indicates the user should:
|
|
9
|
+
* - Use re_auth tool to switch Google accounts
|
|
10
|
+
* - Wait until tomorrow for quota reset
|
|
11
|
+
* - Upgrade to Google AI Pro/Ultra for higher limits
|
|
12
|
+
*/
|
|
13
|
+
export declare class RateLimitError extends Error {
|
|
14
|
+
constructor(message?: string);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Error thrown when authentication fails
|
|
18
|
+
*
|
|
19
|
+
* This error can suggest cleanup workflow for persistent issues.
|
|
20
|
+
* Especially useful when upgrading from old installation (notebooklm-mcp-nodejs).
|
|
21
|
+
*/
|
|
22
|
+
export declare class AuthenticationError extends Error {
|
|
23
|
+
suggestCleanup: boolean;
|
|
24
|
+
constructor(message: string, suggestCleanup?: boolean);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,GAAE,MAA2E;CASjG;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,cAAc,EAAE,OAAO,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe;CAU7D"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom Error Types for NotebookLM MCP Server
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown when NotebookLM rate limit is exceeded
|
|
6
|
+
*
|
|
7
|
+
* Free users have 50 queries/day limit.
|
|
8
|
+
* This error indicates the user should:
|
|
9
|
+
* - Use re_auth tool to switch Google accounts
|
|
10
|
+
* - Wait until tomorrow for quota reset
|
|
11
|
+
* - Upgrade to Google AI Pro/Ultra for higher limits
|
|
12
|
+
*/
|
|
13
|
+
export class RateLimitError extends Error {
|
|
14
|
+
constructor(message = "NotebookLM rate limit reached (50 queries/day for free accounts)") {
|
|
15
|
+
super(message);
|
|
16
|
+
this.name = "RateLimitError";
|
|
17
|
+
// Maintain proper stack trace for where error was thrown (V8 only)
|
|
18
|
+
if (Error.captureStackTrace) {
|
|
19
|
+
Error.captureStackTrace(this, RateLimitError);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Error thrown when authentication fails
|
|
25
|
+
*
|
|
26
|
+
* This error can suggest cleanup workflow for persistent issues.
|
|
27
|
+
* Especially useful when upgrading from old installation (notebooklm-mcp-nodejs).
|
|
28
|
+
*/
|
|
29
|
+
export class AuthenticationError extends Error {
|
|
30
|
+
suggestCleanup;
|
|
31
|
+
constructor(message, suggestCleanup = false) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = "AuthenticationError";
|
|
34
|
+
this.suggestCleanup = suggestCleanup;
|
|
35
|
+
// Maintain proper stack trace for where error was thrown (V8 only)
|
|
36
|
+
if (Error.captureStackTrace) {
|
|
37
|
+
Error.captureStackTrace(this, AuthenticationError);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,UAAkB,kEAAkE;QAC9F,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAE7B,mEAAmE;QACnE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,cAAc,CAAU;IAExB,YAAY,OAAe,EAAE,iBAA0B,KAAK;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,mEAAmE;QACnE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* NotebookLM MCP Server
|
|
4
|
+
*
|
|
5
|
+
* MCP Server for Google NotebookLM - Chat with Gemini 2.5 through NotebookLM
|
|
6
|
+
* with session support and human-like behavior!
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Session-based contextual conversations
|
|
10
|
+
* - Auto re-login on session expiry
|
|
11
|
+
* - Human-like typing and mouse movements
|
|
12
|
+
* - Persistent browser fingerprint
|
|
13
|
+
* - Stealth mode with Patchright
|
|
14
|
+
* - Claude Code integration via npx
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* npx notebooklm-mcp
|
|
18
|
+
* node dist/index.js
|
|
19
|
+
*
|
|
20
|
+
* Environment Variables:
|
|
21
|
+
* NOTEBOOK_URL - Default NotebookLM notebook URL
|
|
22
|
+
* AUTO_LOGIN_ENABLED - Enable automatic login (true/false)
|
|
23
|
+
* LOGIN_EMAIL - Google email for auto-login
|
|
24
|
+
* LOGIN_PASSWORD - Google password for auto-login
|
|
25
|
+
* HEADLESS - Run browser in headless mode (true/false)
|
|
26
|
+
* MAX_SESSIONS - Maximum concurrent sessions (default: 10)
|
|
27
|
+
* SESSION_TIMEOUT - Session timeout in seconds (default: 900)
|
|
28
|
+
*
|
|
29
|
+
* Based on the Python NotebookLM API implementation
|
|
30
|
+
*/
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG"}
|