get_packet_loss
Measure packet loss between network endpoints to identify connectivity issues and monitor network performance using historical data from perfSONAR.
Instructions
Get packet loss measurements between source and destination.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Source host/IP address | |
| destination | Yes | Destination host/IP address | |
| timeRange | No | Time range in seconds | |
| summaryWindow | No | Summary window in seconds |
Implementation Reference
- The FastMCP handler function for get_packet_loss, which processes input arguments and calls the perfsonar_client.
async def get_packet_loss( source: str, destination: str, timeRange: int = 86400, summaryWindow: Optional[int] = None, ) -> str: """Get packet loss measurements between source and destination. Args: source: Source host/IP address destination: Destination host/IP address timeRange: Time range in seconds (default: 86400 = 24 hours) summaryWindow: Summary window in seconds for aggregation Returns: JSON string with packet loss measurement data """ results = await perfsonar_client.get_packet_loss(source, destination, timeRange, summaryWindow) - src/perfsonar_mcp/client.py:229-268 (handler)The core client method that implements the actual packet loss data retrieval logic.
async def get_packet_loss( self, source: str, destination: str, time_range: Optional[int] = None, summary_window: Optional[int] = None, ) -> List[MeasurementResult]: """ Get packet loss measurements between source and destination Args: source: Source host/IP address destination: Destination host/IP address time_range: Time range in seconds from now summary_window: Summary window in seconds Returns: List of measurement results """ logger.info(f"Getting packet loss: {source} -> {destination}") metadata = await self.query_measurements( MeasurementQueryParams( source=source, destination=destination, event_type="packet-loss-rate" ) ) results = [] for meta in metadata: event_type = next( (e for e in meta.event_types if e.event_type == "packet-loss-rate"), None ) if not event_type: continue data = await self.get_measurement_data( MeasurementDataParams( metadata_key=meta.metadata_key, event_type="packet-loss-rate", summary_type="aggregations" if summary_window else None, summary_window=summary_window, - src/perfsonar_mcp/server.py:355-361 (registration)The registration/dispatch logic for get_packet_loss in the standard MCP server implementation.
elif name == "get_packet_loss": results = await self.client.get_packet_loss( arguments["source"], arguments["destination"], arguments.get("timeRange", 86400), arguments.get("summaryWindow"), )