Skip to main content
Glama

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
NameRequiredDescriptionDefault
limitNoMax entries to return (default: 50)
offsetNoSkip first N entries (default: 0)
method_filterNoFilter by HTTP method (e.g., GET, POST)
url_filterNoFilter by URL substring
status_filterNoFilter by response status code
hostname_filterNoFilter by hostname substring

Implementation Reference

  • 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,
            }),
          }],
        };
      },
    );
  • 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"),
      },
Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yfe404/proxy-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server