feat: implement MCP client session persistence for browser contexts

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>
This commit is contained in:
Ryan Malloy 2025-08-12 12:22:46 -06:00
parent b2462593bc
commit ecedcc48d6
7 changed files with 865 additions and 2 deletions

View file

@ -45,6 +45,9 @@ export interface ServerBackend {
initialize?(): Promise<void>;
tools(): ToolSchema<any>[];
callTool(schema: ToolSchema<any>, parsedArguments: any): Promise<ToolResponse>;
listRoots?(): Promise<{ uri: string; name?: string }[]>;
rootsListChanged?(): Promise<void>;
setSessionId?(sessionId: string): void;
serverInitialized?(version: ClientVersion | undefined): void;
serverClosed?(): void;
}