Skip to main content
Glama
ajragusa

perfsonar-mcp

by ajragusa

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
NameRequiredDescriptionDefault
sourceYesSource host/IP address
destinationYesDestination host/IP address
timeRangeNoTime range in seconds
summaryWindowNoSummary 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)
  • 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,
  • 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"),
        )

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/ajragusa/perfsonar-mcp'

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