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.0.tar.gz (48.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.0-py3-none-any.whl (45.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mcp_suse_enterprise-0.2.0.tar.gz
  • Upload date:
  • Size: 48.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.0.tar.gz
Algorithm Hash digest
SHA256 f9806e29ea4b1183f9e9c9374825091b860c466393e4a77fcdbbed1e892fa3a3
MD5 45147848869d684e890cbab6a26ea920
BLAKE2b-256 6e2cb23fc62aa856fd6bfdde4db6e4d99557c983bef1f163b48e51516abbbf3f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mcp_suse_enterprise-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 45.4 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 46a005acbc48e9dc696979682224a188d998d11f5b62c1afe698ae1bccb36e93
MD5 ef9156faf4875b01fe0df2671ef8ec90
BLAKE2b-256 e2cde369017df86dd6faaadcf245bf4a6a4210721ca7b36944a7892d5353507b

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