
Serveur MCP pour la modélisation de menaces structurée basée sur STRIDE avec validation automatique du code, analyse du contexte métier et génération de rapports complets aux formats Markdown et JSON.
Un serveur Model Context Protocol (MCP) pour une modélisation complète des menaces avec validation automatique du code.
Ce serveur fournit des outils pour la modélisation des menaces, y compris l'analyse du contexte métier, l'analyse de l'architecture, l'analyse des acteurs de menace, l'analyse des limites de confiance, l'analyse des flux d'actifs, la validation de la sécurité du code et la génération de rapports complets.
Ce serveur MCP fait appel au LLM de l'agent existant plutôt que d'effectuer un appel API externe ou réseau vers un service différent. Il repose sur le LLM du client existant, qui pourrait être Amazon-Q, Kiro ou Cline.
Ce serveur MCP de modélisation des menaces a trois fonctionnalités principales :
Il dispose également d'outils pour générer un rapport final dans des formats exportables Markdown et JSON.
.threatmodel et vous pouvez faire évoluer votre modèle de menaces à mesure que votre code, votre conception et votre architecture évoluent.Remarque : Avant d'utiliser ces invites, vous devez d'abord terminer le processus d'Installation pour configurer le serveur MCP.
"Threat model this project using the threat modeling MCP Server"
Être spécifique dans l'invite pour utiliser le serveur MCP de modélisation des menaces garantira que le client (Cline/Kiro/etc) suivra les phases et la méthodologie exactes plutôt que de prendre des raccourcis et d'introduire des hallucinations dans les résultats.
### Modéliser les menaces d'un sous-projet ou réduire la portée à un sous-dossier```
"Threat model this subfolder using the threat modeling MCP Server"
Exécuter l'outil sur un sous-dossier limitera la portée du modèle de menace et du code à ce sous-dossier et enregistrera les résultats sous forme d'un répertoire .threatmodel dans ce sous-dossier.
"Save the threat model report"
### Valider l'exhaustivité du processus de modélisation des menaces```
"Please complete all the phases in the threat model plan and then generate the final report."
"Threat model this project using the threat model MCP server and consider this architecture_image.png attached for this review"
### Tenter de remédier aux menaces```
"Can you see if you can implement mitigation controls in the code based on the threats reported in the threat model"
"Can you updated the threat model based on the code fixes which mitigated the reported threats"
### Plus d'exemples```bash
# Set up context
"Set business context for an e-commerce payment system"
# Add architecture
"Add a web server component using AWS EC2"
"Add a database component using AWS RDS"
# Identify threats
"Add a threat where an attacker with network access performs SQL injection"
# Add mitigations
"Add a mitigation for input validation"
# Export results
"Export the threat model to my_model.json"
Avant d'installer le serveur MCP de modélisation des menaces, assurez-vous de disposer des éléments suivants :
uvx à partir d'Astral ou du README GitHub
uvx --versionUne fois que vous avez installé uvx et vérifié qu'il fonctionne, ajoutez la configuration ci-dessous à votre fichier de configuration mcp.json. Selon le type de client que vous utilisez (kiro/cline/amazon-q), l'emplacement de ce fichier mcp.json sera différent. Une fois la configuration ajoutée et votre IDE redémarré, le serveur MCP de modélisation des menaces sera automatiquement installé directement depuis ce dépôt GitHub à l'aide de uvx.
Remarque : Les outils utilisés par ce serveur MCP pour la modélisation des menaces sont déjà ajoutés à
autoApprovepour faciliter l'expérience utilisateur, ce qui permet un fonctionnement fluide sans invites d'approbation manuelle pour chaque appel d'outil. Tous les outils sont internes au serveur et n'effectuent pas d'appels API externes. Si vous souhaitez examiner chaque outil et l'approuver par invocation, vous devez remplacer le tableau autoApprove par ceci :"autoApprove": []
Ajoutez ce qui suit à la configuration de votre client MCP :
Pour Amazon Q (~/.aws/amazonq/mcp.json) :```json
{
"mcpServers": {
"threat-modeling-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/awslabs/threat-modeling-mcp-server.git",
"threat-modeling-mcp-server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": ["add_asset","add_assumption","add_component","add_component_to_zone","add_conn_to_crossing","add_connection","add_crossing_point","add_data_store","add_flow","add_mitigation","add_threat","add_threat_actor","add_trust_boundary","add_trust_zone","advance_phase","analyze_threat_actors","clear_architecture","clear_asset_flows","clear_business_context","clear_threat_actors","clear_trust_boundaries","delete_asset","delete_assumption","delete_component","delete_connection","delete_crossing_point","delete_data_store","delete_flow","delete_mitigation","delete_threat","delete_threat_actor","delete_trust_boundary","delete_trust_zone","execute_code_validation_step","execute_final_export_step","export_comprehensive_threat_model","export_threat_model_with_remediation_status","follow_threat_modeling_plan","generate_remediation_report","get_architecture_analysis_plan","get_asset","get_asset_flow_analysis_plan","get_assumption","get_business_context","get_business_context_analysis_plan","get_business_context_features","get_crossing_point","get_current_phase_status","get_data_model_types","get_flow","get_mitigation","get_phase_1_guidance","get_phase_2_guidance","get_phase_3_guidance","get_phase_4_guidance","get_phase_5_guidance","get_phase_6_guidance","get_phase_7_5_guidance","get_phase_7_guidance","get_phase_8_guidance","get_phase_9_guidance","get_threat","get_threat_actor","get_threat_model_progress","get_threat_modeling_plan","get_trust_boundary","get_trust_boundary_analysis_plan","get_trust_boundary_detection_plan","get_trust_zone","link_mitigation_to_threat","list_assets","list_assumptions","list_components","list_connections","list_crossing_points","list_data_models","list_data_stores","list_flows","list_mitigations","list_threat_actors","list_threats","list_trust_boundaries","list_trust_zones","remove_component_from_zone","remove_conn_from_crossing","reset_asset_flows","reset_threat_actors","set_business_context","set_threat_actor_priority","set_threat_actor_relevance","unlink_mitigation_from_threat","update_asset","update_assumption","update_component","update_connection","update_crossing_point","update_data_store","update_flow","update_mitigation","update_threat","update_threat_actor","update_trust_boundary","update_trust_zone","validate_business_context_completeness","validate_security_controls","validate_threat_model_against_code","validate_threat_remediation"]
}
}
}
**Pour VSCode Cline**:```json
{
"mcpServers": {
"threat-modeling-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/awslabs/threat-modeling-mcp-server.git",
"threat-modeling-mcp-server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": ["add_asset","add_assumption","add_component","add_component_to_zone","add_conn_to_crossing","add_connection","add_crossing_point","add_data_store","add_flow","add_mitigation","add_threat","add_threat_actor","add_trust_boundary","add_trust_zone","advance_phase","analyze_threat_actors","clear_architecture","clear_asset_flows","clear_business_context","clear_threat_actors","clear_trust_boundaries","delete_asset","delete_assumption","delete_component","delete_connection","delete_crossing_point","delete_data_store","delete_flow","delete_mitigation","delete_threat","delete_threat_actor","delete_trust_boundary","delete_trust_zone","execute_code_validation_step","execute_final_export_step","export_comprehensive_threat_model","export_threat_model_with_remediation_status","follow_threat_modeling_plan","generate_remediation_report","get_architecture_analysis_plan","get_asset","get_asset_flow_analysis_plan","get_assumption","get_business_context","get_business_context_analysis_plan","get_business_context_features","get_crossing_point","get_current_phase_status","get_data_model_types","get_flow","get_mitigation","get_phase_1_guidance","get_phase_2_guidance","get_phase_3_guidance","get_phase_4_guidance","get_phase_5_guidance","get_phase_6_guidance","get_phase_7_5_guidance","get_phase_7_guidance","get_phase_8_guidance","get_phase_9_guidance","get_threat","get_threat_actor","get_threat_model_progress","get_threat_modeling_plan","get_trust_boundary","get_trust_boundary_analysis_plan","get_trust_boundary_detection_plan","get_trust_zone","link_mitigation_to_threat","list_assets","list_assumptions","list_components","list_connections","list_crossing_points","list_data_models","list_data_stores","list_flows","list_mitigations","list_threat_actors","list_threats","list_trust_boundaries","list_trust_zones","remove_component_from_zone","remove_conn_from_crossing","reset_asset_flows","reset_threat_actors","set_business_context","set_threat_actor_priority","set_threat_actor_relevance","unlink_mitigation_from_threat","update_asset","update_assumption","update_component","update_connection","update_crossing_point","update_data_store","update_flow","update_mitigation","update_threat","update_threat_actor","update_trust_boundary","update_trust_zone","validate_business_context_completeness","validate_security_controls","validate_threat_model_against_code","validate_threat_remediation"],
"timeout": 60,
"type": "stdio"
}
}
}
Pour Kiro (~/.kiro/settings/mcp.json):```json
{
"mcpServers": {
"threat-modeling-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/awslabs/threat-modeling-mcp-server.git",
"threat-modeling-mcp-server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": ["add_asset","add_assumption","add_component","add_component_to_zone","add_conn_to_crossing","add_connection","add_crossing_point","add_data_store","add_flow","add_mitigation","add_threat","add_threat_actor","add_trust_boundary","add_trust_zone","advance_phase","analyze_threat_actors","clear_architecture","clear_asset_flows","clear_business_context","clear_threat_actors","clear_trust_boundaries","delete_asset","delete_assumption","delete_component","delete_connection","delete_crossing_point","delete_data_store","delete_flow","delete_mitigation","delete_threat","delete_threat_actor","delete_trust_boundary","delete_trust_zone","execute_code_validation_step","execute_final_export_step","export_comprehensive_threat_model","export_threat_model_with_remediation_status","follow_threat_modeling_plan","generate_remediation_report","get_architecture_analysis_plan","get_asset","get_asset_flow_analysis_plan","get_assumption","get_business_context","get_business_context_analysis_plan","get_business_context_features","get_crossing_point","get_current_phase_status","get_data_model_types","get_flow","get_mitigation","get_phase_1_guidance","get_phase_2_guidance","get_phase_3_guidance","get_phase_4_guidance","get_phase_5_guidance","get_phase_6_guidance","get_phase_7_5_guidance","get_phase_7_guidance","get_phase_8_guidance","get_phase_9_guidance","get_threat","get_threat_actor","get_threat_model_progress","get_threat_modeling_plan","get_trust_boundary","get_trust_boundary_analysis_plan","get_trust_boundary_detection_plan","get_trust_zone","link_mitigation_to_threat","list_assets","list_assumptions","list_components","list_connections","list_crossing_points","list_data_models","list_data_stores","list_flows","list_mitigations","list_threat_actors","list_threats","list_trust_boundaries","list_trust_zones","remove_component_from_zone","remove_conn_from_crossing","reset_asset_flows","reset_threat_actors","set_business_context","set_threat_actor_priority","set_threat_actor_relevance","unlink_mitigation_from_threat","update_asset","update_assumption","update_component","update_connection","update_crossing_point","update_data_store","update_flow","update_mitigation","update_threat","update_threat_actor","update_trust_boundary","update_trust_zone","validate_business_context_completeness","validate_security_controls","validate_threat_model_against_code","validate_threat_remediation"]
}
}
}
### Exécution avec Kiro CLI
Pour exécuter le serveur MCP via `kiro-cli` avec tous les outils auto-approuvés :```bash
kiro-cli chat --trust-tools="@threat-modeling-mcp-server/*"
Cela fait confiance à tous les outils du serveur MCP threat-modeling-mcp-server, vous ne serez donc pas invité à approuver chaque appel d'outil individuellement.
Ce dépôt inclut un agent Kiro CLI préconfiguré qui offre une expérience de modélisation des menaces guidée en 9 phases. La configuration de l'agent se trouve dans .kiro/agents/threat-modeler.json.
Installation globale (disponible depuis n'importe quel répertoire) :```bash ./install-kiro-agent.sh
Pour désinstaller : `./install-kiro-agent.sh --remove`
**Installation locale** (spécifique au projet) :```bash
cp -r /path/to/threat-modeling-mcp-server/.kiro /path/to/your-project/.kiro
Utilisation :```bash
kiro-cli chat --agent threat-modeler --no-interactive "Threat model this project"
kiro-cli chat --agent threat-modeler
**Ce que l'agent inclut** :
- **Prompt système** (`.kiro/prompts/threat-modeler.md`): Instructions détaillées pour la méthodologie STRIDE en 9 phases
- **Compétences** (`.kiro/skills/`): Documents de référence par phase pour chacune des 9 phases de modélisation des menaces
- **Outils MCP auto-approuvés** : Tous les outils de modélisation des menaces s'exécutent sans demande d'approbation manuelle
## Gestion des fichiers de sortie
Tous les fichiers de sortie générés par le serveur de modélisation des menaces sont automatiquement enregistrés dans un répertoire `.threatmodel` à la racine de votre projet. Cela inclut :
- Modèles de menaces exportés (format JSON)
- Rapports de validation
- Résultats d'analyse
Le répertoire `.threatmodel` est créé automatiquement si nécessaire.
## Référence rapide
### Outils essentiels pour commencer
| Outil | Objectif | Exemple |
|-------|----------|---------|
| `get_threat_modeling_plan()` | Obtenir un plan complet | Commencez ici pour une vue d'ensemble |
| **`get_phase_1_guidance()`** | **Obtenir des conseils ciblés pour la phase 1** | **Point de départ recommandé** |
| `get_current_phase_status()` | Vérifier la progression | Suivre l'état d'avancement |
| `set_business_context(desc)` | Définir le contexte système | "Système de paiement e-commerce" |
| `add_component(name, type)` | Ajouter un composant d'architecture | "API Gateway", "Réseau" |
| `add_threat(source, prereq, action, impact)` | Identifier une menace | "Attaquant", "accès réseau", "injection SQL", "violation de données" |
| `add_mitigation(content)` | Ajouter un contrôle de sécurité | "Validation des entrées et requêtes paramétrées" |
| `link_mitigation_to_threat(m_id, t_id)` | Lier les contrôles aux menaces | Connecter les mesures d'atténuation aux menaces spécifiques |
| **`execute_code_validation_step()`** | **Exécuter automatiquement la phase 7.5** | **Garantit l'achèvement de la validation du code** |
| **`execute_final_export_step()`** | **Exécuter automatiquement la phase 9** | **Génère tous les fichiers requis** |
### 🚀 Conseils étape par étape
**Approche recommandée** : Utilisez les outils de conseils spécifiques à chaque phase plutôt que le plan complet :
| Phase | Outil | Objectif |
|-------|-------|----------|
| 1 | `get_phase_1_guidance()` | Analyse du contexte métier |
| 2 | `get_phase_2_guidance()` | Analyse de l'architecture |
| 3 | `get_phase_3_guidance()` | Analyse des acteurs de menace |
| 4 | `get_phase_4_guidance()` | Analyse des limites de confiance |
| 5 | `get_phase_5_guidance()` | Analyse des flux d'actifs |
| 6 | `get_phase_6_guidance()` | Identification des menaces |
| 7 | `get_phase_7_guidance()` | Planification des mesures d'atténuation |
| 7.5 | `execute_code_validation_step()` | Validation du code (Auto) |
| 8 | `get_phase_8_guidance()` | Analyse des risques résiduels |
| 9 | `execute_final_export_step()` | Export final (Auto) |
## Aperçu des outils
Le serveur Threat Modeling MCP fournit **plus de 100 outils** organisés dans les catégories suivantes :
| Catégorie | Outils | Description |
|-----------|--------|-------------|
| **Plan de modélisation des menaces** | 1 outil | Générer des plans complets de modélisation des menaces |
| **Gestion des hypothèses** | 5 outils | Ajouter, lister, obtenir, mettre à jour et supprimer des hypothèses |
| **Analyse du contexte métier** | 13 outils | Analyser le contexte métier et les exigences |
| **Analyse de l'architecture** | 13 outils | Documenter et analyser l'architecture système |
| **Analyse des acteurs de menace** | 10 outils | Identifier et analyser les acteurs de menace potentiels |
| **Analyse des limites de confiance** | 18 outils | Analyser les zones de confiance, les limites et les points de passage |
| **Détection des limites de confiance** | 1 outil | Détection des limites de confiance par IA |
| **Analyse des flux d'actifs** | 12 outils | Suivre et analyser les flux d'actifs dans le système |
| **Génération de menaces** | 4 outils | Ajouter, lister, obtenir et supprimer des menaces |
| **Gestion des mesures d'atténuation** | 7 outils | Gérer les mesures d'atténuation et les lier aux menaces |
| **Guide de modélisation des menaces** | 3 outils | Conseils étape par étape tout au long du processus |
| **Types de modèles de données** | 2 outils | Explorer les types de modèles de données disponibles |
| **Validation de la sécurité du code** | 3 outils | Valider les contrôles de sécurité dans le code |
| **Validation du modèle de menaces** | 2 outils | Valider les modèles de menaces par rapport au code |
| **Orchestrateur d'étapes** | 12 outils | Conseils spécifiques à chaque phase et exécution des étapes |
## Méthodologie de modélisation des menaces
### Cadre STRIDE
Le serveur utilise la méthodologie STRIDE pour une identification systématique des menaces :
| Catégorie | Description | Exemples de menaces |
|-----------|-------------|---------------------|
| **Usurpation d'identité** | Usurper l'identité de quelqu'un ou de quelque chose d'autre | Contournement d'authentification, vol d'identité |
| **Altération** | Modifier des données ou du code | Corruption de données, injection de code |
| **Répudiation** | Prétendre ne pas avoir effectué une action | Altération des journaux, échecs de non-répudiation |
| **Divulgation d'informations** | Exposer des informations à des utilisateurs non autorisés | Fuites de données, violations de la vie privée |
| **Déni de service** | Refuser ou dégrader le service | Épuisement des ressources, attaques sur la disponibilité |
| **Élévation de privilège** | Obtenir des capacités sans autorisation | Escalade de privilèges, accès non autorisé |
### Processus de modélisation des menaces
Le processus complet de modélisation des menaces comprend ces phases :
1. **Analyse du contexte métier** : Comprendre la valeur métier et la criticité du système
2. **Analyse de l'architecture** : Documenter l'architecture technique du système
3. **Analyse des acteurs de menace** : Identifier les adversaires potentiels et leurs capacités
4. **Analyse des limites de confiance** : Identifier les zones de confiance et les passages de limites
5. **Analyse des flux d'actifs** : Suivre les actifs critiques à travers le système
6. **Identification des menaces** : Identifier systématiquement les menaces potentielles en utilisant STRIDE
7. **Planification des mesures d'atténuation** : Développer des stratégies pour faire face aux menaces identifiées
8. **Validation du code** : Valider les menaces par rapport aux contrôles de sécurité existants
9. **Analyse des risques résiduels** : Évaluer les risques restants après les mesures d'atténuation
Chaque phase comprend des objectifs, des activités et des résultats spécifiques pour guider le processus de modélisation des menaces.
### Niveaux de gravité des menaces
- **Critique** : Action immédiate requise, compromission probable du système
- **Élevé** : Risque significatif, doit être traité rapidement
- **Moyen** : Risque modéré, à traiter dans le cycle de développement normal
- **Faible** : Risque mineur, à traiter quand cela convient
- **Info** : Constatation informative, aucune action immédiate requise
### Types de mesures d'atténuation
- **Préventives** : Contrôles qui empêchent la survenue des menaces
- **Détectives** : Contrôles qui détectent quand des menaces surviennent
- **Correctives** : Contrôles qui répondent et corrigent les menaces
- **Compensatoires** : Contrôles alternatifs lorsque les contrôles principaux ne sont pas réalisables
## Hypothèses dans la modélisation des menaces
Les hypothèses sont des énoncés que nous acceptons comme vrais sans nécessiter de validation supplémentaire. Elles aident à délimiter le modèle de menaces en établissant des limites et des contraintes. Des exemples courants incluent :
- "Toutes les connexions réseau dans le VPC sont chiffrées en transit"
- "Les clés AWS KMS ne peuvent pas être découvertes par force brute"
- "Les acteurs de menace étatiques ne sont pas une préoccupation pour ce système"
En documentant les hypothèses, nous pouvons :
- Éviter de générer des menaces inutiles
- Éviter de recommander des mesures d'atténuation inutiles
- Se concentrer sur les préoccupations de sécurité pertinentes
- Documenter clairement la portée et les limites du modèle de menaces
## Développement
### Contribuer
Pour contribuer à ce projet :
1. Clonez le dépôt
2. Installez les dépendances de développement avec `uv pip install -e .`
3. Exécutez le serveur localement avec `python run_server.py`
4. Exécutez les tests avec `python -m pytest`
## Sécurité
Voir [CONTRIBUTING](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/CONTRIBUTING.md#security-issue-notifications) pour plus d'informations.
## Licence
Ce projet est sous licence Apache-2.0. Voir le fichier [LICENCE](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/LICENCE) pour plus de détails.