Server data from the Official MCP Registry
Vet third-party AI agent extensions + agent-config files (AGENTS.md, .cursor/rules, CLAUDE.md).
Vet third-party AI agent extensions + agent-config files (AGENTS.md, .cursor/rules, CLAUDE.md).
Valid MCP server (2 strong, 1 medium validity signals). 4 known CVEs in dependencies (0 critical, 3 high severity) Package registry verified. Imported from the Official MCP Registry.
4 files analyzed · 5 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-temurkhan13-openclaw-skill-vetter-mcp": {
"args": [
"openclaw-skill-vetter-mcp"
],
"command": "uvx"
}
}
}From the project's GitHub README.
MCP server for security-vetting third-party AI agent extensions before installation — Claude skills, ClawHub plugins, agent tool packs, any code-shaped artifact that runs in your agent environment with your API keys. 41 detection rules across prompt-injection patterns, hardcoded exfiltration channels (Discord/Slack/Telegram webhooks, SSH-key reads, AWS-creds reads), dangerous dynamic execution (
eval,exec,subprocess shell=True, pickle.loads), manifest/permission drift, and known typosquat dependencies. Outputs a 0-100 risk score + BLOCK/REVIEW/CAUTION/CLEAN bucket + per-finding evidence. Native ClawHub manifest support; the rule engine generalizes to any code-shaped extension via Custom MCP Build adapters. Keywords: AI agent security, plugin vetting, supply-chain security, prompt injection detection, MCP static analysis.
Third-party AI agent extensions — Claude skills, ClawHub plugins, MCP servers themselves, agent tool packs, npm-distributed agent code — are code that runs inside your environment with your API keys, your filesystem access, your network egress. The supply-chain attack surface is now broadly recognized + actively exploited:
AGENTS.md, .cursor/rules.md, .claude/CLAUDE.md, .gemini/config) are now the universal control layer + the next attack surface. Vercel's "AGENTS.md outperforms skills in our agent evals" (HN, 524↑) signals mainstream adoption. The same week, Cursor CVE-2026-26268 and Gemini CLI CVSS 10.0 yolo-mode demonstrated config-file-as-instruction-vector. The arxiv community is treating this as an open research question: "Evaluating AGENTS.md: are they helpful for coding agents?" (HN 232↑) reaches arxiv as the verification problem becomes urgent. v1.1 of this server adds vet_agent_config(directory) covering the trust-boundary failure mode — see Tool surface below.The same shape of attack works against any third-party extension a user installs into their AI agent runtime — Claude skills, MCP servers, browser-extension agents, npm-distributed agent code. The defensive question every operator faces before clicking install: "is this safe to run with my API keys?"
This MCP server runs a battery of static-analysis scanners against any skill's directory and produces a single VetReport that an operator can act on:
> claude: vet the data-extractor skill before I install it.
[MCP tool: vet_skill]
Skill 'data-extractor': BLOCK — do not install.
Risk score: 100/100. Findings: 1 critical, 4 high, 1 info.
Critical:
EXFIL.WEBHOOK_DISCORD (extract.py:5) —
Hardcoded Discord webhook URL: 'https://discord.com/api/webhooks/...'
Recommendation: Refuse install unless explicitly justified.
High:
AST.OS_SYSTEM (extract.py:14) — os.system('curl ... | bash')
EXFIL.ENV_DUMP (extract.py:9) — dumps full os.environ
MANIFEST.WILDCARD_PERMISSION — `network.http: *`
...
Vet result for data-extractor: REFUSE INSTALL.
> claude: any flagged skills currently installed?
[MCP tool: flagged_skills_report]
2 skills flagged at REVIEW or BLOCK:
- data-extractor BLOCK risk_score=100 1 CRITICAL EXFIL.WEBHOOK_DISCORD
- markdown-formatter REVIEW risk_score=35 1 HIGH AST.EVAL_CALL on user input
openclaw-skill-vetter-mcpThree things existing tools (manual code review, generic SAST, ClawHub trust scores) don't do:
Skill-aware scanning. Generic SAST tools don't know what an OpenClaw skill manifest looks like. They miss the most common malware shape: a "calculator" skill that requests network.http: *. The vetter cross-checks declared purpose against requested permissions.
Risk score the operator can paste into a ticket. Not "high cyclomatic complexity" — BLOCK — Discord webhook at extract.py:5. Each finding has rule_id, file:line, evidence, and a specific recommendation.
Built for review-before-install, not after-the-fact audit. Run it from inside Claude on a skill you're about to add. Get a verdict in seconds. Refuse the install if it's BLOCK; sandbox-test if REVIEW; install if CLEAN.
Built for the production-AI operator who has been bitten (or doesn't want to be) by ClawHavoc-style supply-chain attacks.
The OpenClaw security crisis has spawned a multi-vendor tooling landscape. This server's place in it:
| Layer | Vendor / project | Posture |
|---|---|---|
| Enterprise SaaS / SOC | Cisco DefenseClaw, ClawSecure Watchtower, Zscaler ThreatLabz, NemoClaw | Server-side, paid, integration-heavy, SIEM-aimed. Best fit for organizations with existing security teams + SOC infrastructure. |
| Best-practices guidance | Microsoft Security Blog, CrowdStrike, Conscia | Educational. No tooling. |
| Open-source / community | SecureClaw, openclaw-security-monitor, openclaw-dashboard, slowmist's hardening guide | Self-hosted runtime + dashboard tooling. Generally separate process / web UI. |
| MCP-native (this layer) | openclaw-skill-vetter-mcp (this server) + openclaw-output-vetter-mcp (claim verification) + openclaw-upgrade-orchestrator-mcp (regression catalog + provider-fingerprint) | Inline in the agent's own conversation — Claude Desktop / Cursor / Cline calls these tools directly during a turn. Sub-second, free, MIT, local, read-only. The operator-tooling layer one step closer to the agent than enterprise SIEM covers. |
This server isn't a replacement for the SaaS layer — large organizations should pair both. It's a replacement for manual code review of every ClawHub skill before install, with a verdict an operator can paste into a ticket in seconds.
| Tool | What it returns |
|---|---|
vet_skill | Full VetReport for one skill: risk_score, risk_level, sorted findings, summary |
vet_skill_directory | Aggregate report across every skill in the directory + per-bucket counts |
installed_skills_overview | Lightweight: just bucket counts + flagged skill IDs |
flagged_skills_report | Just REVIEW + BLOCK skills with their findings |
scan_for_prompt_injection | Focused: only prompt-injection findings on one skill |
scan_for_exfiltration | Focused: only exfiltration findings on one skill |
list_detection_rules | Catalog of every rule the server applies (transparency) |
vet_agent_config (v1.1+) | NEW — scan a project DIRECTORY for adversarial agent-config files (AGENTS.md, .gemini/config, .cursor/rules.md / .cursorrules, .claude/CLAUDE.md, auto-firing git hooks). Returns the same Finding shape; covers prompt-injection, exfiltration channels, embedded shell commands, secret-file references, and git-hook-install patterns. Targets the Cursor CVE-2026-26268 / Gemini-CLI-yolo trust-boundary failure mode. |
Resources:
skill-vetter://overview — installed-skills risk overviewskill-vetter://flagged — currently-flagged skillsskill-vetter://rules — detection rules catalogPrompts:
pre-install-skill-check — vet a specific skill before installationweekly-skill-audit — compose a 200-word weekly audit of all installed skillsagent-config-audit (v1.1+) — vet a project directory's agent-config files for adversarial contentpip install openclaw-skill-vetter-mcp
After install, run the bundled demo to see the vetter catch real malicious skill patterns:
openclaw-skill-vetter-mcp-demo
You'll see 6 hand-shaped skills vetted: typically 2 BLOCK (a data-extractor with hardcoded Discord webhook + os.system at risk_score 100/100; a requestz-typosquat of requests at 55/100) + 2 REVIEW (eval() + manifest-purpose drift) + 2 CLEAN. No external I/O, no API keys — safe to run anywhere. Useful first-30-seconds check before pointing at your real ~/.openclaw/skills/ directory.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"openclaw-skill-vetter": {
"command": "python",
"args": ["-m", "openclaw_skill_vetter_mcp"],
"env": {
"OPENCLAW_SKILL_VETTER_BACKEND": "mock"
}
}
}
}
| Backend | Status | Description |
|---|---|---|
mock | ✅ v1.0 | 6 demo skills with deliberate findings spanning all severities — for protocol verification and README/CLI demos |
openclaw-skills-dir | ✅ v1.0 | Reads ~/.openclaw/skills/ (override via OPENCLAW_SKILLS_DIR); each subdirectory is parsed as one skill |
clawhub-fetch | ⏳ v1.1 | Fetches a candidate skill from the ClawHub registry directly for vet-before-install workflows |
Each skill directory contains a skill.yaml (or skill.json):
id: weather-fetch
name: Weather Fetch
version: 1.0.0
author: verified-publisher@openclaw.example
description: Fetches current weather for a city using OpenWeatherMap.
purpose: Live weather data lookup
runtime: python3.11
entry_point: main.py
permissions:
- network.http: api.openweathermap.org
dependencies:
- requests>=2.31
- pydantic>=2.0
signature: ed25519:abcd1234efgh5678
Plus the actual code files (*.py, *.js, *.ts, *.sh, *.rb, *.go, *.rs) and any prompt files (*.prompt, *.md, *.txt).
If your OpenClaw deployment uses a different on-disk shape, see the Custom MCP Build section below.
Four scanner modules cover the v1.0 ruleset:
Manifest — MANIFEST.MISSING, MANIFEST.PURPOSE_NETWORK_DRIFT, MANIFEST.WILDCARD_PERMISSION, MANIFEST.BROAD_FILESYSTEM_WRITE, MANIFEST.EMPTY_DESCRIPTION, MANIFEST.NO_AUTHOR, MANIFEST.UNSIGNED
Static patterns (text regex over code + prompts) —
PROMPT_INJ.IGNORE_PRIOR, PROMPT_INJ.ROLE_OVERRIDE, PROMPT_INJ.EXTRACT_SYSTEM, PROMPT_INJ.JAILBREAK_DAN, PROMPT_INJ.NEW_USER_MARKEREXFIL.WEBHOOK_DISCORD, EXFIL.WEBHOOK_SLACK, EXFIL.WEBHOOK_TELEGRAM, EXFIL.PASTEBIN_LITERAL, EXFIL.SSH_KEY_READ, EXFIL.AWS_CREDS_READ, EXFIL.ENV_DUMP, EXFIL.SUBPROCESS_CURLDYN_EXEC.SHELL_TRUE, DYN_EXEC.OS_SYSTEM, DYN_EXEC.EVAL_LITERAL, DYN_EXEC.EXEC_LITERAL, DYN_EXEC.PICKLE_LOADS, DYN_EXEC.DYNAMIC_IMPORTOBFUSCATION.LARGE_BASE64, OBFUSCATION.LARGE_HEXPython AST (catches what regex misses) — AST.EVAL_CALL, AST.EXEC_CALL, AST.COMPILE_CALL, AST.OS_SYSTEM, AST.OS_POPEN, AST.OS_EXECV, AST.SUBPROCESS_RUN_SHELL_TRUE, AST.SUBPROCESS_POPEN_SHELL_TRUE, AST.DYNAMIC_IMPORT
Dependencies — DEP.TYPOSQUAT, DEP.HOMOGLYPH, DEP.UNTRUSTED_GIT_SOURCE, DEP.LOCAL_PATH
Use list_detection_rules to query the live catalog.
Each finding contributes by severity:
| Severity | Weight |
|---|---|
| CRITICAL | 40 |
| HIGH | 15 |
| MEDIUM | 5 |
| LOW | 1 |
| INFO | 0 |
Final risk_score = min(sum, 100). Bucketing (first match wins):
| Bucket | Trigger |
|---|---|
| BLOCK | ≥1 CRITICAL or score ≥ 80 |
| REVIEW | ≥1 HIGH or score ≥ 50 |
| CAUTION | ≥1 MEDIUM or score ≥ 20 |
| CLEAN | no findings or only INFO |
Conservative-by-design: false positives are OK, missed criticals are not. If your operator workflow disagrees with a specific rule, you can filter by category on the client side, or fork + customize.
| Version | Scope | Status |
|---|---|---|
| v1.0 | mock + openclaw-skills-dir backends, 7 tools / 3 resources / 2 prompts, 4 scanner modules with 41 detection rules, GitHub Actions CI matrix, PyPI Trusted Publishing | ✅ |
| v1.1 | clawhub-fetch backend (vet a skill from ClawHub before install); CVE-DB lookup for dependencies; signature verification against ClawHub publisher keys | ⏳ |
| v1.2 | Sandbox-execution scanner (run skill in isolated process, observe network attempts); whitelist/allowlist per-operator | ⏳ |
| v1.x | Custom rule packs; integration with existing SAST tools; per-rule severity overrides | ⏳ |
If your AI deployment doesn't use the OpenClaw skill format — different agent harness, custom skill schema, monolithic skill files, internal-registry distribution — and you want the same vet-before-install discipline, that's a Custom MCP Build engagement.
| Tier | Scope | Investment | Timeline |
|---|---|---|---|
| Simple | Single backend adapter for your existing skill format | $8,000–$12,000 | 1–2 weeks |
| Standard | Custom backend + custom rule pack tuned to your ecosystem + CI integration | $15,000–$25,000 | 2–4 weeks |
| Complex | Multi-format ingestion + sandbox-execution + signed-publisher allowlist + rule-tuning workshop | $30,000–$45,000 | 4–8 weeks |
To engage:
Custom MCP Build inquiry — skill vettingThis server is part of a production-AI infrastructure MCP suite — companion to silentwatch-mcp, openclaw-health-mcp, and openclaw-cost-tracker-mcp. Install all four for full operational visibility.
If you're running production AI and want an outside practitioner to score readiness, find the failure patterns already present (ClawHavoc-style skill malware being one of the most damaging), and write the corrective-action plan:
| Tier | Scope | Investment | Timeline |
|---|---|---|---|
| Audit Lite | One system, top-5 findings, written report | $1,500 | 1 week |
| Audit Standard | Full audit, all 14 patterns, 5 Cs findings, 90-day follow-up | $3,000 | 2–3 weeks |
| Audit + Workshop | Standard audit + 2-day team workshop + first monthly audit included | $7,500 | 3–4 weeks |
Same email channel: hello@temhan.dev with subject AI audit inquiry.
PRs welcome. Scanners are pluggable — see src/openclaw_skill_vetter_mcp/scanners/ for the contract.
To add a new scanner:
scanners/<your_scanner>.py exporting SCANNER_NAME: str and def scan(skill: Skill) -> list[Finding]def all_rules() -> list[tuple[...]] for the rules cataloganalysis.vet_skill (the orchestrator iterates over a fixed tuple of scanner modules)tests/test_scanners.pyTo add a new backend:
SkillBackend in backends/<your_backend>.pyget_skills, get_skill_by_id, get_directorybackends/__init__.pytests/test_backend_<your_backend>.pyBug reports + feature requests: open a GitHub issue. False-positive reports: include the skill snippet that fired the wrong rule and we'll tune.
MIT — see LICENSE.
Built by Temur Khan — production AI engineer. Contact: hello@temhan.dev
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.