get_network_info_tool
Retrieve detailed network interface data and statistics to monitor system connectivity and performance using the System Information MCP Server.
Instructions
Retrieve network interface information and statistics.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/system_info_mcp/server.py:62-66 (handler)Handler function for the 'get_network_info_tool' tool, registered with @app.tool() decorator. Delegates to the core get_network_info() implementation.@app.tool() def get_network_info_tool() -> Dict[str, Any]: """Retrieve network interface information and statistics.""" return get_network_info()
- src/system_info_mcp/tools.py:179-257 (helper)Core helper function that implements the network information logic using psutil to gather interface details and I/O statistics.@cache_result("network_info", ttl=5) def get_network_info() -> Dict[str, Any]: """Retrieve network interface information and statistics.""" try: interfaces = [] # Get network interfaces net_if_addrs = psutil.net_if_addrs() net_if_stats = psutil.net_if_stats() for interface_name, addresses in net_if_addrs.items(): interface_info: Dict[str, Any] = { "name": interface_name, "addresses": [], "is_up": False, "speed": 0, "mtu": 0, } # Get interface statistics if interface_name in net_if_stats: stats = net_if_stats[interface_name] interface_info.update( {"is_up": stats.isup, "speed": stats.speed, "mtu": stats.mtu} ) # Get addresses for addr in addresses: addr_info = {"family": str(addr.family), "address": addr.address} if addr.netmask: addr_info["netmask"] = addr.netmask interface_info["addresses"].append(addr_info) interfaces.append(interface_info) # Get network I/O statistics try: net_io = psutil.net_io_counters() if net_io: io_stats = { "bytes_sent": net_io.bytes_sent, "bytes_recv": net_io.bytes_recv, "packets_sent": net_io.packets_sent, "packets_recv": net_io.packets_recv, "errin": net_io.errin, "errout": net_io.errout, "dropin": net_io.dropin, "dropout": net_io.dropout, } else: io_stats = { "bytes_sent": 0, "bytes_recv": 0, "packets_sent": 0, "packets_recv": 0, "errin": 0, "errout": 0, "dropin": 0, "dropout": 0, } except Exception as e: logger.warning(f"Could not get network I/O stats: {e}") io_stats = { "bytes_sent": 0, "bytes_recv": 0, "packets_sent": 0, "packets_recv": 0, "errin": 0, "errout": 0, "dropin": 0, "dropout": 0, } return {"interfaces": interfaces, "stats": io_stats} except Exception as e: logger.error(f"Error getting network info: {e}") raise