sysprobe-mcp
Provides tools to query and control Bluetooth adapters and devices, including status checks, device listing, scanning, power management, connecting, disconnecting, and pairing.
Provides tools to interact with the KDE Plasma desktop environment, including getting and setting themes, color schemes, global themes, sending notifications, reconfiguring KWin, and listing desktop applications.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sysprobe-mcp check system temperatures"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sysprobe-mcp
Standalone, token-efficient MCP server for Linux system diagnostics and desktop/hardware control. Returns compact JSON with hard size limits so a single tool call can never flood the model context.
It is distro-agnostic. For Arch/CachyOS package management (pacman/AUR) use the companion cachyos-mcp, which embeds this server's tools.
Tool groups
Diagnostics (read-only, always available)
Filesystem/config:
list_directory_tree,read_config_snippet,grep_file,check_command_existsProcesses/resources:
get_process_top,get_process_info,inspect_process_io,find_processesSensors/power:
get_hardware_sensors,get_battery_healthSystem/hardware:
get_system_info,get_cpu_info,get_disk_usage,get_block_devices,list_usb_devices,list_pci_devices,get_gpu_infosystemd/logs:
get_service_status,list_services,list_failed_services,query_journalctl,get_boot_performanceDebugging:
list_coredumps,diagnose_crash,check_kernel_ring_bufferD-Bus:
list_dbus_services,get_dbus_propertyDesktop status:
get_brightness,get_power_profile,get_cpu_governor,get_volume,get_now_playing,bluetooth_status,bluetooth_devices,bluetooth_scan,get_kde_theme,list_color_schemes,list_desktop_apps
Control (mutating — needs SYSCONTROL_ALLOW_ACTIONS=1)
Bluetooth:
bluetooth_power,bluetooth_connect,bluetooth_disconnect,bluetooth_pairDisplay/power:
set_brightness,set_power_profile,set_cpu_governorAudio/media:
set_volume,set_mute,media_controlApps:
launch_app,open_pathKDE:
set_color_scheme,set_global_theme,kde_notify,kwin_reconfigureServices/processes:
control_service,kill_processSession:
lock_session,suspend_system
Power (double-gated — also needs SYSCONTROL_ALLOW_POWER=1)
power_action(reboot / poweroff)
Related MCP server: mcp-tool-server
Safety model
Read-only by default. Mutating tools return an explanatory error unless
SYSCONTROL_ALLOW_ACTIONS=1 is set in the server environment. Genuinely
destructive actions (reboot/poweroff) need a second, independent flag
(SYSCONTROL_ALLOW_POWER=1) so they stay off even when ordinary actions are on.
Run
uv run sysprobe-mcp # read-only
SYSCONTROL_ALLOW_ACTIONS=1 uv run sysprobe-mcp # + control toolsRegister with Claude Code
claude mcp add sysprobe -s user \
-e SYSCONTROL_ALLOW_ACTIONS=1 \
-- uv --directory "/home/tom/Projekte/SE Projects/sysprobe-mcp" run sysprobe-mcpOptional system tools
Richer output when these are installed: lm_sensors, upower, lsblk,
usbutils, pciutils, bluez-utils (bluetoothctl), powerprofilesctl,
cpupower, wireplumber/pulseaudio (wpctl/pactl), playerctl, qdbus6,
kreadconfig6 + plasma-apply-* (KDE), brightnessctl, nvidia-utils.
Available Tools
59 toolsbluetooth_connectB
[ACTION] Connect to a paired Bluetooth device by MAC.
Inputs: mac (required). Returns: object
bluetooth_devicesC
List known/paired Bluetooth devices (name + MAC).
Inputs: paired_only. Returns: object
bluetooth_disconnectB
[ACTION] Disconnect a Bluetooth device (empty MAC = all).
Inputs: mac. Returns: object
bluetooth_pairC
[ACTION] Pair (and optionally trust) a Bluetooth device.
Inputs: mac (required), trust. Returns: object
bluetooth_powerA
[ACTION] Turn the Bluetooth adapter on or off.
Inputs: on (required). Returns: object
bluetooth_scanC
Scan for nearby Bluetooth devices for a few seconds.
Inputs: seconds. Returns: object
bluetooth_statusA
Bluetooth adapter status (powered, discoverable, pairable).
Inputs: no named parameters. Returns: object
check_command_existsB
Is a CLI tool installed? Returns presence + absolute path.
Inputs: command (required). Returns: object
check_kernel_ring_bufferA
Kernel messages by level (dmesg, falls back to journalctl -k).
Surfaces driver/hardware issues (USB resets, audio, bluetooth drops) without reading the whole boot log. level e.g. 'err,warn' or 'err'.
Inputs: level, lines, grep_pattern. Returns: object
control_serviceA
[ACTION] start/stop/restart/reload/enable/disable a systemd unit.
Gated by SYSCONTROL_ALLOW_ACTIONS. System scope may prompt for auth (polkit). Returns rc + new ActiveState.
Inputs: service (required), action (required), scope. Returns: object
diagnose_crashA
Inspect a coredump (coredumpctl info): signal, exe, stacktrace head.
Args: match: PID, executable name or COMM; empty = most recent crash. limit_lines: cap on returned lines.
Inputs: match, limit_lines. Returns: object
find_processesC
Find processes whose name/cmdline matches a substring.
Inputs: name (required), limit. Returns: object
get_battery_healthA
Battery health via upower: capacity, cycles, energy, state.
Inputs: no named parameters. Returns: object
get_block_devicesA
Block devices / partitions via lsblk -J (native JSON).
Inputs: no named parameters.
get_boot_performanceC
Slowest units at boot (systemd-analyze blame) + total boot time.
Inputs: limit. Returns: object
get_brightnessA
Current display brightness (percent) for internal backlight(s).
Inputs: no named parameters. Returns: object
get_cpu_governorB
Current CPU frequency governor + the ones available.
Inputs: no named parameters. Returns: object
get_cpu_infoA
CPU model, core counts, per-core frequency and current governor.
Inputs: no named parameters. Returns: object
get_dbus_propertyA
Read a D-Bus property (or all of an interface) via busctl.
Example: service 'org.kde.KWin', path '/KWin', interface 'org.kde.KWin'. Leave name empty to dump the whole interface.
Inputs: service (required), path (required), interface (required), name, +1 more. Returns: object
get_disk_usageC
Mounted filesystems with usage % (real disks only).
Inputs: limit. Returns: object
get_gpu_infoA
GPU summary: vendor (lspci VGA) + NVIDIA stats if nvidia-smi present.
Inputs: no named parameters. Returns: object
get_hardware_sensorsA
Live sensors: temps, fans, battery (category 'temps'/'fans'/'battery'/'all').
Inputs: category. Returns: object
get_kde_themeA
Current KDE color scheme, icon theme, look-and-feel & plasma version.
Inputs: no named parameters. Returns: object
get_now_playingA
Current media: player, status, artist/title (MPRIS via playerctl).
Inputs: no named parameters. Returns: object
get_power_profileA
Active power profile + available ones (power-profiles-daemon).
Inputs: no named parameters. Returns: object
get_process_infoA
Detailed info for one PID: cmdline, cpu/mem, threads, open files.
Inputs: pid (required). Returns: object
get_process_topA
Top resource-consuming processes (sort_by 'cpu' or 'memory').
Inputs: sort_by, limit. Returns: object
get_service_statusA
Status of a systemd unit + last few journal lines.
Args: service: unit name (e.g. 'bluetooth.service'). scope: 'system' or 'user'. log_lines: recent journal lines to include (0–40).
Inputs: service (required), scope, log_lines. Returns: object
get_system_infoA
OS, kernel, uptime, CPU/mem summary, load average. One cheap call.
Inputs: no named parameters. Returns: object
get_volumeA
Default audio sink volume & mute state (PipeWire/wpctl or pactl).
Inputs: no named parameters. Returns: object
grep_fileC
Regex-search a single file, returning matching lines with numbers.
Inputs: path (required), pattern (required), max_matches, context, +1 more. Returns: object
inspect_process_ioA
Open files & network connections held by a process (debug hangs).
Inputs: pid (required), limit. Returns: object
kde_notifyC
Send a desktop notification (notify-send). Harmless, ungated.
Inputs: summary (required), body, urgency. Returns: object
kill_processB
[ACTION] Send a signal to a PID (default SIGTERM). Gated.
Inputs: pid (required), signal. Returns: object
kwin_reconfigureA
[ACTION] Tell KWin to reload its configuration.
Inputs: no named parameters. Returns: object
launch_appA
[ACTION] Launch an app: a .desktop id, or a binary on PATH.
Examples: 'firefox', 'org.kde.dolphin', 'code'. Extra args optional. Detaches the process so it outlives the request.
Inputs: app (required), args. Returns: object
list_color_schemesA
Available KDE color schemes (for set_color_scheme).
Inputs: no named parameters. Returns: object
list_coredumpsC
Recent application crashes (coredumpctl list).
Inputs: limit. Returns: object
list_dbus_servicesA
List D-Bus names on the session or system bus (filterable).
Inputs: bus, filter. Returns: object
list_desktop_appsB
List installed .desktop application IDs (for launch_app).
Inputs: filter, limit. Returns: object
list_directory_treeA
Compact directory tree (names + sizes), depth/entry-bounded.
Understand a config dir's structure without reading any file contents. Args: path, max_depth (1–6), max_entries cap, show_hidden.
Inputs: path (required), max_depth, max_entries, show_hidden. Returns: object
list_failed_servicesB
All failed units — fastest 'what's broken?' check.
Inputs: scope. Returns: object
list_pci_devicesB
PCI devices (lspci), optionally filtered (e.g. 'VGA', 'Network').
Inputs: filter. Returns: object
list_servicesC
List systemd units. state: 'running','failed','enabled','all'.
Inputs: state, scope, limit. Returns: object
list_usb_devicesA
Connected USB devices (lsusb).
Inputs: no named parameters. Returns: object
lock_sessionA
[ACTION] Lock the screen.
Inputs: no named parameters. Returns: object
media_controlB
[ACTION] Control playback: play/pause/play-pause/next/previous/stop.
Inputs: action (required). Returns: object
open_pathB
[ACTION] Open a file/folder/URL with the default handler (xdg-open).
Inputs: target (required). Returns: object
power_actionB
[POWER] reboot / poweroff — needs SYSCONTROL_ALLOW_POWER too.
Double-gated to avoid accidental data loss.
Inputs: action (required). Returns: object
query_journalctlB
Filtered journal query — never dump the whole journal.
Args: service: unit to filter (empty = all). since: e.g. '10 min ago', 'today', '2026-06-10'. priority: e.g. 'err' to show err..emerg only. lines: max lines (1–300). grep_pattern: extra regex filter applied to the result. scope: 'system' or 'user'. kernel: kernel ring messages (journalctl -k).
Inputs: service, since, priority, lines, +3 more. Returns: object
read_config_snippetA
Read a slice of a text/config file — never the whole thing blindly.
If grep_pattern is set, returns only matching blocks (+context lines); otherwise returns lines [start_line, end_line]. Hard cap max_lines.
Inputs: filepath (required), start_line, end_line, grep_pattern, +2 more. Returns: object
set_brightnessA
[ACTION] Set display brightness to a percentage (1–100).
Inputs: percent (required). Returns: object
set_color_schemeA
[ACTION] Apply a KDE color scheme by name (see list_color_schemes).
Inputs: name (required). Returns: object
set_cpu_governorA
[ACTION] Set the CPU governor on all cores (e.g. performance, powersave).
Uses cpupower; needs root. Reports the permission requirement honestly.
Inputs: governor (required). Returns: object
set_global_themeC
[ACTION] Apply a KDE global theme / look-and-feel package.
Inputs: package (required). Returns: object
set_muteB
[ACTION] Mute or unmute the default audio sink.
Inputs: mute (required). Returns: object
set_power_profileA
[ACTION] Set power profile: performance / balanced / power-saver.
Inputs: profile (required). Returns: object
set_volumeB
[ACTION] Set default sink volume to a percentage (0–150).
Inputs: percent (required). Returns: object
suspend_systemA
[ACTION] Suspend (sleep) the system.
Inputs: no named parameters. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 59 tools
Each tool has a clearly defined and distinct purpose. Even related tools like get_process_info, find_processes, and get_process_top are differentiated by specific functions (single PID vs. substring search vs. top consumers). No ambiguity exists between tools.
All tool names follow a consistent verb_noun pattern in snake_case, with clear action prefixes such as get_, set_, list_, control_, etc. No mixing of conventions or irregular patterns.
With 59 tools, the server far exceeds the 50+ threshold for extreme mismatch. While each tool addresses a specific need, the sheer volume makes the server unwieldy and could be consolidated or split into multiple focused servers.
The server covers a wide range of system probing and control functions: Bluetooth, systemd, hardware, KDE desktop, audio, display, power, and file operations. However, it lacks common areas like network interfaces or user session info, which are notable gaps for a sysprobe server.
Maintenance
Related MCP Connectors
LLM cost optimization gateway, repo token-waste auditor & model arbitrage MCP server.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- FlicenseAqualityDmaintenanceLightweight MCP server that exposes tools for system information and weather lookup, designed for agent integration via stdio.1-
- AlicenseNot gradedqualityDmaintenanceA secure, production-grade MCP server that provides filesystem operations, AST math evaluation, and system diagnostics for LLM agents.MIT
- FlicenseNot gradedqualityAmaintenanceA safety-first MCP server enabling file inspection/editing, allowlisted command execution, process listing, and optional desktop automation. It emphasizes security with disabled writes/commands/GUI by default and local feature gates.1-
- AlicenseNot gradedqualityBmaintenanceEnables controlling your own Linux desktop machines from any MCP-capable LLM client, with opt-in agent capabilities for shell, filesystem, processes, screenshots, system info, and input injection.1MIT