Skip to main content
Glama
dknell

System Information MCP Server

by dknell

get_cpu_info_tool

Retrieve CPU usage and core-specific details for system diagnostics and performance monitoring. Specify measurement intervals and enable per-CPU breakdowns as needed.

Instructions

Retrieve CPU usage and information.

Args: interval: Measurement interval in seconds (default: 1.0) per_cpu: Include per-CPU core breakdown (default: false)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
intervalNo
per_cpuNo

Implementation Reference

  • The get_cpu_info_tool handler function, decorated with @app.tool() for registration in FastMCP. It defines the tool interface and delegates to the core implementation.
    @app.tool() def get_cpu_info_tool(interval: float = 1.0, per_cpu: bool = False) -> Dict[str, Any]: """Retrieve CPU usage and information. Args: interval: Measurement interval in seconds (default: 1.0) per_cpu: Include per-CPU core breakdown (default: false) """ return get_cpu_info(interval=interval, per_cpu=per_cpu)
  • Core helper function implementing the CPU information logic using psutil, including CPU usage, counts, frequency, load average, with caching decorator.
    @cache_result("cpu_info", ttl=2) def get_cpu_info(interval: float = 1.0, per_cpu: bool = False) -> Dict[str, Any]: """Retrieve CPU usage and information.""" try: # Validate parameters if interval <= 0: raise ValueError("Interval must be a positive number") # Get CPU percentage (this call blocks for the interval) cpu_percent = psutil.cpu_percent(interval=interval) # Get per-CPU percentages if requested per_cpu_percent = None if per_cpu: per_cpu_percent = psutil.cpu_percent(interval=0, percpu=True) # Get CPU counts cpu_count_logical = psutil.cpu_count(logical=True) or 0 cpu_count_physical = psutil.cpu_count(logical=False) or 0 # Get CPU frequency try: cpu_freq = psutil.cpu_freq() cpu_freq_current = safe_float(cpu_freq.current if cpu_freq else 0) cpu_freq_max = safe_float(cpu_freq.max if cpu_freq else 0) except (AttributeError, OSError): cpu_freq_current = 0.0 cpu_freq_max = 0.0 # Get load average (Unix-like systems only) try: if hasattr(os, 'getloadavg'): load_avg = os.getloadavg() load_average = [round(avg, 2) for avg in load_avg] else: load_average = [0.0, 0.0, 0.0] except (AttributeError, OSError): load_average = [0.0, 0.0, 0.0] result = { "cpu_percent": round(cpu_percent, 1), "cpu_count_logical": cpu_count_logical, "cpu_count_physical": cpu_count_physical, "cpu_freq_current": cpu_freq_current, "cpu_freq_max": cpu_freq_max, "load_average": load_average, } if per_cpu_percent is not None: result["per_cpu_percent"] = [round(p, 1) for p in per_cpu_percent] return result except Exception as e: logger.error(f"Error getting CPU info: {e}") raise
  • The @app.tool() decorator registers get_cpu_info_tool with the FastMCP server.
    @app.tool()
  • Docstring providing the tool schema with parameter descriptions for input validation.
    """Retrieve CPU usage and information. Args: interval: Measurement interval in seconds (default: 1.0) per_cpu: Include per-CPU core breakdown (default: false) """

Other Tools

Related 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/dknell/mcp-system-info'

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