Skip to main content
Glama
johannschiffer

SysFlow MCP

SysFlow MCP (Lite Edition)

License: MIT Python 3.10+ MCP Compliant

SysFlow MCP is a lightweight, zero-overhead Model Context Protocol server that gives AI agents in Claude Desktop, Cursor, Windsurf, and Antigravity safe, structured access to Linux sysadmin inspection, log tailing, and service health without granting unrestricted root shells or risking interactive terminal freezes.


ðŸ–Ĩïļ Why SysFlow MCP?

Giving an AI assistant raw terminal execution often ends in frustration:

  1. Interactive Terminal Freezes: Commands like journalctl, systemctl status, or git log default to interactive pagers (less), leaving the AI agent permanently hung waiting for user input.

  2. Context Window Flooding: Tailing an unconstrained /var/log/nginx/access.log dumps thousands of lines into the LLM prompt, wasting tokens and causing memory errors.

  3. Destructive Shell Commands: Without sandboxing, a hallucinated command can kill critical background daemons or delete workspace assets.

SysFlow exposes safe, bounded, non-blocking tools specifically tailored for autonomous developer agents.


Related MCP server: mcp-linux-tools

⚡ Features (Lite Edition)

  • 📊 Resource Healthcheck: Reports CPU core load averages (1m, 5m, 15m), RAM availability (MB and percentage), and disk partition metrics.

  • 📜 Safe Log Tailer: Reads the last N lines (bounded and memory-safe) with optional regex filtering; automatically rejects binary files.

  • ⚙ïļ Systemd User Service Inspector: Lists user-level services and timers (systemctl --user), highlighting failed units without requiring sudo.

  • ðŸŠķ Zero External Dependencies: Operates strictly on Python standard library and Linux /proc filesystem.


🚀 Quick Setup in 2 Minutes

1. Installation

git clone https://github.com/johannschiffer/sysflow-mcp.git
cd sysflow-mcp
pip install .

2. Configure Claude Desktop (claude_desktop_config.json)

On Linux: ~/.config/Claude/claude_desktop_config.json
On macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "sysflow": {
      "command": "python",
      "args": ["-m", "sysflow.server"],
      "cwd": "/path/to/sysflow-mcp"
    }
  }
}

3. Verify via CLI

python -m sysflow.cli resources

🛠ïļ MCP Tools Exposed to AI Agents

Tool

Parameters

Description

check_system_resources

(none)

Returns CPU load, memory usage, and partition disk metrics

tail_logs

filepath, lines, pattern

Safely tails recent log lines with optional regex filter

inspect_systemd_services

failed_only

Lists user-level services, states, and detects failed daemons

inspect_systemd_timers

(none)

Lists scheduled systemd user timers


💎 Need Enterprise Build Sandboxing? Upgrade to SysFlow Pro

Looking to automate shell task execution, manage Docker containers, or generate verified systemd units?

Feature

Lite (Open Source)

Pro ($14.99 USD)

CPU, RAM & Disk Monitoring

✅

✅

Safe Bounded Log Tailer

✅

✅

Systemd User Service Auditing

✅

✅

Sandboxed Task Runner with Timeouts (Anti-freeze)

❌

✅

Docker Container Health & Log Inspector

❌

✅

Verified Systemd Unit File Generator

❌

✅

Listening Socket & Port Conflict Auditor

❌

✅

Production Docker Container

❌

✅

Full Pytest Suite & Sysadmin Automation Guide

❌

✅

👉 Get SysFlow Pro on Gumroad ($14.99)


📄 License

MIT License. See LICENSE for details.

Available Tools

4 tools
check_system_resourcesB

Inspect CPU load average, RAM utilization, and disk partition space.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. 'Inspect' strongly implies a non-mutating read and the metric list clarifies what data is surfaced, but there is no explicit statement about safety, permissions, cost/rate limits, or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; every word (verb plus the three metric categories) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read-only diagnostic tool this covers what is inspected, but with no output schema it says nothing about the structure or units of the returned metrics (e.g., utilization percentages vs bytes, one partition vs a list), which an agent would need to interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the schema to document and the baseline of 4 applies. The description correctly adds no parameter detail because none exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Inspect') and enumerates the exact resources read: CPU load average, RAM utilization, and disk partition space. This clearly separates it from its siblings (tail_logs, inspect_systemd_services, inspect_systemd_timers), which target logs and services rather than host hardware metrics, though it never names those alternatives directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the sibling inspection tools, nor any preconditions or exclusions. The diagnostic intent is only implied by the word 'Inspect' and the metric list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_systemd_servicesB

