@roomi-fields/notebooklm-mcp 1.3.6 → 1.5.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/README.md +69 -34
- package/dist/accounts/account-manager.d.ts +163 -0
- package/dist/accounts/account-manager.d.ts.map +1 -0
- package/dist/accounts/account-manager.js +614 -0
- package/dist/accounts/account-manager.js.map +1 -0
- package/dist/accounts/auto-login-manager.d.ts +62 -0
- package/dist/accounts/auto-login-manager.d.ts.map +1 -0
- package/dist/accounts/auto-login-manager.js +537 -0
- package/dist/accounts/auto-login-manager.js.map +1 -0
- package/dist/accounts/crypto.d.ts +45 -0
- package/dist/accounts/crypto.d.ts.map +1 -0
- package/dist/accounts/crypto.js +138 -0
- package/dist/accounts/crypto.js.map +1 -0
- package/dist/accounts/index.d.ts +14 -0
- package/dist/accounts/index.d.ts.map +1 -0
- package/dist/accounts/index.js +14 -0
- package/dist/accounts/index.js.map +1 -0
- package/dist/accounts/types.d.ts +103 -0
- package/dist/accounts/types.d.ts.map +1 -0
- package/dist/accounts/types.js +7 -0
- package/dist/accounts/types.js.map +1 -0
- package/dist/auth/auth-manager.d.ts +9 -2
- package/dist/auth/auth-manager.d.ts.map +1 -1
- package/dist/auth/auth-manager.js +60 -6
- package/dist/auth/auth-manager.js.map +1 -1
- package/dist/auto-discovery/auto-discovery.d.ts.map +1 -1
- package/dist/auto-discovery/auto-discovery.js +2 -1
- package/dist/auto-discovery/auto-discovery.js.map +1 -1
- package/dist/cli/accounts.d.ts +13 -0
- package/dist/cli/accounts.d.ts.map +1 -0
- package/dist/cli/accounts.js +195 -0
- package/dist/cli/accounts.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/content/content-generator.d.ts +153 -0
- package/dist/content/content-generator.d.ts.map +1 -0
- package/dist/content/content-generator.js +637 -0
- package/dist/content/content-generator.js.map +1 -0
- package/dist/content/content-manager.d.ts +364 -0
- package/dist/content/content-manager.d.ts.map +1 -0
- package/dist/content/content-manager.js +3846 -0
- package/dist/content/content-manager.js.map +1 -0
- package/dist/content/content-templates.d.ts +183 -0
- package/dist/content/content-templates.d.ts.map +1 -0
- package/dist/content/content-templates.js +719 -0
- package/dist/content/content-templates.js.map +1 -0
- package/dist/content/index.d.ts +14 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +14 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/types.d.ts +285 -0
- package/dist/content/types.d.ts.map +1 -0
- package/dist/content/types.js +10 -0
- package/dist/content/types.js.map +1 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/http-wrapper.d.ts +7 -0
- package/dist/http-wrapper.d.ts.map +1 -1
- package/dist/http-wrapper.js +449 -29
- package/dist/http-wrapper.js.map +1 -1
- package/dist/index.js +26 -2
- package/dist/index.js.map +1 -1
- package/dist/library/notebook-library.d.ts +4 -0
- package/dist/library/notebook-library.d.ts.map +1 -1
- package/dist/library/notebook-library.js +20 -3
- package/dist/library/notebook-library.js.map +1 -1
- package/dist/session/browser-session.d.ts +35 -8
- package/dist/session/browser-session.d.ts.map +1 -1
- package/dist/session/browser-session.js +242 -28
- package/dist/session/browser-session.js.map +1 -1
- package/dist/session/session-manager.d.ts +6 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +46 -14
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/shared-context-manager.d.ts +3 -3
- package/dist/session/shared-context-manager.d.ts.map +1 -1
- package/dist/session/shared-context-manager.js +8 -7
- package/dist/session/shared-context-manager.js.map +1 -1
- package/dist/stdio-http-proxy.d.ts +24 -0
- package/dist/stdio-http-proxy.d.ts.map +1 -0
- package/dist/stdio-http-proxy.js +592 -0
- package/dist/stdio-http-proxy.js.map +1 -0
- package/dist/tools/index.d.ts +106 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1028 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +81 -17
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/citation-extractor.d.ts +66 -0
- package/dist/utils/citation-extractor.d.ts.map +1 -0
- package/dist/utils/citation-extractor.js +492 -0
- package/dist/utils/citation-extractor.js.map +1 -0
- package/dist/utils/page-utils.d.ts +8 -0
- package/dist/utils/page-utils.d.ts.map +1 -1
- package/dist/utils/page-utils.js +112 -8
- package/dist/utils/page-utils.js.map +1 -1
- package/docs/ARCHITECTURE_MIGRATION_STUDY.md +894 -0
- package/docs/CHROME_PROFILE_LIMITATION.md +15 -1
- package/docs/MULTI_ACCOUNT_SYSTEM.md +304 -0
- package/package.json +10 -10
- package/dist/__tests__/cleanup-manager.test.d.ts +0 -2
- package/dist/__tests__/cleanup-manager.test.d.ts.map +0 -1
- package/dist/__tests__/cleanup-manager.test.js +0 -341
- package/dist/__tests__/cleanup-manager.test.js.map +0 -1
- package/dist/__tests__/config-parsing.test.d.ts +0 -2
- package/dist/__tests__/config-parsing.test.d.ts.map +0 -1
- package/dist/__tests__/config-parsing.test.js +0 -338
- package/dist/__tests__/config-parsing.test.js.map +0 -1
- package/dist/__tests__/config.test.d.ts +0 -2
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -267
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/errors.test.d.ts +0 -2
- package/dist/__tests__/errors.test.d.ts.map +0 -1
- package/dist/__tests__/errors.test.js +0 -166
- package/dist/__tests__/errors.test.js.map +0 -1
- package/dist/__tests__/logger.test.d.ts +0 -2
- package/dist/__tests__/logger.test.d.ts.map +0 -1
- package/dist/__tests__/logger.test.js +0 -324
- package/dist/__tests__/logger.test.js.map +0 -1
- package/dist/__tests__/page-utils.test.d.ts +0 -2
- package/dist/__tests__/page-utils.test.d.ts.map +0 -1
- package/dist/__tests__/page-utils.test.js +0 -349
- package/dist/__tests__/page-utils.test.js.map +0 -1
- package/dist/__tests__/setup-verification.test.d.ts +0 -2
- package/dist/__tests__/setup-verification.test.d.ts.map +0 -1
- package/dist/__tests__/setup-verification.test.js +0 -15
- package/dist/__tests__/setup-verification.test.js.map +0 -1
- package/dist/__tests__/stealth-utils.test.d.ts +0 -2
- package/dist/__tests__/stealth-utils.test.d.ts.map +0 -1
- package/dist/__tests__/stealth-utils.test.js +0 -413
- package/dist/__tests__/stealth-utils.test.js.map +0 -1
- package/dist/__tests__/types.test.d.ts +0 -2
- package/dist/__tests__/types.test.d.ts.map +0 -1
- package/dist/__tests__/types.test.js +0 -461
- package/dist/__tests__/types.test.js.map +0 -1
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
# Chrome Profile Limitation
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## ✅ SOLVED: Use the Stdio-HTTP Proxy (v1.3.6+)
|
|
4
|
+
|
|
5
|
+
**The proxy mode allows Claude Desktop and HTTP server to run simultaneously!**
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Terminal 1: Start HTTP server (owns Chrome)
|
|
9
|
+
npm run start:http
|
|
10
|
+
|
|
11
|
+
# Claude Desktop uses the proxy (no Chrome needed)
|
|
12
|
+
# See: deployment/docs/09-MULTI-INTERFACE.md
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 🚨 Original Limitation (v1.3.2-v1.3.5)
|
|
4
18
|
|
|
5
19
|
**The HTTP server and MCP stdio modes cannot run simultaneously** due to Chrome profile locking.
|
|
6
20
|
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
# Multi-Account Management System
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The multi-account system enables industrial-grade authentication management for NotebookLM MCP by supporting:
|
|
6
|
+
|
|
7
|
+
- **Multiple Google accounts** with encrypted credential storage
|
|
8
|
+
- **Account pool rotation** with configurable strategies
|
|
9
|
+
- **Quota tracking** per account (50 queries/day free tier)
|
|
10
|
+
- **Automated login** with credential replay and interstitial handling
|
|
11
|
+
- **TOTP 2FA support** for accounts with two-factor authentication
|
|
12
|
+
|
|
13
|
+
## Architecture
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
17
|
+
│ Account Management │
|
|
18
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
19
|
+
│ │
|
|
20
|
+
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
21
|
+
│ │ Account 1 │ │ Account 2 │ │ Account N │ │
|
|
22
|
+
│ │ (Primary) │ │ (Backup) │ │ (Pool) │ │
|
|
23
|
+
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
|
|
24
|
+
│ │ │ │ │
|
|
25
|
+
│ └──────────────────┴──────────────────┘ │
|
|
26
|
+
│ │ │
|
|
27
|
+
│ ┌────────▼────────┐ │
|
|
28
|
+
│ │ AccountManager │ │
|
|
29
|
+
│ │ - Pool logic │ │
|
|
30
|
+
│ │ - Rotation │ │
|
|
31
|
+
│ │ - Quota │ │
|
|
32
|
+
│ └────────┬────────┘ │
|
|
33
|
+
│ │ │
|
|
34
|
+
│ ┌────────▼────────┐ │
|
|
35
|
+
│ │ AutoLoginManager│ │
|
|
36
|
+
│ │ - Credential │ │
|
|
37
|
+
│ │ replay │ │
|
|
38
|
+
│ │ - 2FA/TOTP │ │
|
|
39
|
+
│ │ - Interstitial │ │
|
|
40
|
+
│ │ handling │ │
|
|
41
|
+
│ └─────────────────┘ │
|
|
42
|
+
│ │
|
|
43
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Components
|
|
47
|
+
|
|
48
|
+
### 1. Credential Encryption (`src/accounts/crypto.ts`)
|
|
49
|
+
|
|
50
|
+
- **Algorithm**: AES-256-GCM
|
|
51
|
+
- **Key Management**: Auto-generated encryption key stored securely
|
|
52
|
+
- **Storage**: Encrypted credentials in JSON format
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
// Example encrypted credential structure
|
|
56
|
+
{
|
|
57
|
+
emailEncrypted: "base64...",
|
|
58
|
+
passwordEncrypted: "base64...",
|
|
59
|
+
totpSecretEncrypted: "base64...", // Optional
|
|
60
|
+
encryptedAt: "2024-01-15T10:30:00Z"
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 2. Account Manager (`src/accounts/account-manager.ts`)
|
|
65
|
+
|
|
66
|
+
Manages the account pool with:
|
|
67
|
+
|
|
68
|
+
- **Account lifecycle**: Add, remove, enable/disable
|
|
69
|
+
- **Quota tracking**: Per-account usage limits
|
|
70
|
+
- **Rotation strategies**:
|
|
71
|
+
- `least_used`: Prefer accounts with lowest usage
|
|
72
|
+
- `round_robin`: Sequential rotation
|
|
73
|
+
- `failover`: Use primary until failure
|
|
74
|
+
- `random`: Random selection from pool
|
|
75
|
+
|
|
76
|
+
### 3. Auto-Login Manager (`src/accounts/auto-login-manager.ts`)
|
|
77
|
+
|
|
78
|
+
Handles automated Google authentication:
|
|
79
|
+
|
|
80
|
+
- **Credential replay**: Email and password entry with human-like typing
|
|
81
|
+
- **TOTP 2FA**: Automatic code generation and entry
|
|
82
|
+
- **Interstitial handling**: Dismisses Google prompts (passkeys, security, etc.)
|
|
83
|
+
- **State persistence**: Saves authenticated session for reuse
|
|
84
|
+
|
|
85
|
+
## Adding a New Account with 2FA (Complete Procedure)
|
|
86
|
+
|
|
87
|
+
### Prerequisites
|
|
88
|
+
|
|
89
|
+
Before adding an account, ensure it has:
|
|
90
|
+
|
|
91
|
+
- A completed Google profile (date of birth, recovery email, etc.)
|
|
92
|
+
- TOTP-based 2FA enabled (Google Authenticator, not SMS)
|
|
93
|
+
- The TOTP secret key (base32 format, e.g., `JBSWY3DPEHPK3PXP`)
|
|
94
|
+
|
|
95
|
+
### Step 1: Add the Account
|
|
96
|
+
|
|
97
|
+
Use a TypeScript script to avoid shell escaping issues with special characters in passwords:
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// add-account.ts
|
|
101
|
+
import { AccountManager } from './src/accounts/account-manager.js';
|
|
102
|
+
|
|
103
|
+
const manager = new AccountManager();
|
|
104
|
+
await manager.initialize();
|
|
105
|
+
|
|
106
|
+
await manager.addAccount(
|
|
107
|
+
'user@gmail.com',
|
|
108
|
+
'P@ssw0rd!Special$Chars', // Special chars handled correctly
|
|
109
|
+
'JBSWY3DPEHPK3PXP' // TOTP secret (no spaces)
|
|
110
|
+
);
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Run with:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
npx tsx add-account.ts
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Step 2: First Login (Headed Mode Required)
|
|
120
|
+
|
|
121
|
+
**CRITICAL**: The first login MUST be in headed mode (visible browser). Google blocks headless browsers for new account connections with "This browser or app may not be secure" error.
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npx tsx src/cli/accounts.ts test <account-id> --show
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
This step:
|
|
128
|
+
|
|
129
|
+
- Opens a visible Chrome browser
|
|
130
|
+
- Automatically enters email, password, and TOTP code
|
|
131
|
+
- No human intervention required (fully automated)
|
|
132
|
+
- Establishes trust with Google for future headless logins
|
|
133
|
+
- Saves the authenticated session
|
|
134
|
+
|
|
135
|
+
### Step 3: Verify Headless Mode Works
|
|
136
|
+
|
|
137
|
+
After the headed login succeeds, test headless mode:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npx tsx src/cli/accounts.ts test <account-id>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Expected output: `Already authenticated (session still valid)!`
|
|
144
|
+
|
|
145
|
+
### Step 4: Share Notebooks (Optional)
|
|
146
|
+
|
|
147
|
+
If the account needs access to existing notebooks:
|
|
148
|
+
|
|
149
|
+
1. Share notebooks from the owner account to the new account's email
|
|
150
|
+
2. The new account can access shared notebooks immediately via direct URL
|
|
151
|
+
3. No need for the new account to manually open the notebook first
|
|
152
|
+
|
|
153
|
+
### Important Notes
|
|
154
|
+
|
|
155
|
+
| Aspect | Behavior |
|
|
156
|
+
| ------------------- | ---------------------------------------------- |
|
|
157
|
+
| First login | Must be headed (`--show`), but fully automated |
|
|
158
|
+
| Subsequent logins | Can be headless |
|
|
159
|
+
| TOTP handling | Automatic code generation and entry |
|
|
160
|
+
| Shared notebooks | Accessible immediately via URL |
|
|
161
|
+
| Session persistence | Saved to browser profile for reuse |
|
|
162
|
+
| Google anti-bot | Blocks headless on first login only |
|
|
163
|
+
|
|
164
|
+
### Troubleshooting
|
|
165
|
+
|
|
166
|
+
**"This browser or app may not be secure"**
|
|
167
|
+
|
|
168
|
+
- Always use `--show` for the first login
|
|
169
|
+
- This is Google's anti-bot detection, not an account issue
|
|
170
|
+
|
|
171
|
+
**"Password field not found"**
|
|
172
|
+
|
|
173
|
+
- Usually means Google blocked the browser
|
|
174
|
+
- Run with `--show` to see what's happening
|
|
175
|
+
|
|
176
|
+
**TOTP code rejected**
|
|
177
|
+
|
|
178
|
+
- Verify the TOTP secret is correct (base32, no spaces)
|
|
179
|
+
- Check system time is synchronized
|
|
180
|
+
|
|
181
|
+
**Session expires quickly**
|
|
182
|
+
|
|
183
|
+
- Re-run the headed login to refresh the session
|
|
184
|
+
- Check that the browser profile isn't corrupted
|
|
185
|
+
|
|
186
|
+
## CLI Commands
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# Add account (without 2FA)
|
|
190
|
+
npm run accounts add "user@gmail.com" "password"
|
|
191
|
+
|
|
192
|
+
# Add account (with TOTP) - USE SCRIPT FOR SPECIAL CHARS
|
|
193
|
+
npx tsx add-account.ts # Recommended for passwords with special characters
|
|
194
|
+
|
|
195
|
+
# List all accounts
|
|
196
|
+
npm run accounts list
|
|
197
|
+
|
|
198
|
+
# Test auto-login (headless)
|
|
199
|
+
npm run accounts test <account-id>
|
|
200
|
+
|
|
201
|
+
# Test auto-login (headed - REQUIRED for first login)
|
|
202
|
+
npm run accounts test <account-id> --show
|
|
203
|
+
|
|
204
|
+
# Check account health
|
|
205
|
+
npm run accounts health
|
|
206
|
+
|
|
207
|
+
# Set rotation strategy
|
|
208
|
+
npm run accounts strategy least_used
|
|
209
|
+
|
|
210
|
+
# Remove account
|
|
211
|
+
npm run accounts remove <account-id>
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Configuration
|
|
215
|
+
|
|
216
|
+
### Data Storage
|
|
217
|
+
|
|
218
|
+
Account data is stored in the platform-specific data directory:
|
|
219
|
+
|
|
220
|
+
- **Windows**: `%APPDATA%\notebooklm-mcp\Data\accounts\`
|
|
221
|
+
- **Linux**: `~/.local/share/notebooklm-mcp/accounts/`
|
|
222
|
+
- **macOS**: `~/Library/Application Support/notebooklm-mcp/accounts/`
|
|
223
|
+
|
|
224
|
+
### Files
|
|
225
|
+
|
|
226
|
+
| File | Description |
|
|
227
|
+
| ---------------------------------------- | ------------------------------------- |
|
|
228
|
+
| `accounts.json` | Account configurations and state |
|
|
229
|
+
| `encryption.key` | AES-256 encryption key (BACKUP THIS!) |
|
|
230
|
+
| `accounts/<id>/credentials.enc` | Encrypted credentials per account |
|
|
231
|
+
| `accounts/<id>/browser_state/state.json` | Session cookies per account |
|
|
232
|
+
|
|
233
|
+
## Security Considerations
|
|
234
|
+
|
|
235
|
+
1. **Encryption Key**: The encryption key (`encryption.key`) must be backed up securely. Lost key = lost credentials.
|
|
236
|
+
|
|
237
|
+
2. **Credential Storage**: Credentials are encrypted at rest using AES-256-GCM.
|
|
238
|
+
|
|
239
|
+
3. **Browser Profiles**: Each account has isolated browser profile data.
|
|
240
|
+
|
|
241
|
+
4. **TOTP Secrets**: If stored, TOTP secrets are also encrypted.
|
|
242
|
+
|
|
243
|
+
## Limitations
|
|
244
|
+
|
|
245
|
+
1. **Google Account Requirements**: Accounts must have:
|
|
246
|
+
- Completed profile (date of birth, etc.)
|
|
247
|
+
- Standard password authentication enabled
|
|
248
|
+
- Optional: TOTP 2FA configured (not SMS/phone)
|
|
249
|
+
|
|
250
|
+
2. **Google Security**: Google may still require additional verification for:
|
|
251
|
+
- New device/location
|
|
252
|
+
- Suspicious activity detection
|
|
253
|
+
- Captcha challenges
|
|
254
|
+
|
|
255
|
+
3. **Rate Limits**: Google may rate-limit login attempts. Space out auto-login tests.
|
|
256
|
+
|
|
257
|
+
## Usage Example
|
|
258
|
+
|
|
259
|
+
```typescript
|
|
260
|
+
import { getAccountManager, AutoLoginManager } from './accounts/index.js';
|
|
261
|
+
|
|
262
|
+
// Get account manager
|
|
263
|
+
const manager = await getAccountManager();
|
|
264
|
+
|
|
265
|
+
// Add an account
|
|
266
|
+
const accountId = await manager.addAccount(
|
|
267
|
+
'user@gmail.com',
|
|
268
|
+
'password',
|
|
269
|
+
'TOTP_SECRET' // optional
|
|
270
|
+
);
|
|
271
|
+
|
|
272
|
+
// Get best account based on rotation strategy
|
|
273
|
+
const selection = await manager.getBestAccount();
|
|
274
|
+
if (selection) {
|
|
275
|
+
console.log(`Using: ${selection.account.config.email}`);
|
|
276
|
+
console.log(`Reason: ${selection.reason}`);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// Perform auto-login
|
|
280
|
+
const autoLogin = new AutoLoginManager(manager);
|
|
281
|
+
const result = await autoLogin.performAutoLogin(accountId, { showBrowser: true });
|
|
282
|
+
|
|
283
|
+
if (result.success) {
|
|
284
|
+
console.log('Login successful!');
|
|
285
|
+
} else {
|
|
286
|
+
console.log(`Login failed: ${result.error}`);
|
|
287
|
+
if (result.requiresManualIntervention) {
|
|
288
|
+
console.log('Manual verification required');
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Record usage (for quota tracking)
|
|
293
|
+
await manager.recordUsage(accountId);
|
|
294
|
+
|
|
295
|
+
// Check health of all accounts
|
|
296
|
+
const health = await manager.healthCheck();
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Future Enhancements
|
|
300
|
+
|
|
301
|
+
1. **Session Manager Integration**: Coordinate account selection with SessionManager
|
|
302
|
+
2. **Auto-refresh**: Background session keep-alive with cookie refresh
|
|
303
|
+
3. **Quota Alerts**: Notifications when approaching quota limits
|
|
304
|
+
4. **Account Analytics**: Usage patterns and optimization suggestions
|
package/package.json
CHANGED
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@roomi-fields/notebooklm-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "MCP server for NotebookLM API with HTTP REST API - Zero hallucinations from your notebooks",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"notebooklm-mcp": "dist/index.js"
|
|
7
|
+
"notebooklm-mcp": "dist/index.js",
|
|
8
|
+
"notebooklm-mcp-proxy": "dist/stdio-http-proxy.js"
|
|
8
9
|
},
|
|
9
10
|
"scripts": {
|
|
10
11
|
"help": "node dist/cli/help.js",
|
|
11
12
|
"setup-auth": "node dist/cli/setup-auth.js",
|
|
12
13
|
"de-auth": "node dist/cli/de-auth.js",
|
|
14
|
+
"accounts": "node dist/cli/accounts.js",
|
|
13
15
|
"start:http": "node dist/http-wrapper.js",
|
|
16
|
+
"start:proxy": "node dist/stdio-http-proxy.js",
|
|
14
17
|
"dev:http": "tsx watch src/http-wrapper.ts",
|
|
15
|
-
"
|
|
16
|
-
"daemon:stop": "pm2 stop notebooklm-mcp",
|
|
17
|
-
"daemon:restart": "pm2 restart notebooklm-mcp",
|
|
18
|
-
"daemon:logs": "pm2 logs notebooklm-mcp",
|
|
19
|
-
"daemon:status": "pm2 status",
|
|
20
|
-
"daemon:delete": "pm2 delete notebooklm-mcp",
|
|
18
|
+
"dev:proxy": "tsx watch src/stdio-http-proxy.ts",
|
|
21
19
|
"build": "tsc",
|
|
22
20
|
"watch": "tsc --watch",
|
|
23
21
|
"dev": "tsx watch src/index.ts",
|
|
@@ -27,7 +25,9 @@
|
|
|
27
25
|
"test:coverage": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage",
|
|
28
26
|
"test:ci": "node --experimental-vm-modules node_modules/jest/bin/jest.js --ci --coverage --reporters=default",
|
|
29
27
|
"test:unit": "node --experimental-vm-modules node_modules/jest/bin/jest.js --testPathPatterns=unit",
|
|
30
|
-
"test:integration": "node --experimental-vm-modules node_modules/jest/bin/jest.js --testPathPatterns=integration"
|
|
28
|
+
"test:integration": "node --experimental-vm-modules node_modules/jest/bin/jest.js --testPathPatterns=integration",
|
|
29
|
+
"test:e2e": "powershell -ExecutionPolicy Bypass -File tests/e2e/run-e2e-tests.ps1",
|
|
30
|
+
"test:e2e:basic": "powershell -ExecutionPolicy Bypass -File tests/e2e/run-e2e-tests.ps1 -SkipBrowserTests"
|
|
31
31
|
},
|
|
32
32
|
"keywords": [
|
|
33
33
|
"mcp",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"env-paths": "^3.0.0",
|
|
69
69
|
"express": "^4.18.2",
|
|
70
70
|
"globby": "^14.1.0",
|
|
71
|
+
"otplib": "^12.0.1",
|
|
71
72
|
"patchright": "^1.48.2",
|
|
72
73
|
"zod": "^3.22.0"
|
|
73
74
|
},
|
|
@@ -84,7 +85,6 @@
|
|
|
84
85
|
"husky": "^9.1.7",
|
|
85
86
|
"jest": "^30.2.0",
|
|
86
87
|
"lint-staged": "^16.2.7",
|
|
87
|
-
"pm2": "^6.0.14",
|
|
88
88
|
"prettier": "^3.6.2",
|
|
89
89
|
"ts-jest": "^29.4.5",
|
|
90
90
|
"tsx": "^4.7.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/cleanup-manager.test.ts"],"names":[],"mappings":""}
|