Skip to main content
Glama
turlockmike

DevOps Dashboard MCP Server

by turlockmike

DevOps Dashboard MCP Server

Monitor and manage Linux infrastructure through your AI assistant. Built on the Model Context Protocol (MCP), this server gives Claude (or any MCP-compatible client) full visibility into your systems — services, logs, resources, containers, and more.

Tools

Tool

Description

service_status

Check systemd service status (active, failed, enabled state, PID, memory)

service_logs

Fetch journalctl logs with time range, priority, and grep filtering

process_list

List processes sorted by CPU/memory with optional name filtering

disk_usage

Disk space and inode usage by mount point

memory_info

RAM and swap usage, with optional /proc/meminfo details

port_scan

List listening TCP/UDP ports with associated processes

cron_list

List cron jobs for any/all users plus system cron files

nginx_config

Read, validate, and inspect nginx configuration and sites

docker_status

Container, image, volume, network, and resource usage overview

system_health

Aggregate health check with thresholds and warnings

Related MCP server: mcp-homelab-server

Quick Start

Install from npm

npm install -g @devops-dashboard/mcp-server

Or run directly with npx

npx @devops-dashboard/mcp-server

Configure in Claude Code

Add to your Claude Code MCP settings (~/.claude/settings.json or project .mcp.json):

{
  "mcpServers": {
    "devops-dashboard": {
      "command": "npx",
      "args": ["@devops-dashboard/mcp-server"]
    }
  }
}

Configure in Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "devops-dashboard": {
      "command": "npx",
      "args": ["@devops-dashboard/mcp-server"]
    }
  }
}

Development

git clone https://github.com/turlockmike/devops-dashboard-mcp.git
cd devops-dashboard-mcp
npm install
npm run dev          # Start with tsx (hot reload)
npm run build        # Compile TypeScript
npm test             # Run test suite

Tool Details

service_status

Check whether a systemd service is running, its enabled/disabled state, PID, and recent status output.

Parameters:
  service (string, required) — Service name (e.g. "nginx", "sshd")
  user (boolean, optional) — Query user-level services (--user)

service_logs

Fetch recent journal logs with powerful filtering. Supports time ranges, priority levels, and text search.

Parameters:
  service (string, required) — Service name
  lines (number, 1-1000, default 50) — Number of log lines
  since (string, optional) — Time filter ("1h ago", "today", "2024-01-15")
  priority (string, optional) — Minimum level (emerg/alert/crit/err/warning/notice/info/debug)
  grep (string, optional) — Filter by pattern
  user (boolean, optional) — Query user-level service logs

process_list

List running processes with resource usage. Sort by CPU, memory, PID, or elapsed time.

Parameters:
  sort (string, default "cpu") — Sort field: cpu, mem, pid, time
  limit (number, 1-200, default 20) — Number of processes to show
  filter (string, optional) — Filter by process name (case-insensitive)

disk_usage

Show disk space and inode usage. Excludes virtual filesystems for clean output.

Parameters:
  path (string, optional) — Specific mount point or path
  human (boolean, default true) — Human-readable sizes

memory_info

RAM, swap, and system load. Detailed mode adds buffer/cache breakdown from /proc/meminfo.

Parameters:
  detailed (boolean, default false) — Include /proc/meminfo details

port_scan

List all listening network ports with their owning processes. Uses ss with netstat fallback.

Parameters:
  port (number, 1-65535, optional) — Check a specific port
  protocol (string, default "all") — Filter: tcp, udp, all

cron_list

Enumerate cron jobs across users and system directories.

Parameters:
  user (string, optional) — Specific user to query
  all (boolean, default false) — List jobs for ALL users
  include_system (boolean, default true) — Include /etc/crontab and /etc/cron.d/

nginx_config

Read and validate nginx configuration.

Parameters:
  action (string, required) — show, test, list_sites, or full_config
  site (string, optional) — Specific site config to read (with "show" action)

docker_status

Docker environment overview. Gracefully handles missing Docker or stopped daemon.

Parameters:
  action (string, default "overview") — overview, containers, images, stats, networks, volumes
  filter (string, optional) — Filter by container/image name

system_health

Aggregate health check that inspects memory, disk, load, failed services, and network listeners. Returns HEALTHY or ISSUES DETECTED with specific warnings.

Parameters:
  verbose (boolean, default false) — Include full details per subsystem

Requirements

  • Node.js >= 18

  • Linux (uses systemd, journalctl, ss, df, free, ps, etc.)

  • Optional: Docker, nginx (tools degrade gracefully if not present)

Architecture

