Skip to main content
Glama
dknell

System Information MCP Server

by dknell

get_process_list_tool

Retrieve a list of running processes on your system, sorted by criteria like CPU usage or memory, with options to filter by name and limit results.

Instructions

Retrieve list of running processes.

Args: limit: Maximum number of processes to return (default: 50) sort_by: Sort criteria - cpu, memory, name, pid (default: cpu) filter_name: Filter processes by name pattern

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filter_nameNo
limitNo
sort_byNocpu

Implementation Reference

  • The FastMCP tool handler for 'get_process_list_tool'. Includes the @app.tool() registration decorator, input schema via type hints and docstring, and delegates to the core get_process_list function.
    @app.tool() def get_process_list_tool( limit: int = 50, sort_by: str = "cpu", filter_name: Optional[str] = None ) -> Dict[str, Any]: """Retrieve list of running processes. Args: limit: Maximum number of processes to return (default: 50) sort_by: Sort criteria - cpu, memory, name, pid (default: cpu) filter_name: Filter processes by name pattern """ return get_process_list(limit=limit, sort_by=sort_by, filter_name=filter_name)
  • Core helper function implementing the process list retrieval using psutil.process_iter(). Handles validation, filtering by name, sorting by various criteria, limiting results, and formatting output with memory conversion and sensitive cmdline filtering.
    @cache_result("process_list", ttl=2) def get_process_list( limit: int = 50, sort_by: str = "cpu", filter_name: Optional[str] = None ) -> Dict[str, Any]: """Retrieve list of running processes.""" try: # Validate parameters if limit <= 0: raise ValueError("Limit must be a positive number") limit = min(limit, config.max_processes) valid_sort_keys = ["cpu", "memory", "name", "pid"] if sort_by not in valid_sort_keys: raise ValueError(f"sort_by must be one of: {valid_sort_keys}") processes = [] # Get all processes for proc in psutil.process_iter( [ "pid", "name", "username", "status", "cpu_percent", "memory_percent", "memory_info", "create_time", "cmdline", ] ): try: proc_info = proc.info # Filter by name if specified if filter_name and filter_name.lower() not in proc_info["name"].lower(): continue # Get memory RSS memory_rss = 0 if proc_info.get("memory_info"): memory_rss = proc_info["memory_info"].rss # Filter and format command line cmdline = filter_sensitive_cmdline(proc_info.get("cmdline") or []) process_data = { "pid": proc_info["pid"], "name": proc_info["name"] or "Unknown", "username": proc_info.get("username", "Unknown"), "status": proc_info.get("status", "unknown"), "cpu_percent": round( safe_float(proc_info.get("cpu_percent", 0)), 1 ), "memory_percent": round( safe_float(proc_info.get("memory_percent", 0)), 1 ), "memory_rss": memory_rss, "memory_rss_mb": bytes_to_mb(memory_rss), "create_time": timestamp_to_iso(proc_info.get("create_time", 0)), "cmdline": cmdline, } processes.append(process_data) except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): # Process may have terminated or we don't have permission continue # Sort processes reverse_sort = True # Most metrics should be sorted in descending order if sort_by == "cpu": processes.sort(key=lambda p: p["cpu_percent"], reverse=reverse_sort) elif sort_by == "memory": processes.sort(key=lambda p: p["memory_percent"], reverse=reverse_sort) elif sort_by == "name": processes.sort(key=lambda p: p["name"].lower(), reverse=False) elif sort_by == "pid": processes.sort(key=lambda p: p["pid"], reverse=False) # Apply limit limited_processes = processes[:limit] return {"processes": limited_processes, "total_processes": len(processes)} except Exception as e: logger.error(f"Error getting process list: {e}") raise

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