Troubleshooting Guide - NotebookLM MCP HTTP Server
Solutions to common problems
🔍 Quick Diagnosis
Doctor Scripts (fastest path)
# Repo + build artifacts + Node version
npm run doctor:basic
# Start the server in another shell, then:
npm run doctor:http
# With a real notebook URL, also exercises /content and /ask:
npm run doctor:http -- --notebook-url "https://notebooklm.google.com/notebook/<your-notebook-id>"
doctor:basic prints [PASS] / [FAIL] lines for each check and exits
non-zero if anything is missing. doctor:http adds reachability of
/health, /content, and /ask. Run node scripts/doctor.mjs --help for
all flags (--base-url, --timeout-ms, --question).
Manual Verification Commands
# 1. Server active?
netstat -ano | findstr :3000
# 2. Health check
curl http://localhost:3000/health
# 3. Node processes
Get-Process node
# 4. Logs (if launched with scripts)
# See the terminal where the server is running
❌ Installation Problems
Error: "npm install" fails
Symptoms:
npm ERR! code ECONNREFUSED
npm ERR! network request failed
Solutions:
- Check Internet connection
- Clean npm cache:
npm cache clean --force - Retry:
npm install - Use VPN if corporate firewall
Error: "npm run build" fails
Symptoms:
error TS2307: Cannot find module 'express'
Solutions:
- Reinstall dependencies:
rm -rf node_modules && npm install - Check Node.js version:
node --version(must be 20+) - Verify package.json exists
❌ Authentication Problems
Chrome profile empty after setup-auth
Symptoms:
- Session not persistent
- Auth files missing or empty
IMPORTANT: Files are stored in %LOCALAPPDATA%\notebooklm-mcp\Data\, NOT in the project directory!
Solutions:
- Verify 5 second fix is applied (auth-manager.ts line 966)
- Rerun:
npm run setup-auth - Wait for Chrome to close completely
- Verify files created in the RIGHT location:
echo $env:LOCALAPPDATA\notebooklm-mcp\Datadir $env:LOCALAPPDATA\notebooklm-mcp\Data\chrome_profile\Default\Cookiesdir $env:LOCALAPPDATA\notebooklm-mcp\Data\browser_state\state.json
- The Cookies file must be >10KB
Google session expires
Symptoms:
Error: Authentication required
Solutions:
- Re-authenticate:
npm run setup-auth - Verify cookies: cookies valid for 399 days
- Check for conflicts: close all Chrome instances
❌ Startup Problems
Port 3000 already in use
Symptoms:
Error: listen EADDRINUSE: address already in use :::3000
Solutions:
- Find process:
netstat -ano | findstr :3000
- Kill process:
taskkill /PID <PID> /F
- Or change port:
$env:HTTP_PORT="3001"node dist/http-wrapper.js
"Target page, context or browser has been closed"
Symptoms:
Error: Target page, context or browser has been closed
Causes:
- Multiple Chrome instances sharing the same profile
- Chrome profile locked
Solutions:
- Close all node processes:
Get-Process node | Stop-Process -Force
- Remove the lock (if necessary):
rm Data\chrome_profile\SingletonLock
- Restart server
❌ Response Problems
Timeout waiting for response
Symptoms:
Error: Timeout waiting for response from NotebookLM
Causes:
- NotebookLM not responding
- Notebook doesn't exist
- Rate limit reached
Solutions:
- Verify notebook exists:
curl http://localhost:3000/notebooks - Test manually on notebooklm.google.com
- Check rate limit (50/day free)
- Increase timeout (already 120s by default)
Incomplete responses or placeholders
Symptoms:
- Response = "Getting the context..."
- Truncated text
Causes:
- Streaming fix not applied
- Insufficient stability
Solutions:
- Verify fix line 210 page-utils.ts:
requiredStablePolls = 8 - Verify placeholders line 51 page-utils.ts
- Rebuild:
npm run build
❌ Network Problems (n8n)
n8n cannot connect
Symptoms:
ECONNREFUSED 192.168.1.52:3000
Solutions:
- Verify server listens on 0.0.0.0:
# Should show 0.0.0.0:3000, not 127.0.0.1:3000netstat -ano | findstr :3000
- Verify correct IP:
ipconfig - Test from n8n:
curl http://192.168.1.52:3000/health
- Check Windows firewall:
Test-NetConnection -ComputerName 192.168.1.52 -Port 3000
Windows firewall blocks
Symptoms:
- Connection works locally
- Fails from network
Solutions:
- Allow port:
New-NetFirewallRule `-DisplayName "NotebookLM MCP" `-Direction Inbound `-LocalPort 3000 `-Protocol TCP `-Action Allow
- Or temporarily disable firewall to test
❌ Performance Problems
Slow server
Causes:
- Too many active sessions
- Insufficient RAM
- Chrome not headless
Solutions:
- List sessions:
curl http://localhost:3000/sessions - Close sessions:
curl -X DELETE http://localhost:3000/sessions/<id> - Reduce MAX_SESSIONS:
$env:MAX_SESSIONS="5"
- Check available RAM:
Get-Process node
NotebookLM rate limit reached
Symptoms:
Error: NotebookLM rate limit reached (50 queries/day)
Solutions:
- Wait 24h (reset midnight PST)
- Switch to Google Workspace (higher limit)
- Monitor usage: count queries/day
❌ PowerShell Script Problems
"Execution policy" error
Symptoms:
.\install.ps1 : File cannot be loaded because running scripts is disabled
Solutions:
- Allow scripts (current session):
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
- Then rerun script
Script cannot find package.json
Symptoms:
package.json introuvable
Solutions:
- Verify you are in the correct directory:
cd D:\notebooklm-httpls package.json # Must exist
- Run from project root, not from deployment/
🔧 Debug Commands
Enable debug logs
Modify src/session/browser-session.ts line 415:
debug: true, // See detailed logs
Rebuild: npm run build
See Chrome in action
$env:HEADLESS="false"
node dist/http-wrapper.js
Full logs
# Redirect logs to file
node dist/http-wrapper.js 2>&1 | Tee-Object -FilePath server.log
📊 Complete Diagnostic Checklist
# 1. Node.js OK?
node --version # v20+
npm --version # v10+
# 2. Build OK?
ls dist/http-wrapper.js # Exists?
# 3. Auth OK?
ls Data/chrome_profile/Default/Cookies # >10KB?
ls Data/browser_state/state.json # Exists?
# 4. Port free?
netstat -ano | findstr :3000 # No result = OK
# 5. Server starts?
node dist/http-wrapper.js # See logs
# 6. Health OK?
curl http://localhost:3000/health # authenticated: true?
# 7. Full test?
curl -X POST http://localhost:3000/ask `
-H "Content-Type: application/json" `
-d '{"question":"test","notebook_id":"my-notebook"}'
If all checks pass but problem persists → GitHub Issues
🆘 Getting Help
Logs to Provide
When opening an issue, include:
-
Environment:
- OS: Windows 11- Node: v20.9.0- npm: 10.1.0 -
Server logs: (last 50 lines)
-
Exact command:
node dist/http-wrapper.js -
Exact error:
Error: EADDRINUSE
Support
- GitHub Issues: [To be configured when repository is published]
- Discussions: [To be configured when repository is published]
- Documentation: ./deployment/docs/
Complete troubleshooting guide! ✅