ShieldNet MCP
# π‘οΈ ShieldNet MCP β Security Scanner for AI Agents
[](https://www.credly.com/badges/31a2f3b3-ab9a-4baa-b006-03e3da0fa2eb/public_url)
> **Bring security governance to any AI agent deployment via MCP.**
>
> Track: **Secure & Govern MCP** | [MCP_HACK//26](https://aihackathon.dev)
<div align="center">
[](https://github.com/hhhashexe/shieldnet-mcp/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/shieldnet)
[](./LICENSE)
[](./test/)
[](https://nodejs.org)
[](https://modelcontextprotocol.io)
</div>
---
## What It Does
ShieldNet MCP is a **zero-trust guardrail** for AI agents. Before your agent connects to any external endpoint (API, webhook, third-party service), ShieldNet scans it and returns an **ALLOW / WARN / BLOCK** decision β with full findings and severity ratings.
- **Scan URLs** for 50+ checks across 7 security modules
- **Governance decisions** β auto-gate agent connections with ALLOW/WARN/BLOCK
- **Security headers audit** β quick compliance check
- **Side-by-side comparisons** β which endpoint is safer?
- **Session history** β track all scans with grades and scores
- **Pre-built prompts** β security audit & pre-deployment check workflows
## Why It Matters
AI agents increasingly interact with external APIs and services. Without security governance:
- An agent could connect to a compromised endpoint
- Sensitive data could leak through misconfigured CORS
- Injection attacks could manipulate agent behavior
ShieldNet acts as a **security guardrail** β scan first, connect later.
## Architecture
```
ββββββββββββ βββββββββββββββββββββββββ
β β β agentgateway β
β AI AgentββββββββΆβ βββββββββββββββββββ β βββββββββββββββββ
β (Claude, β β β π ShieldNet β β β External β
β GPT, βββββββββ β MCP Server ββββΌββββββΆβ Service β
β etc.) β β β β β β (target URL) β
β β β β βββββββββββββ β β β β
ββββββββββββ β β β Scanners β β β βββββββββββββββββ
β ββββΌββββββββββββΌβββ β
β β β β
β ββββΌβββ βββββββββΌβββ β
β βHeadersβ βInjection β β
β β TLS β βInfo Disc β β
β β Auth β βMisconfig β β
β βRate β β β β
β βLimit β β β β
β ββββββββ ββββββββββββ β
β ALLOW / WARN / BLOCK β
ββββββββββββββββββββββββββ
```
**Flow:**
1. AI agent requests external connection
2. **agentgateway** routes to ShieldNet MCP
3. **ShieldNet** runs 7 scanner modules in parallel
4. Returns **ALLOW/WARN/BLOCK** + detailed findings
5. agentgateway enforces the decision
### Scanner Modules (7)
| # | Module | What It Checks |
|---|--------|----------------|
| 1 | `security_headers` | HSTS, CSP, X-Frame-Options, Cookie flags, CORS wildcards, info disclosure |
| 2 | `injection` | Reflected XSS, SQLi, SSTI, Command Injection, Path Traversal, SSRF, Open Redirect |
| 3 | `info_disclosure` | 25 sensitive paths (.env, .git, package.json, swagger, backups, server-status) |
| 4 | `tls` | HTTP vs HTTPS, SSL/TLS redirect enforcement |
| 5 | `auth` | JWT exposure, JWT `alg:none`, API keys in source, email harvesting |
| 6 | `misconfiguration` | CORS origin reflection, TRACE method, version disclosure in error pages |
| 7 | `rate_limiting` | 20-request burst test (aggressive mode only) |
## Quick Start
### 1. Install
```bash
git clone https://github.com/hhhashexe/shieldnet-mcp.git
cd shieldnet-mcp
npm install
```
### 2. Run a demo scan (no setup needed)
```bash
bash demo.sh https://example.com
```
This launches the MCP server, discovers available tools via `tools/list`, runs a live scan, and pretty-prints the results with colors. π€
### 3. Run the test suite
```bash
npm test
```
75 integration tests covering all 6 MCP tools, 6 tools + 3 resources + 2 prompts.
### 4. Use as an MCP Server
#### Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"shieldnet": {
"command": "node",
"args": ["/path/to/shieldnet-mcp/src/index.js"]
}
}
}
```
#### With agentgateway
```yaml
targets:
- name: shieldnet-security
provider:
type: mcp
config:
command: node
args: ["src/index.js"]
```
See [agentgateway.yaml](./agentgateway.yaml) for full configuration.
#### Raw JSON-RPC (stdio)
```bash
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"my-agent","version":"0.1"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"scan_url","arguments":{"url":"https://example.com"}}}' | node src/index.js
```
## MCP Tools
| Tool | Description |
|------|-------------|
| [`scan_url`](#) | Comprehensive scan β 7 modules, 50+ checks, A-F grade |
| [`assess_risk`](#) | Scan + governance decision (ALLOW/WARN/BLOCK) with confidence score |
| [`check_headers`](#) | Quick security headers audit β PASS/WARN/FAIL verdict |
| [`scan_history`](#) | Session scan history with grades |
| [`compare_scans`](#) | Side-by-side comparison of two URLs |
| [`governance_policy`](#) | View policy or evaluate a score against thresholds |
## MCP Resources
| Resource | Description |
|----------|-------------|
| `shieldnet://attack-vectors` | Full attack vector database |
| `shieldnet://scan-history` | Session scan history |
| `shieldnet://governance-policy` | ALLOW/WARN/BLOCK thresholds |
## MCP Prompts
| Prompt | Description |
|--------|-------------|
| `security_audit` | Full audit with executive report |
| `pre_deployment_check` | Gate check before deployment |
## Security Governance
ShieldNet makes ALLOW/WARN/BLOCK decisions based on:
```
ALLOW β Score β₯ 70, no critical findings
WARN β Score 50-69, or high-severity findings
BLOCK β Score < 50, or any critical vulnerabilities
```
### Real-World Proof
ShieldNet has been used in production security audits:
- **3 CVEs** discovered and responsibly disclosed
- **PayLock.xyz audit**: 36 verified findings (4 Critical, 17 High)
- Published on npm as `shieldnet` (v0.3.2)
## License
MIT β see [LICENSE](./LICENSE)
## Links
- [npm: shieldnet](https://www.npmjs.com/package/shieldnet)
- [GitHub: ShieldNet MCP](https://github.com/hhhashexe/shieldnet-mcp)
TDQS
Scored across 6 tools
scan_url and assess_risk both scan a URL and could be confused, though assess_risk explicitly returns a governance decision. check_headers overlaps heavily with the headers module inside scan_url, creating ambiguity about which tool to call. Descriptions help clarify intent, but some boundaries remain fuzzy.
Most tools follow a clear verb_noun snake_case pattern: scan_url, check_headers, scan_history, compare_scans, assess_risk. governance_policy deviates by using a noun_noun name rather than a verb-led action name like view_policy, but the overall naming style is still predictable.
Six tools is a well-scoped set for a security scanning and governance server. Each tool has a distinct role within the workflow, and the count is neither bloated nor too thin.
The tool surface covers scanning, risk assessment, governance policy, history, and comparison, which are the core needs for this domain. A minor gap is that users cannot retrieve detailed findings from a past scan, only grades and scores, but agents can work around this by re-scanning.