@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/index.js
ADDED
|
@@ -0,0 +1,371 @@
|
|
|
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
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
32
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
33
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
34
|
+
import { AuthManager } from "./auth/auth-manager.js";
|
|
35
|
+
import { SessionManager } from "./session/session-manager.js";
|
|
36
|
+
import { NotebookLibrary } from "./library/notebook-library.js";
|
|
37
|
+
import { ToolHandlers, buildToolDefinitions } from "./tools/index.js";
|
|
38
|
+
import { ResourceHandlers } from "./resources/resource-handlers.js";
|
|
39
|
+
import { SettingsManager } from "./utils/settings-manager.js";
|
|
40
|
+
import { CliHandler } from "./utils/cli-handler.js";
|
|
41
|
+
import { CONFIG } from "./config.js";
|
|
42
|
+
import { log } from "./utils/logger.js";
|
|
43
|
+
import { audit, getAuditLogger } from "./utils/audit-logger.js";
|
|
44
|
+
import { checkSecurityContext } from "./utils/security.js";
|
|
45
|
+
import { getMCPAuthenticator, authenticateMCPRequest } from "./auth/mcp-auth.js";
|
|
46
|
+
/**
|
|
47
|
+
* Main MCP Server Class
|
|
48
|
+
*/
|
|
49
|
+
class NotebookLMMCPServer {
|
|
50
|
+
server;
|
|
51
|
+
authManager;
|
|
52
|
+
sessionManager;
|
|
53
|
+
library;
|
|
54
|
+
toolHandlers;
|
|
55
|
+
resourceHandlers;
|
|
56
|
+
settingsManager;
|
|
57
|
+
toolDefinitions;
|
|
58
|
+
constructor() {
|
|
59
|
+
// Initialize MCP Server
|
|
60
|
+
this.server = new Server({
|
|
61
|
+
name: "notebooklm-mcp",
|
|
62
|
+
version: "1.1.0",
|
|
63
|
+
}, {
|
|
64
|
+
capabilities: {
|
|
65
|
+
tools: {},
|
|
66
|
+
resources: {},
|
|
67
|
+
resourceTemplates: {},
|
|
68
|
+
prompts: {}, // Required for completion/complete support in some clients
|
|
69
|
+
logging: {},
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
// Initialize managers
|
|
73
|
+
this.authManager = new AuthManager();
|
|
74
|
+
this.sessionManager = new SessionManager(this.authManager);
|
|
75
|
+
this.library = new NotebookLibrary();
|
|
76
|
+
this.settingsManager = new SettingsManager();
|
|
77
|
+
// Initialize handlers
|
|
78
|
+
this.toolHandlers = new ToolHandlers(this.sessionManager, this.authManager, this.library);
|
|
79
|
+
this.resourceHandlers = new ResourceHandlers(this.library);
|
|
80
|
+
// Build and Filter tool definitions
|
|
81
|
+
const allTools = buildToolDefinitions(this.library);
|
|
82
|
+
this.toolDefinitions = this.settingsManager.filterTools(allTools);
|
|
83
|
+
// Setup handlers
|
|
84
|
+
this.setupHandlers();
|
|
85
|
+
this.setupShutdownHandlers();
|
|
86
|
+
const activeSettings = this.settingsManager.getEffectiveSettings();
|
|
87
|
+
log.info("🚀 NotebookLM MCP Server initialized");
|
|
88
|
+
log.info(` Version: 1.1.0`);
|
|
89
|
+
log.info(` Node: ${process.version}`);
|
|
90
|
+
log.info(` Platform: ${process.platform}`);
|
|
91
|
+
log.info(` Profile: ${activeSettings.profile} (${this.toolDefinitions.length} tools active)`);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Setup MCP request handlers
|
|
95
|
+
*/
|
|
96
|
+
setupHandlers() {
|
|
97
|
+
// Register Resource Handlers (Resources, Templates, Completions)
|
|
98
|
+
this.resourceHandlers.registerHandlers(this.server);
|
|
99
|
+
// List available tools
|
|
100
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
101
|
+
log.info("📋 [MCP] list_tools request received");
|
|
102
|
+
return {
|
|
103
|
+
tools: this.toolDefinitions,
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
// Handle tool calls
|
|
107
|
+
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
108
|
+
const { name, arguments: args } = request.params;
|
|
109
|
+
const progressToken = args?._meta?.progressToken;
|
|
110
|
+
const authToken = args?._meta?.authToken || process.env.NLMCP_AUTH_TOKEN;
|
|
111
|
+
log.info(`🔧 [MCP] Tool call: ${name}`);
|
|
112
|
+
if (progressToken) {
|
|
113
|
+
log.info(` 📊 Progress token: ${progressToken}`);
|
|
114
|
+
}
|
|
115
|
+
// === SECURITY: MCP Authentication ===
|
|
116
|
+
const authResult = await authenticateMCPRequest(authToken, name);
|
|
117
|
+
if (!authResult.authenticated) {
|
|
118
|
+
log.warning(`🔒 [MCP] Authentication failed for tool: ${name}`);
|
|
119
|
+
return {
|
|
120
|
+
content: [
|
|
121
|
+
{
|
|
122
|
+
type: "text",
|
|
123
|
+
text: JSON.stringify({
|
|
124
|
+
success: false,
|
|
125
|
+
error: authResult.error || "Authentication required",
|
|
126
|
+
}),
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// Create progress callback function
|
|
132
|
+
const sendProgress = async (message, progress, total) => {
|
|
133
|
+
if (progressToken) {
|
|
134
|
+
await this.server.notification({
|
|
135
|
+
method: "notifications/progress",
|
|
136
|
+
params: {
|
|
137
|
+
progressToken,
|
|
138
|
+
message,
|
|
139
|
+
...(progress !== undefined && { progress }),
|
|
140
|
+
...(total !== undefined && { total }),
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
log.dim(` 📊 Progress: ${message}`);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
try {
|
|
147
|
+
let result;
|
|
148
|
+
switch (name) {
|
|
149
|
+
case "ask_question":
|
|
150
|
+
result = await this.toolHandlers.handleAskQuestion(args, sendProgress);
|
|
151
|
+
break;
|
|
152
|
+
case "add_notebook":
|
|
153
|
+
result = await this.toolHandlers.handleAddNotebook(args);
|
|
154
|
+
break;
|
|
155
|
+
case "list_notebooks":
|
|
156
|
+
result = await this.toolHandlers.handleListNotebooks();
|
|
157
|
+
break;
|
|
158
|
+
case "get_notebook":
|
|
159
|
+
result = await this.toolHandlers.handleGetNotebook(args);
|
|
160
|
+
break;
|
|
161
|
+
case "select_notebook":
|
|
162
|
+
result = await this.toolHandlers.handleSelectNotebook(args);
|
|
163
|
+
break;
|
|
164
|
+
case "update_notebook":
|
|
165
|
+
result = await this.toolHandlers.handleUpdateNotebook(args);
|
|
166
|
+
break;
|
|
167
|
+
case "remove_notebook":
|
|
168
|
+
result = await this.toolHandlers.handleRemoveNotebook(args);
|
|
169
|
+
break;
|
|
170
|
+
case "search_notebooks":
|
|
171
|
+
result = await this.toolHandlers.handleSearchNotebooks(args);
|
|
172
|
+
break;
|
|
173
|
+
case "get_library_stats":
|
|
174
|
+
result = await this.toolHandlers.handleGetLibraryStats();
|
|
175
|
+
break;
|
|
176
|
+
case "list_sessions":
|
|
177
|
+
result = await this.toolHandlers.handleListSessions();
|
|
178
|
+
break;
|
|
179
|
+
case "close_session":
|
|
180
|
+
result = await this.toolHandlers.handleCloseSession(args);
|
|
181
|
+
break;
|
|
182
|
+
case "reset_session":
|
|
183
|
+
result = await this.toolHandlers.handleResetSession(args);
|
|
184
|
+
break;
|
|
185
|
+
case "get_health":
|
|
186
|
+
result = await this.toolHandlers.handleGetHealth();
|
|
187
|
+
break;
|
|
188
|
+
case "setup_auth":
|
|
189
|
+
result = await this.toolHandlers.handleSetupAuth(args, sendProgress);
|
|
190
|
+
break;
|
|
191
|
+
case "re_auth":
|
|
192
|
+
result = await this.toolHandlers.handleReAuth(args, sendProgress);
|
|
193
|
+
break;
|
|
194
|
+
case "cleanup_data":
|
|
195
|
+
result = await this.toolHandlers.handleCleanupData(args);
|
|
196
|
+
break;
|
|
197
|
+
default:
|
|
198
|
+
log.error(`❌ [MCP] Unknown tool: ${name}`);
|
|
199
|
+
return {
|
|
200
|
+
content: [
|
|
201
|
+
{
|
|
202
|
+
type: "text",
|
|
203
|
+
text: JSON.stringify({
|
|
204
|
+
success: false,
|
|
205
|
+
error: `Unknown tool: ${name}`,
|
|
206
|
+
}, null, 2),
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
// Return result
|
|
212
|
+
return {
|
|
213
|
+
content: [
|
|
214
|
+
{
|
|
215
|
+
type: "text",
|
|
216
|
+
text: JSON.stringify(result, null, 2),
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
223
|
+
log.error(`❌ [MCP] Tool execution error: ${errorMessage}`);
|
|
224
|
+
return {
|
|
225
|
+
content: [
|
|
226
|
+
{
|
|
227
|
+
type: "text",
|
|
228
|
+
text: JSON.stringify({
|
|
229
|
+
success: false,
|
|
230
|
+
error: errorMessage,
|
|
231
|
+
}, null, 2),
|
|
232
|
+
},
|
|
233
|
+
],
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Setup graceful shutdown handlers
|
|
240
|
+
*/
|
|
241
|
+
setupShutdownHandlers() {
|
|
242
|
+
let shuttingDown = false;
|
|
243
|
+
const shutdown = async (signal) => {
|
|
244
|
+
if (shuttingDown) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
shuttingDown = true;
|
|
248
|
+
log.info(`\n🛑 Received ${signal}, shutting down gracefully...`);
|
|
249
|
+
try {
|
|
250
|
+
// Cleanup tool handlers (closes all sessions)
|
|
251
|
+
await this.toolHandlers.cleanup();
|
|
252
|
+
// Close server
|
|
253
|
+
await this.server.close();
|
|
254
|
+
log.success("✅ Shutdown complete");
|
|
255
|
+
process.exit(0);
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
log.error(`❌ Error during shutdown: ${error}`);
|
|
259
|
+
process.exit(1);
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
const requestShutdown = (signal) => {
|
|
263
|
+
void shutdown(signal);
|
|
264
|
+
};
|
|
265
|
+
process.on("SIGINT", () => requestShutdown("SIGINT"));
|
|
266
|
+
process.on("SIGTERM", () => requestShutdown("SIGTERM"));
|
|
267
|
+
process.on("uncaughtException", (error) => {
|
|
268
|
+
log.error(`💥 Uncaught exception: ${error}`);
|
|
269
|
+
log.error(error.stack || "");
|
|
270
|
+
requestShutdown("uncaughtException");
|
|
271
|
+
});
|
|
272
|
+
process.on("unhandledRejection", (reason, promise) => {
|
|
273
|
+
log.error(`💥 Unhandled rejection at: ${promise}`);
|
|
274
|
+
log.error(`Reason: ${reason}`);
|
|
275
|
+
requestShutdown("unhandledRejection");
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Start the MCP server
|
|
280
|
+
*/
|
|
281
|
+
async start() {
|
|
282
|
+
log.info("🎯 Starting NotebookLM MCP Server (Security Hardened)...");
|
|
283
|
+
log.info("");
|
|
284
|
+
// Security: Check security context and warn about issues
|
|
285
|
+
const securityCheck = checkSecurityContext();
|
|
286
|
+
if (!securityCheck.secure) {
|
|
287
|
+
log.warning("⚠️ Security warnings detected:");
|
|
288
|
+
for (const warning of securityCheck.warnings) {
|
|
289
|
+
log.warning(` - ${warning}`);
|
|
290
|
+
}
|
|
291
|
+
log.info("");
|
|
292
|
+
}
|
|
293
|
+
// Security: Initialize MCP authentication
|
|
294
|
+
const mcpAuth = getMCPAuthenticator();
|
|
295
|
+
await mcpAuth.initialize();
|
|
296
|
+
const authStatus = mcpAuth.getStatus();
|
|
297
|
+
// Audit: Log server startup
|
|
298
|
+
await audit.system("server_start", {
|
|
299
|
+
version: "1.2.0-secure.1",
|
|
300
|
+
security_warnings: securityCheck.warnings,
|
|
301
|
+
mcp_auth_enabled: authStatus.enabled,
|
|
302
|
+
config: {
|
|
303
|
+
headless: CONFIG.headless,
|
|
304
|
+
max_sessions: CONFIG.maxSessions,
|
|
305
|
+
session_timeout: CONFIG.sessionTimeout,
|
|
306
|
+
stealth_enabled: CONFIG.stealthEnabled,
|
|
307
|
+
},
|
|
308
|
+
});
|
|
309
|
+
log.info("📝 Configuration:");
|
|
310
|
+
log.info(` Config Dir: ${CONFIG.configDir}`);
|
|
311
|
+
log.info(` Data Dir: ${CONFIG.dataDir}`);
|
|
312
|
+
log.info(` Headless: ${CONFIG.headless}`);
|
|
313
|
+
log.info(` Max Sessions: ${CONFIG.maxSessions}`);
|
|
314
|
+
log.info(` Session Timeout: ${CONFIG.sessionTimeout}s`);
|
|
315
|
+
log.info(` Stealth: ${CONFIG.stealthEnabled}`);
|
|
316
|
+
log.info(` Audit Logging: ${getAuditLogger().getStats().totalEvents >= 0 ? 'enabled' : 'disabled'}`);
|
|
317
|
+
log.info(` MCP Authentication: ${authStatus.enabled ? 'enabled' : 'disabled'}`);
|
|
318
|
+
log.info("");
|
|
319
|
+
// Create stdio transport
|
|
320
|
+
const transport = new StdioServerTransport();
|
|
321
|
+
// Connect server to transport
|
|
322
|
+
await this.server.connect(transport);
|
|
323
|
+
log.success("✅ MCP Server connected via stdio");
|
|
324
|
+
log.success("🎉 Ready to receive requests from Claude Code!");
|
|
325
|
+
log.info("");
|
|
326
|
+
log.info("💡 Available tools:");
|
|
327
|
+
for (const tool of this.toolDefinitions) {
|
|
328
|
+
const desc = tool.description ? tool.description.split('\n')[0] : 'No description'; // First line only
|
|
329
|
+
log.info(` - ${tool.name}: ${desc.substring(0, 80)}...`);
|
|
330
|
+
}
|
|
331
|
+
log.info("");
|
|
332
|
+
log.info("📖 For documentation, see: README.md");
|
|
333
|
+
log.info("📖 For MCP details, see: MCP_INFOS.md");
|
|
334
|
+
log.info("");
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Main entry point
|
|
339
|
+
*/
|
|
340
|
+
async function main() {
|
|
341
|
+
// Handle CLI commands
|
|
342
|
+
const args = process.argv.slice(2);
|
|
343
|
+
if (args.length > 0 && args[0] === "config") {
|
|
344
|
+
const cli = new CliHandler();
|
|
345
|
+
await cli.handleCommand(args);
|
|
346
|
+
process.exit(0);
|
|
347
|
+
}
|
|
348
|
+
// Print banner
|
|
349
|
+
console.error("╔══════════════════════════════════════════════════════════╗");
|
|
350
|
+
console.error("║ ║");
|
|
351
|
+
console.error("║ NotebookLM MCP Server v1.0.0 ║");
|
|
352
|
+
console.error("║ ║");
|
|
353
|
+
console.error("║ Chat with Gemini 2.5 through NotebookLM via MCP ║");
|
|
354
|
+
console.error("║ ║");
|
|
355
|
+
console.error("╚══════════════════════════════════════════════════════════╝");
|
|
356
|
+
console.error("");
|
|
357
|
+
try {
|
|
358
|
+
const server = new NotebookLMMCPServer();
|
|
359
|
+
await server.start();
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
log.error(`💥 Fatal error starting server: ${error}`);
|
|
363
|
+
if (error instanceof Error) {
|
|
364
|
+
log.error(error.stack || "");
|
|
365
|
+
}
|
|
366
|
+
process.exit(1);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
// Run the server
|
|
370
|
+
main();
|
|
371
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NotebookLM Library Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages a persistent library of NotebookLM notebooks.
|
|
5
|
+
* Allows Claude to autonomously add, remove, and switch between
|
|
6
|
+
* multiple notebooks based on the task at hand.
|
|
7
|
+
*/
|
|
8
|
+
import type { NotebookEntry, AddNotebookInput, UpdateNotebookInput, LibraryStats } from "./types.js";
|
|
9
|
+
export declare class NotebookLibrary {
|
|
10
|
+
private libraryPath;
|
|
11
|
+
private library;
|
|
12
|
+
constructor();
|
|
13
|
+
/**
|
|
14
|
+
* Load library from disk, or create default if not exists
|
|
15
|
+
*/
|
|
16
|
+
private loadLibrary;
|
|
17
|
+
/**
|
|
18
|
+
* Create default library from current CONFIG
|
|
19
|
+
*/
|
|
20
|
+
private createDefaultLibrary;
|
|
21
|
+
/**
|
|
22
|
+
* Save library to disk
|
|
23
|
+
*/
|
|
24
|
+
private saveLibrary;
|
|
25
|
+
/**
|
|
26
|
+
* Generate a unique ID from a string (slug format)
|
|
27
|
+
*/
|
|
28
|
+
private generateId;
|
|
29
|
+
/**
|
|
30
|
+
* Add a new notebook to the library
|
|
31
|
+
*/
|
|
32
|
+
addNotebook(input: AddNotebookInput): NotebookEntry;
|
|
33
|
+
/**
|
|
34
|
+
* List all notebooks in library
|
|
35
|
+
*/
|
|
36
|
+
listNotebooks(): NotebookEntry[];
|
|
37
|
+
/**
|
|
38
|
+
* Get a specific notebook by ID
|
|
39
|
+
*/
|
|
40
|
+
getNotebook(id: string): NotebookEntry | null;
|
|
41
|
+
/**
|
|
42
|
+
* Get the currently active notebook
|
|
43
|
+
*/
|
|
44
|
+
getActiveNotebook(): NotebookEntry | null;
|
|
45
|
+
/**
|
|
46
|
+
* Select a notebook as active
|
|
47
|
+
*/
|
|
48
|
+
selectNotebook(id: string): NotebookEntry;
|
|
49
|
+
/**
|
|
50
|
+
* Update notebook metadata
|
|
51
|
+
*/
|
|
52
|
+
updateNotebook(input: UpdateNotebookInput): NotebookEntry;
|
|
53
|
+
/**
|
|
54
|
+
* Remove notebook from library
|
|
55
|
+
*/
|
|
56
|
+
removeNotebook(id: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Increment use count for a notebook
|
|
59
|
+
*/
|
|
60
|
+
incrementUseCount(id: string): NotebookEntry | null;
|
|
61
|
+
/**
|
|
62
|
+
* Get library statistics
|
|
63
|
+
*/
|
|
64
|
+
getStats(): LibraryStats;
|
|
65
|
+
/**
|
|
66
|
+
* Search notebooks by query (searches name, description, topics)
|
|
67
|
+
*/
|
|
68
|
+
searchNotebooks(query: string): NotebookEntry[];
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=notebook-library.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notebook-library.d.ts","sourceRoot":"","sources":["../../src/library/notebook-library.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,aAAa,EAEb,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAU;;IAczB;;OAEG;IACH,OAAO,CAAC,WAAW;IAmBnB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoC5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa;IAuCnD;;OAEG;IACH,aAAa,IAAI,aAAa,EAAE;IAIhC;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAI7C;;OAEG;IACH,iBAAiB,IAAI,aAAa,GAAG,IAAI;IAOzC;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa;IAwBzC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,aAAa;IA4BzD;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAuBnC;;OAEG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAoBnD;;OAEG;IACH,QAAQ,IAAI,YAAY;IAmBxB;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE;CAUhD"}
|