playwright-min-network-mcp
Version:
Minimal network monitoring MCP tool for Playwright browser automation
176 lines (175 loc) • 4.97 kB
TypeScript
import { z } from 'zod';
/**
* Network monitoring configuration schema
*/
export declare const StartMonitorSchema: z.ZodObject<{
max_buffer_size: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
cdp_port: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
filter: z.ZodDefault<z.ZodOptional<z.ZodObject<{
content_types: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodLiteral<"all">]>>>;
url_include_patterns: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodLiteral<"all">]>>>;
methods: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
max_body_size: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
content_types: string[] | "all";
url_include_patterns: string[] | "all";
methods?: string[] | undefined;
max_body_size?: number | undefined;
}, {
content_types?: string[] | "all" | undefined;
url_include_patterns?: string[] | "all" | undefined;
methods?: string[] | undefined;
max_body_size?: number | undefined;
}>>>;
}, "strip", z.ZodTypeAny, {
max_buffer_size: number;
cdp_port: number;
filter: {
content_types: string[] | "all";
url_include_patterns: string[] | "all";
methods?: string[] | undefined;
max_body_size?: number | undefined;
};
}, {
max_buffer_size?: number | undefined;
cdp_port?: number | undefined;
filter?: {
content_types?: string[] | "all" | undefined;
url_include_patterns?: string[] | "all" | undefined;
methods?: string[] | undefined;
max_body_size?: number | undefined;
} | undefined;
}>;
export declare const GetRecentRequestsSchema: z.ZodObject<{
count: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
include_headers: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
count: number;
include_headers: boolean;
}, {
count?: number | undefined;
include_headers?: boolean | undefined;
}>;
export declare const GetRequestDetailSchema: z.ZodObject<{
uuid: z.ZodString;
include_headers: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
include_headers: boolean;
uuid: string;
}, {
uuid: string;
include_headers?: boolean | undefined;
}>;
/**
* Infer TypeScript types from schemas
*/
export type StartMonitorOptions = z.infer<typeof StartMonitorSchema>;
export type GetRecentRequestsOptions = z.infer<typeof GetRecentRequestsSchema>;
export type GetRequestDetailOptions = z.infer<typeof GetRequestDetailSchema>;
/**
* Network request data structure
*/
export interface NetworkRequest {
id: string;
uuid: string;
url: string;
method: string;
headers: Record<string, string>;
timestamp: number;
type: 'request';
body?: string;
response?: {
status: number;
headers: Record<string, string>;
mimeType: string;
body?: string;
};
responseTimestamp?: number;
}
/**
* CDP WebSocket message types
*/
export interface CdpMessage {
id?: number;
method: string;
params: any;
}
export interface CdpRequestWillBeSent {
method: 'Network.requestWillBeSent';
params: {
requestId: string;
request: {
url: string;
method: string;
headers: Record<string, string>;
postData?: string;
};
timestamp: number;
type?: string;
};
}
export interface CdpResponseReceived {
method: 'Network.responseReceived';
params: {
requestId: string;
response: {
status: number;
headers: Record<string, string>;
mimeType: string;
};
timestamp: number;
};
}
/**
* Filter configuration
*/
export interface FilterConfig {
contentTypes: string[] | 'all';
urlIncludePatterns: string[] | 'all';
methods?: string[];
}
/**
* Default content types for SDET monitoring (API and form data)
*/
export declare const DEFAULT_CONTENT_TYPES: string[];
/**
* Browser launch configuration
*/
export interface BrowserConfig {
cdpPort: number;
}
/**
* Monitor status response
*/
export interface MonitorStatus {
status: 'started' | 'stopped' | 'updated';
buffer_size: number;
filter: FilterConfig;
cdp_endpoint: string | null;
cdp_port: number;
total_captured?: number;
}
/**
* Compact network request for overview display (512B body preview)
*/
export interface CompactNetworkRequest {
uuid: string;
method: string;
status?: number;
url: string;
mimeType?: string;
requestBodyPreview?: string;
requestBodySize?: number;
responseBodyPreview?: string;
responseBodySize?: number;
timestamp: number;
responseTimestamp?: number;
}
/**
* Network requests response
*/
export interface NetworkRequestsResponse {
total_captured: number;
showing: number;
requests: CompactNetworkRequest[];
}