teeshield
Static security linter for MCP servers. Scans tool definitions for vulnerabilities (path traversal, SQL injection, SSRF), scores description quality, and auto-rewrites descriptions for safer agent tool selection.
README
SpiderShield -- Security Scanner & Runtime Guard for MCP Servers
Security toolkit for MCP servers and AI agents. Static analysis, runtime policy enforcement, DLP, and audit logging -- from development to production.
What SpiderShield does
SpiderShield is a 5-subsystem security toolkit:
| Subsystem | Command / API | What it does |
|---|---|---|
| Static Scanner | spidershield scan |
Score tool descriptions, detect code vulnerabilities, rate overall quality (F/C/B/A/A+) |
| Agent Security | spidershield agent-check |
18 config checks, 15 malicious pattern detections, toxic flow analysis, rug pull detection |
| Runtime Guard SDK | SpiderGuard(policy="balanced") |
Pre/post-execution policy enforcement for tool calls |
| MCP Proxy | guard_mcp_server(cmd) |
Transparent security proxy between agent and MCP server |
| DLP Engine | Built into Guard SDK | Scan tool outputs for PII/secrets, redact or block |
Install
pip install spidershield
Requires Python 3.11+. See SUPPORT.md for version compatibility and optional dependencies.
5-Minute Success Path
# 1. Install
pip install spidershield
# 2. Scan any MCP server
spidershield scan ./your-mcp-server
# 3. See what's wrong and how to fix it
spidershield rewrite ./your-mcp-server --dry-run
# 4. (Optional) Protect at runtime
spidershield proxy -- npx server-filesystem /tmp
For contributors:
git clone https://github.com/teehooai/spidershield && cd spidershield
make verify-oss # One command: install + lint + type check + test + scan
Quick Start
Static scan (CI / development)
spidershield scan ./your-mcp-server
Example output:
SpiderShield Scan Report
modelcontextprotocol/servers/filesystem
+---------------------------------------------+
| Metric | Value | Score |
|-----------------------+-----------+---------|
| License | MIT | OK |
| Tools | 14 | OK |
| Security | 0 issues | 10.0/10 |
| Descriptions | | 3.2/10 |
| Architecture | | 10.0/10 |
| Tests | Yes | OK |
| | | |
| Overall | Rating: B | 7.6/10 |
| Improvement Potential | | 2.4/10 |
+---------------------------------------------+
Runtime Guard SDK (production)
Enforce security policies on every tool call at runtime:
from spidershield import SpiderGuard, Decision
guard = SpiderGuard(policy="strict")
result = guard.check("read_file", {"path": "/etc/passwd"})
if result.decision == Decision.DENY:
print(result.reason) # "System file access blocked"
print(result.suggestion) # "Use application-level files instead"
Policy presets:
| Preset | Behavior |
|---|---|
strict |
Deny by default, explicit allow list |
balanced |
Block known-dangerous patterns, allow common operations |
permissive |
Warn on suspicious patterns, allow most operations |
| Custom YAML | Load your own policy file: SpiderGuard(policy="my-policy.yaml") |
With audit logging and DLP:
guard = SpiderGuard(
policy="strict",
audit=True, # Write audit trail to disk
audit_dir="./logs", # Custom audit directory
dlp="redact", # Scan outputs for PII/secrets, redact matches
)
# Pre-execution check
result = guard.check("query_db", {"sql": "SELECT * FROM users"})
# Post-execution DLP scan
clean_output = guard.after_check("query_db", raw_result)
With data flywheel (opt-in telemetry to local SQLite):
guard = SpiderGuard(policy="balanced", dataset=True)
# Every check() call feeds the local dataset for scoring calibration
MCP Proxy (transparent protection)
Wrap any MCP server with SpiderShield policy enforcement:
from spidershield import guard_mcp_server
# Proxy between agent and server, enforcing "balanced" policy
guard_mcp_server(
["npx", "server-filesystem", "/tmp"],
policy="balanced",
audit=True,
)
Or from the CLI:
spidershield proxy -- npx server-filesystem /tmp --policy balanced
Rewrite tool descriptions
SpiderShield can automatically rewrite tool descriptions to be action-oriented, with scenario triggers, parameter examples, and error guidance.
# Preview changes (no files modified)
spidershield rewrite ./your-mcp-server --dry-run
# Apply changes to source files
spidershield rewrite ./your-mcp-server
Before (score 2.9):
"Shows the working tree status"
After (score 9.6):
"Query the current state of the Git working directory and staging area.
Use when the user wants to check which files are modified, staged, or
untracked before committing."
The rewriter works offline using templates (zero cost). Set ANTHROPIC_API_KEY for higher-quality LLM-powered rewrites.
Scan results across the MCP ecosystem
| Server | Tools | Security | Descriptions | Overall | Rating |
|---|---|---|---|---|---|
| filesystem | 14 | 10.0 | 3.2 | 7.6 | B |
| git | 12 | 10.0 | 2.4 | 7.3 | B |
| memory | 9 | 10.0 | 2.3 | 7.3 | B |
| fetch | 1 | 9.0 | 3.5 | 7.3 | B |
| supabase | 30 | 9.0 | 2.3 | 6.4 | B |
Full report: MCP-SECURITY-REPORT.md | Raw data: CURATION-REPORT.md
Try it on an example
The repo includes example MCP servers for instant demo:
git clone https://github.com/teehooai/spidershield
cd spidershield
spidershield scan examples/insecure-server # Rating: D (3.3/10)
spidershield scan examples/secure-server # Rating: D (4.7/10)
What SpiderShield checks
Static Scanner
Security (weighted 35%)
- Path traversal
- Command injection / dangerous eval
- SQL injection (Python + TypeScript)
- SSRF (unrestricted network access)
- Hardcoded credentials
- Unsafe deserialization (pickle, yaml.load)
- Prototype pollution (TypeScript)
Descriptions (weighted 35%)
- Action verb starts ("List", "Create", "Execute")
- Scenario triggers ("Use when the user wants to...")
- Parameter documentation
- Parameter examples
- Error handling guidance
- Disambiguation between similar tools
- Length (too short = vague, too long = noisy)
Architecture (weighted 30%)
- Test coverage (gradual: count-based)
- Error handling (gradual: coverage-based)
- README quality (gradual: length-based)
- Type annotations
- Dependency management
- Environment configuration
License (pass/fail gate, not weighted)
- MIT, Apache-2.0, BSD = OK
- GPL, AGPL = warning
- Missing = fail
Agent Security Checker
Scan AI agent installations for security misconfigurations and malicious skills.
spidershield agent-check ~/.openclaw
What it checks:
- 10 configuration security checks (auth, sandbox, SSRF, permissions, etc.)
- 20+ malicious skill patterns (reverse shells, credential theft, prompt injection)
- Toxic flow detection -- flags skills that can read sensitive data AND send it externally
- Typosquat detection for skill names
- Excessive permission requests
Advanced options:
# Verify skill integrity (rug pull detection)
spidershield agent-check --verify
# Only approved skills allowed
spidershield agent-check --allowlist approved.json
# Strict mode: fail on any finding
spidershield agent-check --policy strict
# Ignore specific rules
spidershield agent-check --ignore TS-W001 --ignore typosquat
# Auto-fix configuration issues
spidershield agent-check --fix
# SARIF output for GitHub Code Scanning
spidershield agent-check --format sarif > results.sarif
Skill pinning (rug pull protection):
spidershield agent-pin add ~/.openclaw/skills/my-skill/SKILL.md
spidershield agent-pin add-all
spidershield agent-pin verify # detect tampered skills
spidershield agent-pin list
46 standardized issue codes across 4 categories:
| Code | Category | Example |
|---|---|---|
| TS-E001~E015 | Error (malicious) | Reverse shell, credential theft, prompt injection |
| TS-W001~W011 | Warning (suspicious) | Typosquat, toxic flow, unapproved skill |
| TS-C001~C018 | Config | No auth, sandbox disabled, SSRF enabled |
| TS-P001~P002 | Pin | Verified, tampered |
Rating scale (SpiderRating)
| Rating | Score | Meaning |
|---|---|---|
| A | 9.0+ | Exemplary |
| B | 7.0+ | Production-ready |
| C | 5.0+ | Usable, needs improvements |
| D | 3.0+ | Significant issues |
| F | <3.0 | Unsafe, do not deploy |
Formula (MCP servers): description × 0.38 + security × 0.34 + metadata × 0.28
Formula (Skills): description × 0.45 + security × 0.35 + metadata × 0.20
JSON output
spidershield scan ./server --format json
spidershield scan ./server --format json -o report.json
GitHub Action
Add SpiderShield to your CI pipeline:
- uses: teehooai/spidershield@v0.3.0
with:
target: '.'
fail-below: '6.0'
Commands
| Command | Description |
|---|---|
spidershield scan <path> |
Scan and rate an MCP server |
spidershield rewrite <path> |
Rewrite tool descriptions |
spidershield harden <path> |
Suggest security hardening (advisory only) |
spidershield eval <original> <improved> |
Compare tool selection accuracy |
spidershield agent-check [dir] |
Scan an AI agent for security issues |
spidershield agent-pin <cmd> |
Manage skill pins for rug pull detection |
spidershield guard -- <cmd> |
Wrap any subprocess with security guard |
spidershield proxy -- <cmd> |
MCP proxy with policy enforcement |
spidershield policy list|show|validate |
Manage security policies |
spidershield audit show|stats |
View guard audit logs |
spidershield dataset stats |
View data flywheel statistics |
spidershield dataset benchmark-add |
Add a benchmark entry |
spidershield dataset benchmark-run |
Re-run benchmarks |
spidershield dataset calibrate |
Run scoring calibration |
Threat model
SpiderShield provides both static analysis and runtime policy enforcement.
What it catches:
- Ambiguous tool definitions that lead to agent misuse
- Missing side-effect declarations (writes, deletes, network calls)
- Unsafe permission patterns (unbounded file access, unrestricted queries)
- Vague descriptions that give agents no operational boundaries
- Malicious agent skills (reverse shells, credential theft, prompt injection)
- Dangerous capability combinations (data exfiltration flows)
- Insecure agent configurations (no auth, disabled sandbox, open DM policy)
- Skill tampering (rug pull detection via content hashing)
- PII/secret leakage in tool outputs (DLP engine)
- Policy violations at runtime (Runtime Guard)
What it does NOT do:
- Network traffic monitoring
- Container-level sandboxing
- Access control management (it enforces policies, not manages identities)
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。