secubox-openwrt/package/secubox/secubox-mcp-server/README.md
CyberMind-FR 0e0749ed08 feat: Add threat-analyst, dns-guard, mcp-server and DNS provider DynDNS
New packages:
- secubox-threat-analyst: AI-powered threat analysis with CrowdSec integration
- luci-app-threat-analyst: LuCI dashboard for threat intelligence
- secubox-dns-guard: DNS security monitoring and blocking
- secubox-mcp-server: Model Context Protocol server for AI assistant integration

Enhancements:
- dns-provider: Add DynDNS support (dyndns, get, update, domains commands)
- gandi.sh: Full DynDNS with WAN IP detection and record updates
- luci-app-dnsguard: Upgrade to v1.1.0 with improved dashboard

Infrastructure:
- BIND9 DNS setup for secubox.in with CAA records
- Wildcard SSL certificates via DNS-01 challenge
- HAProxy config fixes for secubox.in subdomains
- Mail server setup with Roundcube webmail

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 08:30:28 +01:00

204 lines
5.6 KiB
Markdown

# SecuBox MCP Server
Model Context Protocol (MCP) server for SecuBox. Exposes device security data to AI assistants (Claude Desktop, Cursor, VS Code) via JSON-RPC 2.0 over stdio.
**Version**: 1.0.0
## Overview
MCP (Model Context Protocol) is an open protocol by Anthropic that allows AI assistants to access local data sources. This server provides SecuBox security data to AI tools for:
- Real-time threat intelligence analysis
- CVE vulnerability lookups with mitigation advice
- WAF filter rule suggestions
- Security posture assessments
- Network and system monitoring
## Installation
```sh
opkg install secubox-mcp-server
```
## Available Tools
### Security Tools
| Tool | Description |
|------|-------------|
| `crowdsec.alerts` | Get active CrowdSec security alerts |
| `crowdsec.decisions` | Get active blocking decisions |
| `waf.logs` | Get WAF threat events from mitmproxy |
### Network Tools
| Tool | Description |
|------|-------------|
| `network.flows` | Get network traffic summary |
| `wireguard.status` | Get VPN tunnel status |
| `dns.queries` | Get DNS query statistics |
### System Tools
| Tool | Description |
|------|-------------|
| `system.metrics` | Get CPU, memory, disk, temperature |
| `uci.get` | Read OpenWrt UCI configuration |
| `uci.set` | Write UCI configuration (disabled by default) |
### AI-Powered Tools (Requires LocalAI)
| Tool | Description |
|------|-------------|
| `ai.analyze_threats` | AI analysis of CrowdSec alerts with recommendations |
| `ai.cve_lookup` | CVE vulnerability analysis and mitigation advice |
| `ai.suggest_waf_rules` | AI-suggested mitmproxy/WAF filter patterns |
| `ai.explain_ban` | Explain why an IP was banned |
| `ai.security_posture` | Security posture assessment |
## Claude Desktop Integration
Add to `~/.config/claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"secubox": {
"command": "ssh",
"args": ["root@192.168.255.1", "/usr/bin/secubox-mcp"]
}
}
}
```
Then restart Claude Desktop. Ask questions like:
- "What are the current security threats on my router?"
- "Analyze CVE-2024-1234 and suggest mitigations"
- "What's my network traffic summary?"
- "Suggest WAF rules based on recent attacks"
## Configuration
UCI config: `/etc/config/mcp-server`
```uci
config mcp-server 'main'
option enabled '1'
# Tool whitelist - only these tools can be invoked
list allowed_tool 'crowdsec.alerts'
list allowed_tool 'crowdsec.decisions'
list allowed_tool 'waf.logs'
list allowed_tool 'dns.queries'
list allowed_tool 'network.flows'
list allowed_tool 'system.metrics'
list allowed_tool 'wireguard.status'
list allowed_tool 'uci.get'
# list allowed_tool 'uci.set' # Disabled by default
# AI tools (require LocalAI)
list allowed_tool 'ai.analyze_threats'
list allowed_tool 'ai.cve_lookup'
list allowed_tool 'ai.suggest_waf_rules'
list allowed_tool 'ai.explain_ban'
list allowed_tool 'ai.security_posture'
# Data classification for sovereignty
option classification 'local_only'
```
### Enable/Disable Tools
```sh
# Enable uci.set (careful - allows config changes)
uci add_list mcp-server.main.allowed_tool='uci.set'
uci commit mcp-server
# Disable a tool
uci del_list mcp-server.main.allowed_tool='ai.security_posture'
uci commit mcp-server
```
## Testing
### Test Protocol Locally
```sh
# Initialize
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | /usr/bin/secubox-mcp
# List tools
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | /usr/bin/secubox-mcp
# Call a tool
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"system.metrics","arguments":{}}}' | /usr/bin/secubox-mcp
```
### Test via SSH
```sh
ssh root@192.168.255.1 '/usr/bin/secubox-mcp' <<'EOF'
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"crowdsec.alerts","arguments":{"limit":10}}}
EOF
```
## LocalAI Integration
The AI-powered tools require LocalAI running on the device:
```sh
# Install and start LocalAI
opkg install secubox-app-localai
localaictl install
localaictl model-install tinyllama
uci set localai.main.enabled=1
uci commit localai
/etc/init.d/localai start
```
AI tools will automatically use LocalAI at `http://127.0.0.1:8081` for analysis.
## Security Considerations
1. **Tool Whitelist**: Only tools listed in UCI config can be invoked
2. **uci.set Disabled**: Write access disabled by default
3. **Sensitive Data Blocked**: uci.get blocks password/secret/key fields
4. **SSH Required**: MCP runs over SSH - requires key authentication
5. **Data Classification**: All data marked LOCAL_ONLY by default
6. **No Cloud Escalation**: Server runs entirely on device
## Files
| File | Description |
|------|-------------|
| `/usr/bin/secubox-mcp` | Main MCP server |
| `/usr/lib/secubox-mcp/protocol.sh` | JSON-RPC protocol handler |
| `/usr/lib/secubox-mcp/tools/*.sh` | Tool implementations |
| `/etc/config/mcp-server` | UCI configuration |
## Dependencies
- `jsonfilter` — JSON parsing (OpenWrt native)
- `cscli` — CrowdSec CLI (for crowdsec tools)
- `wg` — WireGuard tools (for wireguard tools)
- `secubox-app-localai` — LocalAI (for AI tools)
## Protocol
MCP uses JSON-RPC 2.0 over stdio:
- **Transport**: stdin/stdout
- **Protocol Version**: 2024-11-05
- **Methods**: `initialize`, `tools/list`, `tools/call`, `ping`
## License
MIT
## References
- [Model Context Protocol Spec](https://modelcontextprotocol.io/)
- [Claude Desktop MCP Guide](https://docs.anthropic.com/en/docs/claude-code/mcp)
- [SecuBox Documentation](https://secubox.dev/docs)