A fast, lightweight security scanner for the agent stack β Model Context Protocol (MCP) servers AND AI agent skills (Claude Code commands, agentskills.io bundles, Cursor / Codex / Windsurf / Gemini equivalents) β with built-in vulnerability detection.
Ramparts scans the two surfaces an AI agent trusts most: the MCP servers it talks to over the network, and the skill files it loads from disk and executes by name. Both deliver untrusted instructions and tool grants into the agent's loop; ramparts applies the same security pipeline (YARA, LLM analysis, OWASP MCP Top 10 tagging) to both.
- MCP scanning covers the Model Context Protocol β the open standard that lets AI assistants connect to databases, file systems, and APIs via tool-calling. Ramparts discovers a server's tools/resources/prompts and audits them for prompt injection, tool poisoning, secret leakage, path traversal, command injection, cross-origin escalation, supply-chain CVEs (via OSV.dev), and more.
- Skill scanning covers the markdown/YAML files an agent loads as named capabilities β Claude Code custom slash commands, Cursor / Codex / Windsurf / Gemini equivalents, and first-class support for agentskills.io bundles (
<name>/SKILL.mddirectories with siblingscripts/,references/,assets/). Each skill body becomes a synthetic MCP prompt that runs through the same analyzers; bundled scripts get scanned through YARA, name-vs-directory mismatches surface as HIGH-severity deception findings, and the agentskills.io name/charset rules are validated.
Ramparts is under active development. Read our launch blog.
The MCP-and-skills attack surface is broad. MCP servers expose file systems, databases, APIs, and system commands β turning into attack vectors via tool poisoning, command injection, and data exfiltration without proper analysis. Agent skills carry the same risk profile (untrusted instructions an agent may follow) plus their own twists: skill-file allowed-tools grants that hand out unrestricted Bash, sensitive @<path> references that inline credentials into prompt context, name collisions that let one skill shadow another in the agent's router, and bundled scripts that ship arbitrary executable code. π Security Features & Attack Vectors documents every detector ramparts ships with β across both MCP and skill scanning.
Ramparts provides security scanning of the MCP-and-skill ecosystem by:
- MCP server discovery & analysis β scans MCP endpoints for tools/resources/prompts; multi-transport (HTTP, SSE, stdio, subprocess) with intelligent fallback and session management
- Skill scanning β same threat model applied to agent skill files on disk (Claude Code commands, agentskills.io bundles incl. bundled
scripts/+references/, Cursor / Codex / Windsurf / Gemini variants) - Static analysis (YARA) β 25+ pre/post-scan rules across both surfaces, including 9 skill-targeted rules (prompt-injection variants, credential harvesting, tool-chaining exfil, system manipulation, authority abuse)
- LLM-powered analysis β sophisticated semantic issues no static rule can spot (tool descriptions that lie about behavior, sneaky permission requests, etc.)
- Cross-origin analysis β detects tools spanning multiple domains, a context-hijacking / injection vector
- Supply-chain coverage β queries OSV.dev for known CVEs in npx/uvx-launched stdio MCP servers
- Structural skill heuristics β overbroad
allowed-toolsgrants, vague/generic triggers, sensitive@<path>references, embedded base64/hex payloads, skill-name collisions - agentskills.io spec validation β directory-vs-
name:mismatch (deception), spec name-rule violations, unknown frontmatter fields - OWASP MCP Top 10 tagging β every finding mapped to a versioned OWASP MCP Top 10 entry; visible in terminal, JSON, SARIF, and markdown report output
- Multiple output formats β terminal, JSON, SARIF 2.1.0 (for GitHub Advanced Security / GitLab / Azure DevOps), and a detailed markdown report
π‘ Jump directly to detailed Rampart features? π Detailed Features
- MCP users β scan third-party MCP servers before connecting; validate local servers before production
- MCP developers β ensure your tools/resources/prompts don't expose vulnerabilities to AI agents
- Skill authors β validate agentskills.io bundles against the spec before publishing; catch overbroad tool grants and sensitive-file references in your
.claude/commands/or bundledscripts/ - Agent operators β scan the skills your team has authored or installed; check that no bundle has been swapped under a deceptive directory name; surface findings in your existing SARIF/code-scanning workflow
- Security audits β full assessment of an MCP server's posture or a skill repo's safety
- Development β fast feedback loop while building MCP servers or authoring skills
- CI/CD integration β gate PRs that add skills or change MCP server configs (SARIF flows directly into GitHub code-scanning, GitLab, Azure DevOps)
- Compliance β meet AI-agent deployment security requirements with OWASP MCP Top 10-tagged evidence
π‘ Caution: Ramparts analyzes static metadata, configurations, and skill files. For comprehensive security, combine with runtime MCP guardrails and adopt a layered security approach. The MCP+skills threat landscape is rapidly evolving, and ramparts is not perfect β inaccuracies are inevitable.
Installation
cargo install rampartsRamparts has two top-level scan surfaces. Pick whichever (or both) match what you're securing.
# A specific MCP server (HTTP)
ramparts scan https://api.githubcopilot.com/mcp/ --auth-headers "Authorization: Bearer $TOKEN"
# stdio / subprocess MCP servers
ramparts scan "stdio:npx:mcp-server-commands"
ramparts scan "stdio:python3:/path/to/mcp_server.py"
# Auto-discover and scan every MCP server in your IDE configs
# (Cursor, Windsurf, VS Code, Claude Desktop, Claude Code, Cline)
ramparts scan-config
# Generate a detailed markdown report (scan_YYYYMMDD_HHMMSS.md)
ramparts scan-config --report
# Or walk a checked-in configs-only repo (great for CI)
ramparts scan-config --root ./ide-configs# A single skill file or every *.md skill under a directory
ramparts skills scan ./.claude/commands
# An agentskills.io bundle directory β picks up SKILL.md +
# walks sibling scripts/ and references/ through YARA
ramparts skills scan ./my-skill-bundle
# Auto-discover skills across every supported ecosystem at the user
# and workspace level (.claude/, .cursor/, .codex/, .windsurf/,
# .gemini/, .openai/, ~/.skills/, probe-gated ./skills/).
# Add extra roots without rebuilding via RAMPARTS_SKILL_ROOTS=path1,path2.
ramparts skills scan-config
# SARIF output for code-scanning ingestion
ramparts skills scan ./.claude/commands --format sarif > skills.sarifSkill formats supported out of the box:
- Claude Code custom slash commands β flat
.mdfiles under.claude/commands/(per-user and per-workspace) - agentskills.io bundles β
<name>/SKILL.mddirectories with optional siblingscripts/(.py/.sh/.bash/.zsh/.js/.mjs/.cjs/.ts/.rb/.pl/.ps1),references/(.md), andassets/. Bundle mode also validates the spec'sname:field against the parent directory name, the 1β64 char[a-z0-9-]rule, and surfaces name-vs-directory mismatches as HIGH-severity deception findings (AgentskillsNameMismatch). - Cursor / OpenAI Codex / Windsurf / Gemini skill repos that ship the same markdown + YAML frontmatter shape β supported via shared frontmatter fields and the per-ecosystem dotdir discovery roots.
π‘ Did you know you can start Ramparts as a server? Run
ramparts serverto get a REST API for continuous monitoring and CI/CD integration. See π Ramparts Server Mode
ramparts mcp-stdioWhen publishing to Docker MCP Toolkit, configure the container command to ramparts mcp-stdio so the toolkit connects via stdio. Use MCP-Dockerfile to make this the default.
Single server scan:
ramparts scan https://api.githubcopilot.com/mcp/ --auth-headers "Authorization: Bearer $TOKEN"RAMPARTS
MCP Security Scanner
Version: 0.7.0
Current Time: 2025-08-04 07:32:19 UTC
Git Commit: 9d0c37c
π GitHub Copilot MCP Server
β
All tools passed security checks
βββ push_files β
passed
βββ create_or_update_file β οΈ 2 warnings
β βββ π HIGH (LLM): Tool allowing directory traversal attacks
β βββ π HIGH (YARA): EnvironmentVariableLeakage
βββ get_secret_scanning_alert β οΈ 1 warning
β βββ π HIGH (YARA): EnvironmentVariableLeakage
Summary:
β’ Tools scanned: 83
β’ Security issues: 3 findings
IDE configuration scan:
ramparts scan-config --reportπ Found 3 IDE config files:
β vscode IDE: /Users/user/.vscode/mcp.json
β claude IDE: /Users/user/Library/Application Support/Claude/claude_desktop_config.json
β cursor IDE: /Users/user/.cursor/mcp.json
π vscode IDE config: /Users/user/.vscode/mcp.json (2 servers)
ββ github-copilot [HTTP]: https://api.githubcopilot.com/mcp/
ββ local-tools [STDIO]: stdio:python[local-mcp-server]
π MCP Servers Security Scan Summary
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Scan Summary:
β’ Servers: 2 total (2 β
successful, 0 β failed)
β’ Resources: 81 tools, 0 resources, 2 prompts
β’ Security: β
All servers passed security checks
π Detailed report generated: scan_20250804_073225.md
Skill scan (agentskills.io bundle):
ramparts skills scan ./my-skillPath: ./my-skill
β 1 skill scanned, 4 findings (2 CRITICAL, 2 HIGH) Β· 0.6s
β οΈ evil-skill (4 findings)
source: ./my-skill/SKILL.md
[HIGH] SecretsLeakage in scripts/exfil.py [OWASP: MCP06, MCP09]
Detects potential exposure of sensitive information like API keys, passwords, and tokens
[CRITICAL] SSHKeyExposure in scripts/exfil.py [OWASP: MCP06]
Detects SSH keys, authorized_keys files, and SSH configuration access
[CRITICAL] SSHKeyExposure in references/api.md [OWASP: MCP06]
Detects SSH keys, authorized_keys files, and SSH configuration access
[HIGH] AgentskillsNameMismatch [OWASP: MCP02]
SKILL.md declares `name: evil-skill` but its parent directory is `my-skill/`.
agentskills.io requires the name to match the parent directory; the mismatch may
indicate a deceptively-named bundle.
(AgentskillsNameMismatch is from agentskills.io spec validation; the
SecretsLeakage / SSHKeyExposure rows are bundled-script YARA findings β
ramparts walked scripts/exfil.py and references/api.md automatically.)
We welcome contributions to Ramparts. If you have suggestions, bug reports, or feature requests, please open an issue on our GitHub repository.
- π CLI Reference β All commands (scan, scan-config, skills scan, skills scan-config, replay, server, mcp-stdio), options, and usage examples
- π‘οΈ Security Features & Attack Vectors β Every detector ramparts ships with, across MCP + skill scanning
- βοΈ Configuration Reference β Complete config file documentation + skill discovery root config
- π Troubleshooting Guide β Solutions to common issues
- π Detailed Features β How each capability works under the hood
- Need Support?
- MCP Protocol Documentation // Examples folder was removed to reduce branch diff; see configuration docs instead.
- Configuration Guide