proxy_list_traffic
View captured HTTP traffic through the proxy-mcp server with filters for method, URL, status code, or hostname to analyze network exchanges.
Instructions
List captured HTTP exchanges with optional filters. Returns paginated results.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max entries to return (default: 50) | |
| offset | No | Skip first N entries (default: 0) | |
| method_filter | No | Filter by HTTP method (e.g., GET, POST) | |
| url_filter | No | Filter by URL substring | |
| status_filter | No | Filter by response status code | |
| hostname_filter | No | Filter by hostname substring |
Implementation Reference
- src/tools/traffic.ts:22-73 (handler)The handler function for the `proxy_list_traffic` tool, which retrieves traffic from `proxyManager`, applies filters, and returns a paginated summary.
async ({ limit, offset, method_filter, url_filter, status_filter, hostname_filter }) => { let traffic = proxyManager.getTraffic(); if (method_filter) { const m = method_filter.toUpperCase(); traffic = traffic.filter((t) => t.request.method === m); } if (url_filter) { const u = url_filter.toLowerCase(); traffic = traffic.filter((t) => t.request.url.toLowerCase().includes(u)); } if (status_filter !== undefined) { traffic = traffic.filter((t) => t.response?.statusCode === status_filter); } if (hostname_filter) { const h = hostname_filter.toLowerCase(); traffic = traffic.filter((t) => t.request.hostname.toLowerCase().includes(h)); } const total = traffic.length; const page = traffic.slice(offset, offset + limit); // Create summary view (no body previews to save space) const summaries = page.map((t) => ({ id: t.id, timestamp: t.timestamp, method: t.request.method, url: t.request.url, hostname: t.request.hostname, status: t.response?.statusCode ?? null, duration: t.duration ?? null, requestSize: t.request.bodySize, responseSize: t.response?.bodySize ?? null, ...(t.tls?.client?.ja3Fingerprint ? { ja3: t.tls.client.ja3Fingerprint } : {}), ...(t.tls?.client?.ja4Fingerprint ? { ja4: t.tls.client.ja4Fingerprint } : {}), })); return { content: [{ type: "text", text: truncateResult({ status: "success", total, offset, limit, showing: summaries.length, exchanges: summaries, }), }], }; }, ); - src/tools/traffic.ts:11-21 (registration)Tool definition and registration for `proxy_list_traffic`, including the input Zod schema.
server.tool( "proxy_list_traffic", "List captured HTTP exchanges with optional filters. Returns paginated results.", { limit: z.number().optional().default(50).describe("Max entries to return (default: 50)"), offset: z.number().optional().default(0).describe("Skip first N entries (default: 0)"), method_filter: z.string().optional().describe("Filter by HTTP method (e.g., GET, POST)"), url_filter: z.string().optional().describe("Filter by URL substring"), status_filter: z.number().optional().describe("Filter by response status code"), hostname_filter: z.string().optional().describe("Filter by hostname substring"), },