src/
├── index.ts          # MCP server entry point, tool registration
├── tools/
│   ├── service.ts    # systemd service status + logs
│   ├── system.ts     # processes, disk, memory, ports, health
│   ├── cron.ts       # cron job listing
│   ├── nginx.ts      # nginx config management
│   └── docker.ts     # Docker container/image tools
└── utils/
    └── exec.ts       # Safe command execution (execFile, no shell)

All system commands run through safeExec() which uses execFile (not exec) to prevent shell injection. Commands have configurable timeouts and output size limits.

License

MIT

Available Tools

10 tools
cron_listA

List cron jobs for the current user, a specific user, or all users. Also shows system cron files from /etc/crontab and /etc/cron.d/. Includes cron.daily, cron.weekly, and cron.monthly summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoIf true, list cron jobs for ALL users (requires root or read access to /var/spool/cron).
userNoList cron jobs for a specific user. Omit to list for the current user.
include_systemNoIf true, also include system cron files (/etc/crontab, /etc/cron.d/*).

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. It is transparent that this is a listing operation and explicitly mentions inclusion of system cron files and daily/weekly/monthly summaries. It does not describe the output format or failure behavior, but the permission requirement for all-user listings is present in the schema.

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?

Two sentences with no filler. The main function is front-loaded, and every clause adds a distinct scope or behavior, making it easy for an agent to parse quickly.

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 listing tool with no output schema and no nested objects, the description covers the supported scopes and extra system-file behavior, while the schema covers permissions. It does not specify the exact return shape, but that is not critical for this kind of tool.

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 each parameter is already well documented. The description usefully summarizes the user/all/system modes but largely restates schema semantics rather than adding new meaning, and it provides no format-level detail for the parameters.

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

Purpose5/5

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

The description starts with a clear verb and resource: 'List cron jobs' and then enumerates the exact scopes: current user, specific user, all users, and system files. No sibling tool covers cron jobs, so it is immediately distinguishable.

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

Usage Guidelines4/5

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

The description provides clear context by explaining the three user-scope modes and the system-file inclusion behavior. It does not explicitly name alternatives or exclusion conditions, but no sibling tool competes with this function, so the guidance is sufficient.

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

disk_usageA

Show disk space usage by filesystem/mount point. Includes both space and inode usage. Excludes virtual filesystems (tmpfs, devtmpfs) for clarity. Essential for preventing disk-full outages.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoSpecific mount point or path to check. Omit to show all filesystems.
humanNoShow sizes in human-readable format (default true).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It clearly states that both space and inode usage are included and that virtual filesystems (tmpfs, devtmpfs) are excluded, which are useful behavioral details beyond a generic 'show disk usage' statement. It does not discuss side effects, but the verb 'Show' implies a read-only operation.

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?

Three sentences with no wasted words. The main purpose is front-loaded, followed by useful behavioral details and a practical use case. Every sentence contributes meaningful information.

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 read-only tool with two optional parameters and no output schema, the description covers the essential behavior: what is measured, what is excluded, and why the tool matters. It could mention the output format, but the tool's purpose and output are predictable enough that the description is largely complete.

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 the schema already fully documents both parameters (path and human). The description does not add additional parameter-level semantics, but the baseline of 3 is appropriate because no compensation is needed when the schema covers everything.

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

Purpose5/5

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

The description uses a clear verb ('Show') and a specific resource ('disk space usage by filesystem/mount point'). It further distinguishes the tool by noting it includes inode usage and excludes virtual filesystems, making it easy to differentiate from sibling tools like memory_info or service_status.

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

Usage Guidelines4/5

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

The description provides a clear use case ('Essential for preventing disk-full outages') and the scope of what is shown. It does not explicitly state when not to use it or name an alternative, but the sibling tools are mostly unrelated, so the guidance is sufficient for a simple informational tool.

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

docker_statusA

Inspect Docker containers, images, networks, volumes, and resource usage. Gracefully reports if Docker is not installed or the daemon is stopped. The 'overview' action gives a quick summary; 'stats' shows live CPU/memory per container.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoWhat to show: - 'overview': Container summary + disk usage (default) - 'containers': Detailed container list (including stopped) - 'images': List all images - 'stats': Live resource usage per container (snapshot) - 'networks': List Docker networks - 'volumes': List Docker volumesoverview
filterNoFilter containers/images by name (substring match).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. 'Inspect' signals a read-only intent, and the explicit note about gracefully reporting when Docker is missing or the daemon is stopped is valuable. It could go further by clarifying snapshot vs streaming behavior or potential cost of 'stats', but it is already quite transparent.

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?

Three tight sentences front-load the scope first, then the failure behavior, then the most useful action distinction. Every sentence earns its place and there is no repetition or filler.

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?

Given a read-only status tool with a self-documenting enum schema and no output schema, the definition is sufficiently complete for an agent to know what it does, what actions are available, and what happens when Docker is unavailable. A brief note on return format or output shape could push it to a 5.

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 the baseline of 3 applies. The description's mention of 'overview' and 'stats' mostly restates the schema's own action descriptions, and it adds no additional meaning for the 'filter' parameter beyond what the schema already documents.

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

Purpose5/5

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

The description uses a specific verb ('Inspect') and names the full Docker resource scope: containers, images, networks, volumes, and resource usage. This makes it clearly distinguishable from general-purpose sibling tools such as service_status, process_list, and system_health.

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

Usage Guidelines4/5

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

The intended context is clear: use this when you need Docker-related status or resource information. It even handles the edge case of Docker not being installed or the daemon being stopped. However, it does not explicitly name alternatives or state when not to use it, so it just misses the top score.

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

memory_infoA

Show RAM and swap usage. In detailed mode, includes buffer/cache breakdown from /proc/meminfo. Also reports system load averages for context.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailedNoIf true, include buffer/cache breakdown and /proc/meminfo details.

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden. It conveys a read-only operation through 'Show', discloses that detailed mode reads /proc/meminfo, and mentions load averages as additional context. It does not specify output format or failure behavior, but for a metrics tool this is a minor gap.

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?

Three concise, front-loaded sentences with no filler. The main purpose comes first, followed by the detailed-mode clarification and the extra load-average context.

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 one-optional-parameter tool, the description covers what it shows, what detailed mode adds, and the extra load-average context. However, with no output schema, it does not describe the return format or structure, which prevents a perfect score.

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?

The schema already fully describes the only parameter, 'detailed', with 100% coverage. The description adds no new parameter semantics beyond restating that detailed mode includes buffer/cache breakdown, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Show RAM and swap usage.' It also explains the detailed-mode behavior and the extra load-average reporting, which clearly distinguishes it from siblings like disk_usage, process_list, and system_health.

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?

The description gives clear context for when the tool is relevant, but it does not explicitly mention alternatives or when not to use it. Given the sibling system_health could plausibly overlap, some routing guidance would improve this dimension.

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

nginx_configA

Read, validate, and inspect nginx configuration. Actions: 'show' reads the main config or a specific site, 'test' runs nginx -t validation, 'list_sites' shows enabled/available sites, 'full_config' dumps the fully resolved configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoFor 'show' action: a specific site config file name to read from sites-enabled or sites-available (e.g. 'default').
actionYesAction to perform: - 'show': Show the main nginx.conf file - 'test': Run nginx -t to validate configuration - 'list_sites': List enabled and available sites - 'full_config': Show the fully resolved configuration (nginx -T)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description itself conveys that all actions are non-mutating inspections and identifies the underlying commands (nginx -t, nginx -T) and what each action returns. It does not mention permissions or potential command output size, but it makes operational behavior reasonably clear.

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 states the tool's purpose and then maps each action to a specific behavior. There is no filler or unnecessary repetition beyond what makes the description standalone and useful.

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 tool with four actions and one optional parameter, the description covers each action's behavior and implies what output the agent can expect. It could add permission requirements or error/exit-code behavior, but the core invocation requirements are complete.

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 coverage is 100%, so the schema already documents the action enums and the site parameter in full. The description restates action behavior but adds essentially no parameter detail beyond the schema, keeping it at the baseline.

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

Purpose5/5

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

The description uses specific action verbs (read, validate, inspect) tied to the nginx configuration resource and enumerates the four concrete actions. This clearly distinguishes it from sibling system/service inspection tools.

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

Usage Guidelines4/5

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

The description establishes clear context: this tool is for reading, validating, and inspecting nginx configuration, so an agent can recognize when it applies. It does not explicitly name alternatives or when-not-to-use conditions, but the sibling tools are generic system utilities with minimal overlap.

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

port_scanA

List all listening TCP/UDP ports with their associated processes. Can filter to a specific port number or protocol. Uses 'ss' (modern) with 'netstat' fallback. Useful for checking what services are exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoCheck a specific port. Omit to list all listening ports.
protocolNoProtocol filter (default: all).all

TDQS

A4.2/5.0
Behavior4/5

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

There are no annotations, so the description carries the burden of explaining behavior. It discloses that the tool uses 'ss' with a 'netstat' fallback and is limited to listening ports, which conveys a local read-only inspection rather than an active external scan. It does not mention potential permission requirements or output format, but the core behavioral profile is clear.

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?

Three concise sentences cover the main action, filter options, implementation detail, and use case with no redundant wording. The most important information is front-loaded in the first sentence.

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-required-parameter list tool with full schema coverage, the description is adequate and clearly explains the tool's value. Minor gaps remain, such as not explicitly stating that the scan is local-only or describing the exact output columns, but these are not critical for correct invocation.

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?

The input schema already documents both parameters completely, and the description only restates that filtering by port or protocol is possible. No additional semantics beyond the schema are provided, so the baseline score of 3 applies.

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

Purpose5/5

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

The description opens with a specific verb and resource, 'List all listening TCP/UDP ports with their associated processes,' which clearly states what the tool does. This also distinguishes it from sibling tools like process_list by emphasizing listening ports and process mapping, so an agent can identify it without inspecting the schema.

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

Usage Guidelines4/5

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

It states the intended use case, 'useful for checking what services are exposed,' which gives clear context for when to invoke it. However, it does not explicitly mention when not to use it or compare it to sibling tools such as service_status or process_list.

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

process_listA

List running processes with CPU, memory, and runtime details. Sort by CPU or memory to find resource hogs. Filter by process name to find specific applications.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort processes by this field (default: cpu).cpu
limitNoNumber of processes to return (default 20, max 200).
filterNoFilter process names containing this string (case-insensitive).

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. 'List' is a non-mutating verb that strongly implies a read-only operation, and the description reveals that sorting and filtering affect the output. It does not explicitly mention side effects, permissions, or snapshot semantics, but for a simple process-listing tool the description is sufficiently transparent.

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?

Two tight sentences with no filler. The first sentence front-loads the tool's core purpose and output content; the second gives actionable parameter guidance. Every word earns its place.

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?

The tool is simple with three optional parameters and full schema documentation. The description covers the core output (CPU, memory, runtime) and typical use cases. There is no output schema, but the description partially compensates by naming the returned details. Missing explicit default behavior is minor because the schema already documents defaults and enums.

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?

Schema coverage is 100%, so the baseline is 3. The description adds semantic value by tying parameters to goals: sorting by CPU/memory helps find resource hogs, and filtering by process name helps find specific applications. This goes beyond the schema's enum and default descriptions.

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

Purpose5/5

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

The description states a specific verb and resource: 'List running processes with CPU, memory, and runtime details.' This clearly distinguishes it from sibling tools like service_status, disk_usage, and system_health, which target different resources. The scope is unambiguous.

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?

The description gives concrete usage guidance for parameters: 'Sort by CPU or memory to find resource hogs' and 'Filter by process name to find specific applications.' However, it does not explicitly tell the agent when to use this tool versus siblings such as service_status or system_health; the when-to-use is implied rather than stated.

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

service_logsA

Fetch recent journal logs for a systemd service. Supports filtering by time range, priority level, and grep patterns. Useful for debugging service issues and monitoring application output.

ParametersJSON Schema
NameRequiredDescriptionDefault
grepNoFilter log lines matching this pattern (passed to journalctl --grep).
userNoIf true, query user-level service logs (--user).
linesNoNumber of recent log lines to return (1-1000, default 50).
sinceNoShow logs since this time. Accepts journalctl time specs: '1h ago', '2024-01-15', 'today', etc.
serviceYesName of the systemd service to fetch logs for.
priorityNoMinimum log priority level to include.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It conveys a read-only fetch operation and lists supported filters, but it does not disclose authorization needs, error behavior (e.g., unknown service), or whether it queries only the current boot. These are meaningful gaps for a log tool.

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 three sentences with no fluff: the first states what it does, the second lists capabilities, and the third gives use cases. It is front-loaded and every sentence earns its place.

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?

Given the tool's moderate complexity (6 parameters, no output schema, no annotations), the description covers purpose, filters, and use cases. It lacks explicit mention of return format and privilege requirements, but these are partially inferable from 'logs' and 'fetch'.

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 coverage is 100%, so the schema already documents all six parameters. The description summarizes filtering by time range, priority, and grep, which maps directly to since, priority, and grep parameters but adds no additional semantic detail beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Fetch') and a clear resource ('recent journal logs for a systemd service'), making the tool's purpose immediately obvious. It also lists filtering capabilities, distinguishing it from sibling tools like service_status, which report status rather than logs.

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

Usage Guidelines4/5

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

The description provides clear usage context: 'debugging service issues and monitoring application output.' It does not explicitly state when not to use it or name alternatives, but the context is strong enough for an agent to select it over process_list or service_status.

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

service_statusA

Check the status of a systemd service. Shows whether it's active/inactive/failed, its enabled state, PID, memory usage, and recent log lines from systemctl status output.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoIf true, query user-level services (--user) instead of system services.
serviceYesName of the systemd service (e.g. 'nginx', 'sshd'). The '.service' suffix is optional.

TDQS

A3.8/5.0
Behavior4/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 clearly frames the operation as read-only ('Check', 'Shows') and discloses that output comes from 'systemctl status,' including the specific fields displayed. It does not mention permission requirements or behavior for unknown services, but the key behavioral traits are disclosed.

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 sentence that is front-loaded with the action and resource, followed by a compact list of output categories. Every clause adds information and there is no filler or redundancy.

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 read-only status tool with two well-documented parameters and no output schema, the description names the main output categories and makes the purpose clear. It does not specify output formatting or error behavior, but those are less critical for a low-complexity tool like this.

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 the baseline score applies. The schema already documents both parameters fully, including the optional '.service' suffix and the meaning of the user flag. The description adds no additional parameter-level meaning beyond what the schema provides.

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

Purpose5/5

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

States a specific verb ('Check the status') and a specific resource ('systemd service'), then enumerates the concrete information returned: active/inactive/failed state, enabled state, PID, memory usage, and recent log lines. This clearly distinguishes it from siblings like service_logs and process_list in practice, even without naming them.

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?

The description explains what the tool does but gives no guidance on when to choose it over alternatives. It does not mention sibling tools such as service_logs or process_list, nor does it state any exclusions like 'use service_logs for full log history.'

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

system_healthA

Run an aggregate health check across the entire system. Checks load averages, memory/swap usage, disk space (with inode check), failed systemd services, and listening port count. Returns clear HEALTHY/ISSUES DETECTED status with specific warnings and thresholds. This is the go-to tool for a quick 'is everything OK?' check.

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNoIf true, include full details for each subsystem instead of a summary.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden and does so well: it lists the subsystems checked and the return format (HEALTHY/ISSUES DETECTED with specific warnings and thresholds). It does not explicitly state that the operation is read-only and makes no changes, but a health check strongly implies that.

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?

Three sentences, each earning its place: purpose, checked subsystems, and output behavior. The final sentence reinforces the primary use case without redundancy. Information is front-loaded and skimmable.

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 an aggregate health tool with no output schema and no annotations, the description gives enough context for an agent to decide and call it: inputs, scope, status format, and use case. It stops short of listing the actual thresholds, but explicitly states that thresholds and warnings exist, which is sufficient for a 'quick check' tool.

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 coverage is 100% and the only parameter, verbose, already has a clear description in the schema. The tool description adds context about the overall report but no additional meaning for the parameter itself, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific action ('Run an aggregate health check'), a clear resource ('entire system'), and enumerates exactly what it checks: load averages, memory/swap, disk space with inode check, failed systemd services, and listening port count. It distinguishes itself from subsystem-specific siblings by clearly positioning itself as an aggregate check.

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

Usage Guidelines4/5

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

The description explicitly frames this as the 'go-to tool for a quick is everything OK? check,' which tells an agent when to select it. It does not explicitly say when to prefer the sibling tools for deeper subsystem investigation, but the contrast with the sibling names is implied.

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. Dates show when Glama detected each change.

  1. 10 tool updatesv1.0.0
    • First observedcron_list
    • First observeddisk_usage
    • First observeddocker_status
    • First observedmemory_info
    • First observednginx_config
    • First observedport_scan
    • First observedprocess_list
    • First observedservice_logs
    • First observedservice_status
    • First observedsystem_health

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct subsystem or concern: systemd services, processes, disk, memory, ports, cron, nginx, Docker, and overall health. Even service_status and system_health are clearly separated by scope, with the former for a single service and the latter for aggregate system checks.

Naming Consistency5/5

All tool names follow the same snake_case resource-oriented pattern with two segments describing the target and the data/action (e.g., service_status, disk_usage, port_scan). No mixed naming conventions or vague verb-only names appear.

Tool Count5/5

Ten tools is a well-scoped size for a DevOps dashboard server. Each tool covers a meaningful monitoring area without unnecessary duplication or excessive fragmentation, and the count feels natural for the domain.

Completeness4/5

The tool surface covers most core server monitoring needs: services, logs, processes, disk, memory, ports, cron, nginx, Docker, and an aggregate health check. Minor gaps exist, such as no dedicated Docker logs or network throughput tool, but agents can still perform common diagnostic workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/turlockmike/devops-dashboard-mcp'

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