Skip to main content
Glama
README.md
# SUSE Linux MCP Server

A [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server that bridges AI assistants with the SUSE Linux ecosystem. Enables safe, reliable access to the openSUSE Wiki, OBS (Open Build Service), and SUSE repositories for AI-assisted system management.

Supports all SUSE variants: openSUSE Tumbleweed, Leap, MicroOS, Slowroll, SLES, SLED, and SLE Micro. Immutable variants use `transactional-update` automatically.

## Resources (URI-based Access)

### Documentation and Search

| URI Scheme | Example | Returns |
|---|---|---|
| `opensuse-wiki://` | `opensuse-wiki://Installation_guide` | Markdown-formatted Wiki page |

### Package Information

| URI Scheme | Example | Returns |
|---|---|---|
| `suse-repo://` | `suse-repo://vim` | Official repository package details |
| `obs://*/spec` | `obs://vim/spec` | OBS spec file with safety analysis |
| `obs://*/info` | `obs://vim/info` | OBS package metadata |

### System Packages (SUSE only)

| URI Scheme | Example | Returns |
|---|---|---|
| `zypper://installed` | `zypper://installed` | Installed packages list |
| `zypper://orphans` | `zypper://orphans` | Orphaned packages |
| `zypper://explicit` | `zypper://explicit` | Explicitly installed packages |
| `zypper://patterns` | `zypper://patterns` | Zypper patterns |
| `zypper://database/freshness` | `zypper://database/freshness` | Package database sync status |

### System Monitoring and Logs

| URI Scheme | Example | Returns |
|---|---|---|
| `system://info` | `system://info` | System information (kernel, memory, uptime) |
| `system://disk` | `system://disk` | Disk space usage statistics |
| `system://services/failed` | `system://services/failed` | Failed systemd services |
| `system://logs/boot` | `system://logs/boot` | Recent boot logs |
| `system://health` | `system://health` | System health check |
| `zypper://log/recent` | `zypper://log/recent` | Recent package transactions |
| `zypper://log/failed` | `zypper://log/failed` | Failed package transactions |

### News and Updates

| URI Scheme | Example | Returns |
|---|---|---|
| `opensuse-news://latest` | `opensuse-news://latest` | Latest openSUSE news |
| `opensuse-news://critical` | `opensuse-news://critical` | Critical news requiring manual intervention |
| `opensuse-news://since-update` | `opensuse-news://since-update` | News since last system update |

### Configuration

| URI Scheme | Example | Returns |
|---|---|---|
| `config://zypper` | `config://zypper` | Parsed zypper.conf configuration |
| `config://rpm-macros` | `config://rpm-macros` | Parsed RPM macros configuration |
| `mirrors://active` | `mirrors://active` | Currently configured repositories |
| `mirrors://health` | `mirrors://health` | Repository health status |

## Tools

| Tool | Description |
|---|---|
| `search_opensuse_wiki` | Query openSUSE Wiki with ranked results |
| `search_obs` | Search OBS packages |
| `get_official_package_info` | Get official package details |
| `check_updates_dry_run` | Check for available updates |
| `install_obs_package` | Install OBS package with security checks |
| `audit_obs_security` | Security audit for OBS packages (spec analysis, full audit) |
| `remove_packages` | Remove packages (single or batch) |
| `manage_orphans` | List or remove orphaned packages |
| `query_file_ownership` | File-package ownership queries |
| `verify_package_integrity` | Check file integrity |
| `manage_patterns` | List and inspect zypper patterns |
| `manage_install_reason` | Manage install reasons (explicit/dependency) |
| `get_system_info` | System info (kernel, memory, uptime) |
| `analyze_storage` | Disk usage and cache statistics |
| `diagnose_system` | System diagnostics |
| `fetch_news` | Fetch openSUSE news |
| `query_package_history` | Query zypp transaction history |
| `optimize_mirrors` | Repository management (status, test, suggest, health) |
| `analyze_zypper_conf` | Parse zypper.conf settings |
| `analyze_rpm_macros` | Parse RPM macros configuration |
| `check_database_freshness` | Check package database sync status |
| `run_system_health_check` | Comprehensive system health check |

## Prompts

| Prompt | Purpose |
|---|---|
| `troubleshoot_issue` | Diagnose system errors using openSUSE Wiki |
| `audit_obs_package` | Pre-installation security audit of OBS packages |
| `analyze_dependencies` | Dependency analysis and install order |
| `safe_system_update` | Safe update workflow with pre-flight checks |
| `cleanup_system` | System cleanup (orphans, cache, integrity) |
| `package_investigation` | Deep package research before installation |
| `mirror_optimization` | Test and configure fastest mirrors |
| `system_health_check` | Comprehensive system diagnostic |

## Installation

### Prerequisites

- Python 3.11+
- [uv](https://github.com/astral-sh/uv) (recommended) or pip

### Quick Start

```bash
uv run suse-ops-server
```

## Configuration

Add to your MCP client configuration (Claude, Cursor, or any STDIO-compatible client):

```json
{
  "mcpServers": {
    "suse-linux": {
      "command": "uv",
      "args": ["run", "suse-ops-server"]
    }
  }
}
```

## Container

```bash
podman build -f Containerfile .
podman run -i suse-mcp-server
```

## License

This project is dual-licensed under your choice of:

- **[GPL-3.0-only](https://www.gnu.org/licenses/gpl-3.0.en.html)** - See [LICENSE-GPL](LICENSE-GPL)
- **[MIT License](https://opensource.org/licenses/MIT)** - See [LICENSE-MIT](LICENSE-MIT)

TDQS

A3.8/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have clearly distinct purposes, and descriptions are thorough with examples. Minor overlap exists between run_system_health_check and individual diagnostic tools (e.g., check_updates_dry_run, analyze_storage), but the descriptions clarify when to use the comprehensive tool vs. the specific one.

Naming Consistency4/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., check_updates_dry_run, manage_orphans, query_file_ownership). Minor deviations like run_system_health_check (where 'check' is a noun) and check_updates_dry_run are still understandable and do not break the overall pattern.

Tool Count3/5

At 22 tools, the server feels heavy, but the broad domain of SUSE system management justifies a larger toolset. However, several tools are closely related (e.g., multiple manage_* tools, multiple analyze_* tools), which adds slight redundancy without necessarily adding value.

Completeness2/5

The toolset is strong on diagnostics, discovery, and analysis, but lacks critical lifecycle operations. There is no tool to apply system updates (only a dry-run check), and no tool to install official repository packages—only OBS packages can be installed. This creates significant gaps for real-world package management workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues