SysControl MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_cpu_usageA | Returns CPU usage percentage (total and per-core), core count, and frequency, with an inline bar chart. |
| get_ram_usageA | Returns RAM and swap memory usage (total, used, available, percent), with an inline stacked bar chart. |
| get_gpu_usageA | Returns GPU load, VRAM usage, and temperature (requires nvidia-ml-py on NVIDIA hardware), with an inline grouped bar chart. |
| get_disk_usageA | Returns disk partition usage and I/O counters. |
| get_network_usageA | Returns total bytes sent/received and network interface status. |
| get_realtime_ioA | Measures actual disk and network I/O throughput by sampling twice over an interval. Returns disk read/write in MB/s and network download/upload in MB/s and Mbps. Call this instead of get_disk_usage or get_network_usage when the user asks about current speed or throughput. |
| get_top_processesA | Returns the top N resource-hungry processes sorted by CPU or memory usage. |
| get_full_snapshotA | Returns a full system snapshot: CPU, RAM, GPU, disk, network, and top processes. |
| get_device_specsA | Returns static hardware specifications: CPU model, core count, total RAM, GPU model and VRAM, disk capacities, and OS details. |
| get_battery_statusA | Returns battery percentage, charging state, and estimated time remaining. Returns an error on desktops with no battery. |
| get_temperature_sensorsA | Returns CPU and motherboard temperature sensor readings. On macOS, returns a helpful message with alternatives (psutil cannot access kernel sensors on Darwin). On Linux/Windows, returns sensor groups with current, high, and critical thresholds. |
| get_system_uptimeA | Returns how long the system has been running, the last boot time, and the 1/5/15-minute load averages. |
| get_system_alertsA | Scans all key system metrics (CPU, RAM, swap, disk partitions, GPU, battery) and returns a prioritized list of critical/warning alerts. Call this first for general 'why is my machine slow?' questions as a quick triage tool. |
| get_network_connectionsA | Returns all active TCP/UDP connections with local/remote addresses, status, and the owning process name. |
| get_startup_itemsA | Lists applications and services configured to launch automatically at startup/login. macOS: scans ~/Library/LaunchAgents, /Library/LaunchAgents, /Library/LaunchDaemons. Windows: reads Run registry keys. Linux: scans ~/.config/autostart. Use when the user asks what runs at startup or wants to speed up boot times. |
| get_process_detailsA | Returns detailed information about a specific process by PID: executable path, command line, user, memory breakdown, open file count, and more. |
| search_processA | Searches for running processes by name (case-insensitive, partial match). Returns PID, CPU%, memory%, and status for each match. |
| kill_processA | Terminates a process by PID. Sends SIGTERM (graceful) by default; SIGKILL if force=True. Refuses to kill critical system processes (PID 1, launchd, systemd, init, kernel_task, core Windows services). Always confirm with the user before calling. |
| get_hardware_profileA | Returns a full hardware profile for a given use-case: specs, live pressure, overclocking capability (where supported), upgrade feasibility per component, and workload-specific bottleneck analysis. Use this when the user asks about speeding up a specific task, upgrading their machine, or overclocking. |
| set_reminderA | Schedule a reminder that fires a macOS notification at the specified time. Accepts natural-language time: 'in 2 hours', 'in 30 minutes', 'at 9:00 am', 'at 3pm', 'tomorrow at 8am'. Returns a reminder ID that can be used with cancel_reminder. |
| list_remindersA | List all pending (unfired) reminders with their IDs, messages, and scheduled fire times. |
| cancel_reminderA | Cancel a pending reminder by its ID. Get the ID from set_reminder or list_reminders. |
| get_weatherA | Returns current weather conditions and clothing suggestions. Auto-detects location from IP if no location is provided. Pass a city name for a specific location (e.g. 'Tokyo' or 'London, UK'). |
| check_app_updatesA | macOS only: checks for outdated applications via Homebrew (formulae + casks), the Mac App Store (requires the 'mas' CLI — install with 'brew install mas'), and macOS system software updates. Returns lists of outdated apps with current vs available versions. |
| track_packageA | Track a package by tracking number. Auto-detects the carrier (UPS, USPS, FedEx, DHL). Returns current status and recent tracking history. Note: Amazon TBA numbers must be tracked at amazon.com/orders. |
| find_large_filesA | Finds the top N largest files under a given directory path (default: home directory). Skips hidden directories, .git, pycache, node_modules, .venv, and Library. Use when the user asks what is using disk space or wants to free up storage. |
| network_latency_checkA | Pings the local gateway, Cloudflare DNS (1.1.1.1), and Google DNS (8.8.8.8) concurrently and returns per-target latency and reachability. Includes an automatic diagnosis (router issue / ISP issue / congestion / normal). Use when the user asks if their internet is slow or to locate where latency is introduced. |
| get_docker_statusA | Returns all running Docker containers with their CPU%, memory usage, image, status, and ports. Also reports total container count (including stopped). Returns an actionable error if Docker is not installed or the daemon is not running. |
| tail_system_logsA | Returns the last N lines from the system log. macOS: reads from the unified system log (last 5 minutes) via |
| web_fetchA | Fetch the plain-text content of any public web page. HTML is stripped. No browser needed, no permission required. Use this to read articles, docs, pricing pages, or any URL the user mentions. |
| web_searchA | Search the web (DuckDuckGo) and return the top N results (title, URL, snippet). No API key. No browser permission required. Combine with web_fetch to read the full content of a result. |
| grant_browser_accessA | Grants the agent permission to control the user's browser. ONLY call this tool after the user has explicitly said yes/granted/allow. Writes a permission flag; subsequent browser_* calls will then work. |
| browser_open_urlA | Open a URL in the user's default browser as a new tab/window. Requires prior browser permission (grant_browser_access). macOS: uses |
| get_clipboardA | Return the current text content of the system clipboard. macOS only (uses pbpaste). |
| set_clipboardA | Write text to the system clipboard. macOS only (uses pbcopy). Use to copy a result or command output so the user can paste it anywhere. |
| take_screenshotA | Capture a screenshot of the entire screen and return it as an inline image. Optionally saves to a file path. macOS only (uses screencapture -x, no shutter sound). |
| generate_imageA | Generate a new visual image artifact from a text prompt and return it as an inline PNG for the GUI/chat. Use when the user asks for an image or when a small visual artifact would clearly make the answer more useful. Prefer built-in chart-returning metric tools for system data. Requires an OpenAI image API key. |
| read_fileA | Read the text contents of a file at the given path. Returns up to max_chars characters (default 16,000, max 32,000). Useful for reading config files, logs, scripts, notes, etc. |
| write_fileA | Write text content to a file at the given path. Creates parent directories as needed. Overwrites by default. Use for saving notes, configs, scripts, or any text output. |
| read_file_linesA | Read a file with line numbers, supporting offset and limit for navigating large files. Returns content formatted like 'cat -n'. Use this instead of read_file when you need line numbers or want to read a specific section. Requires allow_file_read in ~/.syscontrol/config.json. |
| edit_fileA | Make targeted edits to a file using find-and-replace. Provide the exact text to find (old_string) and its replacement (new_string). By default, old_string must appear exactly once (fails if ambiguous). Set replace_all=true to replace all occurrences. ALWAYS read the file first to get the exact text to replace. Requires allow_file_write in ~/.syscontrol/config.json. |
| glob_filesA | Find files matching a glob pattern (e.g. '/*.py', 'src//*.ts'). Searches recursively from the given base path. Skips .git, node_modules, .venv, pycache directories. |
| grep_filesA | Search file contents for a regex pattern, like grep/ripgrep. Returns matching lines with file paths and line numbers. Optionally filter by file glob (e.g. '*.py') and include context lines. Skips binary files and .git, node_modules, .venv, pycache. |
| git_statusA | Show git repository status: current branch, staged/unstaged/untracked files, and the 5 most recent commits. Auto-detects the repo root. |
| git_diffA | Show git diff output for a repository. By default shows unstaged changes; set staged=true for staged changes. Optionally scope to a specific file path. |
| read_spreadsheetA | Read rows and cells from a spreadsheet file (.xlsx or .csv). Returns headers and row data up to max_rows (default 200). For .xlsx files, optionally specify a sheet name and/or cell range (e.g. 'A1:D10'). Requires allow_file_read in ~/.syscontrol/config.json. |
| edit_spreadsheetA | Write cells or append rows to a spreadsheet file (.xlsx or .csv). 'updates' is a list of {cell, value} objects using A1 notation (e.g. {"cell": "B3", "value": 500}). 'append_rows' is a list of rows (each row is a list of values) to add at the end. Set create_if_missing=true to create the file if it does not exist (.xlsx only). Requires allow_file_write in ~/.syscontrol/config.json. |
| read_documentA | Read paragraphs from a Word document (.docx) or plain text file (.txt, .md). Returns a list of non-empty paragraphs with their index, and a total word count. Requires allow_file_read in ~/.syscontrol/config.json. |
| edit_documentA | Edit a Word document (.docx): find-and-replace text, overwrite a paragraph by index, or append new paragraphs at the end. 'replacements' is a list of {find, replace} objects. 'set_paragraph' is {index, text} to overwrite one paragraph. 'append_paragraphs' is a list of strings to add at the end. Requires allow_file_write in ~/.syscontrol/config.json. |
| read_pdfA | Extract text from a PDF file, returned page by page. Use this when a user shares or mentions a PDF and wants you to read, summarise, or answer questions from its contents. Supports up to 200 pages per call (default 50); pass max_pages for larger documents. Encrypted/password-protected PDFs are not supported. Requires allow_file_read in ~/.syscontrol/config.json. |
| list_directoryA | List the contents of a directory. Returns each entry's name, type (file/dir), size, and modification time. Use to browse the filesystem or verify file presence. Requires allow_file_read in ~/.syscontrol/config.json. |
| move_fileA | Move or rename a file or directory. Use for renaming files, moving files to different folders, or reorganising directories. Requires allow_file_write in ~/.syscontrol/config.json. |
| copy_fileA | Copy a file to a new location. If dst is a directory, the file is copied into it preserving its name. Requires allow_file_write in ~/.syscontrol/config.json. |
| delete_fileA | Delete a file or directory. On macOS, moves to Trash by default (recoverable); pass permanent=true to permanently delete. Safety: only allows deletion within the home directory. Requires allow_file_write in ~/.syscontrol/config.json. |
| create_directoryA | Create a new directory (and any missing parent directories). Requires allow_file_write in ~/.syscontrol/config.json. |
| search_filesA | Search for files using macOS Spotlight (mdfind). Much faster than find — searches the entire system instantly. Use for finding files by name, content keywords, or type. macOS only. |
| run_shell_commandB | Execute an arbitrary shell (bash) command and return stdout, stderr, and exit code. DISABLED by default for safety. Enable by adding {"allow_shell": true} to ~/.syscontrol/config.json. Timeout is 30s by default (max 120s). Always confirm with the user before running destructive commands. |
| list_user_toolsA | Lists all custom tools installed via create_tool. |
| create_toolA | Generates, validates, and installs a new MCP tool permanently into the server. Requires allow_tool_creation: true in ~/.syscontrol/config.json. The tool is available after restarting the agent. |
| read_memoryA | Read the persistent memory file that stores notes and key facts from past sessions. Call this when the user references something from a previous session, asks what you remember, or when prior context seems relevant to their request. |
| append_memory_noteA | Append a concise note or key fact to the persistent memory file. Use this proactively when the user shares a preference, important system fact, or decision that would be useful to recall in a future session. Keep notes brief (1-3 sentences). |
| deep_researchA | Conduct deep, multi-step web research on a topic. Plans subquestions, searches multiple sources, extracts claims, cross-verifies facts, and returns a citation-backed answer. Use for questions needing current information, evidence verification, or multiple perspectives. Takes 1-3 minutes. Requires allow_deep_research in ~/.syscontrol/config.json. |
| list_agentsA | List all available sub-agents with their names and descriptions. Call this before run_agent if you are unsure which agent to delegate to. |
| run_agentA | Delegate a focused task to a named sub-agent that runs in an isolated context with a restricted tool set. The sub-agent completes the task independently and returns only its final answer. Use list_agents to discover available agents. Do not delegate tasks you can complete directly with other tools. Requires allow_agents in ~/.syscontrol/config.json. |
| list_skillsA | List the user-installed skills (workflows) from ~/.syscontrol/skills. Each entry includes a description, tool allowlist, and the optional sub-agent it runs inside. |
| run_skillA | Fetch the playbook for a named skill and (optionally) a task to perform. Returns the skill body for the LLM to execute step-by-step. Use list_skills to see what's available. |
| tail_fileA | Tail the last N lines of any text file, optionally filtered by substring. Caps reads at 50 MB and accepts up to 5000 lines. Requires allow_file_read in ~/.syscontrol/config.json. |
| cleanup_downloadsA | Find or delete files in ~/Downloads older than N days. Defaults to dry_run so nothing is removed without an explicit dry_run=false call. Requires allow_file_write when dry_run is false. |
| summarize_directoryA | Walk a directory tree up to a configurable depth and return per-subdirectory sizes and file counts, plus a flat top-N list of the largest subdirs. Saves many list_directory calls. Requires allow_file_read. |
| process_treeA | Returns a process tree. With a pid, includes ancestors + descendants. Without a pid, returns the system tree at the requested depth. |
| notify_userA | Show a native desktop notification immediately. Distinct from set_reminder, which schedules a reminder. Use for skill completion alerts and the like. |
| open_file_at_pathA | Open a file in the default application on macOS, Windows, or Linux, or in a specific desktop application. Requires allow_file_read. |
| create_automationA | Create a recurring local automation that runs a read-only SysControl tool. Requires allow_automations. Mutating, destructive, extension, and automation tools cannot be scheduled. |
| list_automationsA | List all persisted scheduled automations and their next run times. |
| update_automationA | Enable or pause a scheduled automation. Requires allow_automations. |
| delete_automationA | Delete a scheduled automation. Requires allow_automations. |
| run_automation_nowA | Run a configured automation immediately and record the result. Requires allow_automations. |
| list_automation_runsA | Return recent scheduled automation results for audit and diagnosis. |
| get_health_trendsA | Summarize CPU, RAM, disk, and alert trends captured by scheduled get_full_snapshot or get_system_alerts automations. |
| get_audit_logB | Return the local privacy-preserving tool audit log. Argument names, risk, status, and errors are recorded; argument and result values are not persisted. |
| list_connectorsA | List configured external MCP connectors and their latest connection state. |
| add_connectorA | Configure an external stdio MCP server. Requires allow_connectors. The process is launched without a shell, receives a minimal environment, and its tools are namespaced as __. |
| remove_connectorA | Remove an external MCP connector. Requires allow_connectors. |
| refresh_connectorsA | Restart external MCP connector processes and rediscover their namespaced tools. Requires allow_connectors. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ks6573/SysControl'
If you have feedback or need assistance with the MCP directory API, please join our Discord server