Skip to main content
Glama
turlockmike

DevOps Dashboard MCP Server

by turlockmike
README.md
# DevOps Dashboard MCP Server

Monitor and manage Linux infrastructure through your AI assistant. Built on the [Model Context Protocol](https://modelcontextprotocol.io/) (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 |

## Quick Start

### Install from npm

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

### Or run directly with npx

```bash
npx @devops-dashboard/mcp-server
```

### Configure in Claude Code

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

```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):

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

## Development

```bash
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

TDQS

A4.2/5.0

Scored across 10 tools

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