List systemd --user services, active states, and detect failed background units.

ParametersJSON Schema
NameRequiredDescriptionDefault
failed_onlyNoOnly return units in failed state (default: false)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses the '--user' scope (user session units, not system-wide) and that it surfaces active states plus failures, implying a non-mutating read. It does not state permission requirements, whether it needs a running user systemd instance/dbus, or anything about output shape or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with the resource front-loaded and no filler. It slightly overloads three ideas (listing, active states, failure detection) into a single clause, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 0-required-param read tool with no output schema and no annotations, the description is adequate: it names the resource, the scope, and the key output categories. It leaves open what the return looks like and what environment prerequisites exist, which for an unannotated system-inspection tool is a real but moderate gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single boolean (failed_only) is fully documented in the schema. The description's mention of failed units loosely aligns with it but adds no syntax or default information beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (systemd --user services) plus what it surfaces (active states, failed units). The '--user' scope meaningfully distinguishes it from a system-wide service inspection, though it never explicitly names inspect_systemd_timers as the sibling for timer units.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'detect failed background units' hints this is for diagnosing failures, and the failed_only param reinforces that. There is no explicit when-to-use, when-not-to-use, or routing to check_system_resources / inspect_systemd_timers when a different subsystem is the actual target.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_systemd_timersA

List systemd --user scheduled timers and their next trigger times.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It indicates a read-only listing operation and specifies the returned information (next trigger times), but does not explicitly state the read-only nature, output format, or any permission requirements. It is adequate but has clear gaps for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the action and the key result.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter list tool with no output schema, the description is nearly complete: it states what is listed and the key output field. It falls short only in not clarifying its relationship to the sibling inspect_systemd_services.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline score of 4 applies. The description does not need to add parameter meaning beyond the schema, which is empty.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (List) and resource (systemd --user scheduled timers) and mentions the key output (next trigger times). It does not explicitly differentiate itself from the sibling inspect_systemd_services, though the timer/service distinction is implied by the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, such as inspect_systemd_services or check_system_resources. The description simply states what it does, leaving all usage context to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tail_logsA

Safely read recent lines from a log or text file with optional regex filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNoNumber of recent lines to retrieve (default: 50, max: 500)
patternNoOptional regex pattern to filter lines
filepathYesAbsolute or relative path to log file

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Safely read' signals a non-mutating operation, which is useful, but it says nothing about error behavior (missing file, permission denied), how large files are handled, or what the output looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the core action and scope first and the optional capability trailing. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter read tool with full schema coverage, the description covers the essentials. However, with no annotations and no output schema, it leaves error handling and result shape unexplained, which is a meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so defaults, maximums, and per-parameter meaning are already documented. The description only echoes the optional regex filtering, adding no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb ('read') and resource ('recent lines from a log or text file') with the regex filtering capability, so the agent knows exactly what it does. It is clearly distinct from the systemd/resource inspection siblings, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the resource type (log/text files); there is no explicit when-to-use, when-not-to-use, or alternative routing. 'Recent lines' hints at tail-style inspection, but the agent must infer the context itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedcheck_system_resources
    • First observedinspect_systemd_services
    • First observedinspect_systemd_timers
    • First observedtail_logs

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a clearly distinct area: system resources, log tailing, systemd services, and systemd timers. The service and timer tools are related but their descriptions make the boundary explicit.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: check_system_resources, tail_logs, inspect_systemd_services, inspect_systemd_timers. There are no mixed conventions or vague standalone verbs.

Tool Count4/5

Four tools are focused and each has a clear purpose, but the set is somewhat thin for a general system diagnostics server. Additional common operations could reasonably be expected.

Completeness4/5

Core diagnostic areas are covered: resources, logs, services, and timers. Minor gaps exist around process listing, network status, or journal-specific queries, but agents can work around them with the provided tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides AI assistants with safe, read-only access to Linux systemd services, including status monitoring, log querying, and dependency analysis, with optional granular permissions for service management actions.
    2
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to perform controlled Linux system administration tasks like reading logs, managing services, cron jobs, WordPress, and executing sandboxed Python code, with strict security constraints.
    29
    2
    GPL 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Provides read-only access to host system metrics (CPU, memory, disk), Docker container health/logs, and sandboxed log file analysis via MCP tools, enabling AI agents to monitor enterprise infrastructure safely.
    3
    MIT