measure_jitter
Measures jitter, the variation in network latency, by taking multiple samples to a specified URL.
Instructions
Jitter is the variation in latency, so we need multiple measurements.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | https://httpi.dev/get | |
| samples | No |
Implementation Reference
- mcp_internet_speed_test/main.py:800-840 (handler)The measure_jitter tool handler: measures jitter (variation in latency) by taking multiple HTTP GET samples, calculating average latency, and computing jitter as the average absolute deviation from the mean. Returns jitter, unit, average_latency, samples, url, and server_info.
@mcp.tool(icons=[ICON_JITTER]) async def measure_jitter( url: str = DEFAULT_LATENCY_URL, samples: int = 5, context: Context[ServerSession, None] = None, ) -> dict: """Jitter is the variation in latency, so we need multiple measurements.""" latency_values = [] server_info = None await safe_log_info(context, f"Starting jitter measurement with {samples} samples...") async with httpx.AsyncClient() as client: for sample_index in range(samples): message = f"Sample {sample_index + 1}/{samples}" await safe_report_progress(context, sample_index + 1, samples, message) start = time.time() response = await client.get(url) end = time.time() latency_values.append((end - start) * 1000) # Convert to milliseconds # Extract server info from the first response if sample_index == 0: server_info = extract_server_info(dict(response.headers)) # Calculate average latency avg_latency = sum(latency_values) / len(latency_values) # Calculate jitter (average deviation from the mean) jitter = sum(abs(latency - avg_latency) for latency in latency_values) / len( latency_values, ) return { "jitter": round(jitter, 2), "unit": "ms", "average_latency": round(avg_latency, 2), "samples": samples, "url": url, "server_info": server_info, } - mcp_internet_speed_test/main.py:800-800 (registration)Registration of measure_jitter as an MCP tool with ICON_JITTER via @mcp.tool decorator.
@mcp.tool(icons=[ICON_JITTER]) - Input schema for measure_jitter: url (str, default DEFAULT_LATENCY_URL), samples (int, default 5), context (optional Context). Returns dict with jitter, unit, average_latency, samples, url, server_info.
@mcp.tool(icons=[ICON_JITTER]) async def measure_jitter( url: str = DEFAULT_LATENCY_URL, samples: int = 5, context: Context[ServerSession, None] = None, ) -> dict: - ICON_JITTER icon definition used by the tool's decorator.
ICON_JITTER = Icon(src=_SVG_TPL.format("📊"), mimeType="image/svg+xml") - Call site where measure_jitter is invoked within the run_complete_speed_test tool with url_latency, 5 samples, and context.
jitter_result = await measure_jitter(url_latency, 5, context)