PrismSec 🔷
Serveur MCP sécurisé et modulaire pour outils de pentest.
Enveloppe 7 outils de sécurité standard de l'industrie (nmap, nuclei, gobuster, subfinder, httpx, nikto, sqlmap) dans 13 outils MCP enregistrés — prêt à l'emploi avec Claude, Cursor, Copilot, et tout agent IA compatible MCP.
Caractéristiques
| Fonctionnalité | Description |
|---|
| Zero shell=True | Tous les appels de sous-processus utilisent asyncio.create_subprocess_exec — aucune injection shell |
| Validation des entrées | Cible, URL, port, sévérité — tout est validé avant exécution |
| Détection d'injection | Bloque les métacaractères shell (;, $(), backticks, |) |
| Application des délais d'attente | Chaque outil possède un délai d'attente configurable — tue automatiquement les processus bloqués |
| Sortie structurée | XML/JSON/texte analysés → JSON propre pour les agents IA |
| Architecture modulaire | Un fichier par outil — facile à ajouter, maintenir et tester |
| MCP SDK v2 | Construit sur le dernier SDK du Model Context Protocol |
Installation
Depuis la source
git clone https://github.com/azmisyahrul/prismsec.git
cd prismsec
pip install -e .
Prérequis
Installez les outils de sécurité dont vous avez besoin :
# Ubuntu/Debian
apt install nmap nikto sqlmap
# Outils basés sur Go
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
go install github.com/OJ/gobuster/v3@latest
Outils (13 enregistrés)
Nmap — Scan de ports
| Outil MCP | Description |
|---|
nmap_port_scan | Scan de ports avec modes rapide/complet/service/furtif/agressif |
nmap_service_detect | Détection de services/versions sur les ports ouverts |
nmap_full_scan | Scan des 65535 ports TCP |
Nuclei — Scan de vulnérabilités
| Outil MCP | Description |
|---|
nuclei_vuln_scan | Scan complet de vulnérabilités avec tous les templates |
nuclei_severity_scan | Scan filtré par sévérité (critique, élevée, etc.) |
nuclei_template_scan | Scan ciblé avec un template spécifique |
Gobuster — Brute force de répertoires/DNS
| Outil MCP | Description |
|---|
gobuster_directory | Brute force de répertoires avec extensions configurables |
gobuster_dns | Brute force de sous-domaines DNS |
Autres outils
| Outil MCP | Description |
|---|
subfinder_enumerate | Énumération passive de sous-domaines (crt.sh, VirusTotal, etc.) |
| Outil MCP | Description |
|---|
check_tools | Vérifie quels outils de sécurité sont installés |
Utilisation
Claude Desktop
Ajoutez à claude_desktop_config.json :
{
"mcpServers": {
"prismsec": {
"command": "python3",
"args": ["/path/to/prismsec/server.py"],
"env": {}
}
}
}
Claude Code
claude mcp add prismsec python3 /path/to/prismsec/server.py
Cursor / Windsurf / Cline
Ajoutez à .cursor/mcp.json ou équivalent :
{
"mcpServers": {
"prismsec": {
"command": "python3",
"args": ["/path/to/prismsec/server.py"]
}
}
}
Transport SSE (à distance)
# Côté serveur
python3 server.py --transport sse --host 0.0.0.0 --port 8000
# Configuration client
{
"mcpServers": {
"prismsec": {
"url": "http://localhost:8000/sse"
}
}
}
Structure du projet
prismsec/
├── server.py # Point d'entrée du serveur MCP (13 outils)
├── pyproject.toml # Configuration du projet + dépendances
├── tools/ # Wrappers d'outils (un fichier par outil)
│ ├── base.py # ToolWrapper ABC + exécuteur asynchrone
│ ├── nmap.py # Nmap — parsing XML, modes de scan
│ ├── nuclei.py # Nuclei — parsing de sortie JSON
│ ├── gobuster.py # Gobuster — parsing de sortie texte
│ ├── subfinder.py # Subfinder — énumération de sous-domaines
│ ├── httpx.py # Httpx — sondage web
│ ├── nikto.py # Nikto — scan de vulnérabilités web
│ └── sqlmap.py # Sqlmap — test d'injections SQL
├── parsers/ # Analyseurs de sortie
│ ├── xml_parser.py # XML nmap → JSON structuré
│ ├── json_parser.py # Parsing JSON/JSONL
│ └── text_parser.py # Texte Gobuster, nikto, sqlmap
└── utils/ # Utilitaires partagés
├── runner.py # AsyncRunner avec délai d'attente
├── validator.py # Validation des entrées + détection d'injection
├── rate_limiter.py # Limiteur de débit à seau à jetons
└── logging.py # Journalisation structurée
Configuration
| Variable d'environnement | Défaut | Description |
|---|
LOG_LEVEL | INFO | Niveau de journalisation (DEBUG, INFO, WARNING, ERROR) |
Considérations de sécurité
⚠️ Tests autorisés uniquement. Utilisez-le contre des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite de tester.
- Les sorties des outils peuvent contenir des informations sensibles (IP, ports ouverts, vulnérabilités)
- Le serveur est lié à
127.0.0.1 par défaut — ne l'exposez jamais à des réseaux non fiables
- Chaque outil dispose de délais d'attente configurables pour prévenir l'épuisement des ressources
Licence
MIT
Construit avec le standard Model Context Protocol pour une large compatibilité avec les clients.