claude-computer-use-mcp
Version:
MCP server providing browser automation capabilities to Claude Code
100 lines • 4.14 kB
TypeScript
import { Browser, BrowserContext, Page } from 'playwright';
import { SecurityConfig } from './types.js';
export interface BrowserSession {
id: string;
browser: Browser;
context: BrowserContext;
page: Page;
createdAt: Date;
}
export declare class BrowserController {
private sessions;
private securityConfig;
private sessionCreationTimes;
private cookieManager;
private cleanupInterval?;
private sessionCreationHistory;
private sessionCreationLock;
private advancedController;
private interceptedSessions;
constructor(securityConfig?: SecurityConfig);
private generateSecureSessionId;
private checkRateLimit;
private recordSessionCreation;
private cleanupPromise;
private cleanupExpiredSessions;
private performCleanup;
createSession(headless?: boolean): Promise<string>;
getSession(sessionId: string): BrowserSession | undefined;
closeSession(sessionId: string): Promise<void>;
closeAllSessions(): Promise<void>;
navigate(sessionId: string, url: string): Promise<void>;
screenshot(sessionId: string, fullPage?: boolean): Promise<Buffer>;
click(sessionId: string, selector: string): Promise<void>;
type(sessionId: string, selector: string, text: string): Promise<void>;
waitForSelector(sessionId: string, selector: string, timeout?: number): Promise<void>;
evaluate(sessionId: string, script: string): Promise<unknown>;
getText(sessionId: string, selector: string): Promise<string>;
getAttribute(sessionId: string, selector: string, attribute: string): Promise<string | null>;
selectOption(sessionId: string, selector: string, value: string): Promise<void>;
getUrl(sessionId: string): Promise<string>;
getTitle(sessionId: string): Promise<string>;
listSessions(): Promise<Array<{
id: string;
url: string;
title: string;
createdAt: Date;
}>>;
saveCookies(sessionId: string): Promise<void>;
loadCookies(sessionId: string, targetDomain?: string): Promise<void>;
clearCookies(sessionId: string): Promise<void>;
getCookies(sessionId: string, urls?: string[]): Promise<any[]>;
createNewTab(sessionId: string, url?: string): Promise<{
tabIndex: number;
url: string;
}>;
switchToTab(sessionId: string, tabIndex: number): Promise<{
success: boolean;
url: string;
title: string;
}>;
closeTab(sessionId: string, tabIndex: number): Promise<{
success: boolean;
}>;
listTabs(sessionId: string): Promise<import("./advanced-browser.js").TabInfo[]>;
fillForm(sessionId: string, formData: any[], submitSelector?: string): Promise<{
success: boolean;
fieldsProcessed: number;
}>;
uploadFile(sessionId: string, fileSelector: string, filePath: string): Promise<{
success: boolean;
}>;
downloadFile(sessionId: string, downloadSelector: string, downloadPath?: string): Promise<{
success: boolean;
filePath: string;
}>;
takeAdvancedScreenshot(sessionId: string, options?: any): Promise<{
screenshot: string;
mimeType: string;
metadata: any;
}>;
scroll(sessionId: string, direction: any, distance?: number): Promise<{
success: boolean;
}>;
dragAndDrop(sessionId: string, sourceSelector: string, targetSelector: string): Promise<{
success: boolean;
}>;
waitForNavigation(sessionId: string, timeout?: number, waitUntil?: any): Promise<{
success: boolean;
url: string;
}>;
enableNetworkLogging(sessionId: string): Promise<{
success: boolean;
}>;
getNetworkLogs(sessionId: string, includeHeaders?: boolean): Promise<import("./advanced-browser.js").NetworkRequest[]>;
getPerformanceMetrics(sessionId: string): Promise<import("./advanced-browser.js").PerformanceMetrics>;
runAccessibilityAudit(sessionId: string, selector?: string): Promise<import("./advanced-browser.js").AccessibilityInfo>;
private enableRequestInterception;
cleanup(): Promise<void>;
}
//# sourceMappingURL=browser-controller.d.ts.map