Skip to main content

Enterprise MCP for SUSE Linux administration with OBS, openQA, multi-SP support, and contribution pipeline

Project description

MCP SUSE Enterprise

Enterprise MCP server for SUSE Linux administration with OBS, openQA, multi-SP support, and contribution pipeline.

Installation

# Install from PyPI
pip install mcp-suse-enterprise

# Or run directly with uvx
uvx mcp-suse-enterprise

Configuration

Environment Variables

# SSH Connection
export MCP_SUSE_HOST=sles-server.example.com
export MCP_SUSE_USER=admin
export MCP_SUSE_PORT=22
export MCP_SUSE_KEY_PATH=~/.ssh/id_ed25519

# OBS (Open Build Service)
export OBS_API_URL=https://api.opensuse.org
export OBS_USERNAME=myuser
export OBS_API_KEY=your-api-key

# openQA
export OPENQA_URL=https://openqa.opensuse.org
export OPENQA_API_KEY=your-key
export OPENQA_API_SECRET=your-secret

# Logging
export MCP_SUSE_LOG_LEVEL=INFO  # DEBUG, INFO, WARNING, ERROR

YAML Configuration

Create ~/.config/mcp-suse-enterprise/config.yaml:

profiles:
  - name: production
    hostname: sles-prod.example.com
    port: 22
    user: admin
    auth_method: key
    key_path: ~/.ssh/id_ed25519
    security_mode: read-only
    is_default: true

  - name: staging
    hostname: sles-staging.example.com
    user: tester
    auth_method: password
    security_mode: execute

obs:
  api_url: https://api.opensuse.org
  username: myuser
  api_key: secret-key

openqa:
  url: https://openqa.opensuse.org
  api_key: qa-key
  api_secret: qa-secret

log_level: INFO
ssh_pool_size: 5

Environment variables take priority over YAML values.

Tools by Namespace

suse.util.* (Always available)

  • suse.util.sanitize-text - Sanitize text for shell execution
  • suse.util.metrics - Server metrics and invocation stats
  • suse.util.list-profiles - List connection profiles
  • suse.util.detect-version - Detect SUSE distribution
  • suse.util.test-connection - Test SSH connectivity
  • suse.util.security-check - Check tool risk level

suse.admin.* (Requires SSH)

  • suse.admin.service-status - Get systemd service status
  • suse.admin.service-restart - Restart a service (sudo)
  • suse.admin.logs - Get system logs (journalctl)
  • suse.admin.firewall-status - Firewall status

suse.zypper.* (Requires SSH)

  • suse.zypper.search - Search packages
  • suse.zypper.info - Package information
  • suse.zypper.list-repos - List repositories
  • suse.zypper.list-patches - List available patches
  • suse.zypper.list-patterns - List patterns
  • suse.zypper.deps - Query dependencies
  • suse.zypper.dup-dry-run - Distribution upgrade dry-run

suse.obs.* (Requires OBS credentials)

  • suse.obs.list-projects - List OBS projects
  • suse.obs.list-packages - List packages in project
  • suse.obs.build-status - Get build status
  • suse.obs.build-log - Get build log
  • suse.obs.branch - Branch a package
  • suse.obs.submit-request - Create submit request

suse.openqa.* (Requires openQA credentials)

  • suse.openqa.list-jobs - List test jobs
  • suse.openqa.get-job - Get job details
  • suse.openqa.trigger-job - Trigger test job
  • suse.openqa.job-modules - Get test modules
  • suse.openqa.list-suites - List test suites

suse.sle.* (Requires OBS credentials)

  • suse.sle.list-branches - List branch projects
  • suse.sle.release-status - Consolidated release status

Supported Distributions

  • SLES 15 SP5, SP6
  • openSUSE Leap 15.5, 15.6, 16.0
  • openSUSE Tumbleweed

Security

  • Default mode: read-only (write operations require confirmation)
  • Shell injection detection on all inputs
  • API keys never exposed in error messages
  • Structured JSON audit logging to stderr

MCP Client Configuration

Add to your MCP client config (e.g., Claude Desktop):

{
  "mcpServers": {
    "suse": {
      "command": "uvx",
      "args": ["mcp-suse-enterprise"],
      "env": {
        "MCP_SUSE_HOST": "your-suse-host.com",
        "MCP_SUSE_USER": "admin",
        "MCP_SUSE_KEY_PATH": "~/.ssh/id_ed25519"
      }
    }
  }
}

Important Notes

  • Do NOT run simultaneously with mcp-suse MVP against the same host
  • Logs are emitted as JSON to stderr (stdout is reserved for MCP protocol)
  • Connection pool reuses SSH connections for performance

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_suse_enterprise-0.2.1.tar.gz (50.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_suse_enterprise-0.2.1-py3-none-any.whl (45.9 kB view details)

Uploaded Python 3

File details

Details for the file mcp_suse_enterprise-0.2.1.tar.gz.

File metadata

  • Download URL: mcp_suse_enterprise-0.2.1.tar.gz
  • Upload date:
  • Size: 50.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcp_suse_enterprise-0.2.1.tar.gz
Algorithm Hash digest
SHA256 228e763342f75870d41f1bbe8c8cc5d0bfbefc4cd80442a723706cbd6498bc6a
MD5 4191d82968367f98b1265d7d3570ea2a
BLAKE2b-256 09c44cecc00b76616beb258418e649aed61c383001815a0a1abb969956d86fad

See more details on using hashes here.

File details

Details for the file mcp_suse_enterprise-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: mcp_suse_enterprise-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 45.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcp_suse_enterprise-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d7fc5bd01fd5fe42c58b640b2a1ddfbd50a2743991d4704d03acbfcd8122fa40
MD5 5682f3c34ce6d1679d42de8a5ef9d400
BLAKE2b-256 b1b825fe6cbd56e8ca088d621e4d871c39b2e70fcad8c1930d696abcad885727

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page