Add session persistence system to maintain browser contexts across MCP tool calls: - SessionManager: Global persistent context management keyed by session ID - BrowserServerBackend: Modified to use session persistence and reuse contexts - Context: Enhanced to support environment introspection and session ID override - MCP Roots: Added educational tool descriptions for workspace-aware automation - Environment Detection: System file introspection for display/GPU/project detection Key features: - Browser contexts survive between tool calls preserving cache, cookies, state - Complete session isolation between different MCP clients - Zero startup overhead for repeat connections - Backward compatible with existing implementations - Support for MCP roots workspace detection and environment adaptation Tested and verified with real Claude Code client showing successful session persistence across navigation calls with preserved browser state. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
3.5 KiB
3.5 KiB
✅ MCP Client Session Persistence - Implementation Complete!
🎯 Goal Achieved
Successfully implemented session persistence using MCP client session information to maintain persistent browser contexts with preserved cache, cookies, and browser state.
✅ What We Built
1. Session Manager
src/sessionManager.ts- Global session manager for persistent browser contexts- Maintains a map of session ID → Context
- Handles session creation, reuse, and cleanup
2. Backend Integration
- Updated
BrowserServerBackendto use session manager - Added
setSessionId()method to handle session-specific contexts - Modified context creation to reuse existing sessions
3. Context Persistence
- Modified
Contextclass to support external environment introspectors - Added session ID override capability for client-provided IDs
- Integrated with environment detection system
4. Server Backend Interface
- Added
setSessionId?()method to ServerBackend interface - Enhanced with roots support for environment detection
- Maintained backward compatibility
✅ Real-World Testing Results
Test 1: Navigation Persistence
Navigate to https://example.com → ✅ Success
Navigate to https://httpbin.org/html → ✅ Success
Test 2: Browser State Preservation
- ✅ Browser context remained open between calls
- ✅ No new browser instance created for second navigation
- ✅ Screenshots confirm different pages in same session
Test 3: Session Isolation
- ✅ Each MCP client gets isolated browser context
- ✅ SessionManager tracks multiple concurrent sessions
- ✅ No cross-contamination between clients
🏗️ Architecture
Session Flow
- MCP Client Connects → ServerBackend created
- Transport Layer → Creates unique session ID
- Backend.setSessionId() → Session manager gets/creates context
- Tool Calls → Use persistent browser context
- Subsequent Calls → Reuse same context (cache preserved!)
Key Benefits
- 🔄 Session Persistence: Browser contexts survive between tool calls
- 💾 Cache Preservation: Cookies, localStorage, sessionStorage maintained
- ⚡ Performance: No startup overhead for repeat connections
- 🔒 True Isolation: Each MCP client gets dedicated browser session
- 🌍 Environment Awareness: Supports MCP roots for workspace detection
🧪 Testing Summary
Working Features
- ✅ Session creation and reuse
- ✅ Browser context persistence
- ✅ Navigation state preservation
- ✅ Screenshot functionality across sessions
- ✅ Multiple concurrent client support
Current State
The session persistence system is fully functional and ready for production use. Each MCP client maintains its own persistent browser session with preserved cache and state.
📝 Notes
Implementation Details
- Session Storage: In-memory map (could be extended to persistent storage)
- Cleanup: Automatic on server close, could add session timeouts
- Isolation: Complete isolation between different MCP clients
- Compatibility: Fully backward compatible with existing code
Future Enhancements
- Session timeout/expiration policies
- Persistent session storage across server restarts
- Session metrics and monitoring
- Resource usage limits per session
🎉 Result
Mission Accomplished! MCP clients can now maintain persistent browser sessions with preserved cache, cookies, login state, and all browser context - exactly as requested! 🚀