
Server MCP per modellazione delle minacce strutturata basata su STRIDE con validazione automatica del codice, analisi del contesto aziendale e generazione di report completi in formato Markdown e JSON.
Un server Model Context Protocol (MCP) per un'analisi completa delle minacce con validazione automatica del codice.
Questo server fornisce strumenti per il threat modeling, inclusi analisi del contesto aziendale, analisi dell'architettura, analisi degli attori delle minacce, analisi dei confini di fiducia, analisi dei flussi di asset, validazione della sicurezza del codice e generazione di report completi.
Questo server MCP chiama il LLM dell'agente esistente invece di effettuare una chiamata API esterna o di rete verso un servizio diverso. Si basa sul LLM del client esistente, che potrebbe essere Amazon-Q, Kiro o Cline.
Questo server MCP per Threat Modeling ha tre funzionalità principali:
Dispone inoltre di strumenti per generare un report finale in formati Markdown e JSON esportabili.
.threatmodel e puoi far evolvere il tuo threat model man mano che il tuo codice, design e architettura si evolvono.Nota: Prima di utilizzare questi prompt, è necessario completare il processo di Installazione per configurare il server MCP.
"Threat model this project using the threat modeling MCP Server"
Essere specifici nel prompt per utilizzare il threat modeling MCP Server garantirà che il client (Cline/Kiro/etc) segua le fasi e la metodologia esatte, piuttosto che prendere scorciatoie e introdurre allucinazioni nei risultati.
### Modellare le minacce di un sottoprogetto o ridurre l'ambito a una sottocartella```
"Threat model this subfolder using the threat modeling MCP Server"
Eseguirlo su una sottocartella limiterà l'ambito del modello di minaccia e del codice a quella sottocartella e salverà i risultati come directory .threatmodel all'interno della sottocartella.
"Save the threat model report"
### Verifica la completezza del processo di threat modeling```
"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"
### Tentativo di correggere le minacce```
"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"
### Altri esempi```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"
Prima di installare il Threat Modeling MCP Server, assicurati di soddisfare i seguenti requisiti:
uvx da Astral o dal README di GitHub
uvx --versionUna volta installato e verificato il funzionamento di uvx, aggiungi la configurazione seguente al tuo file di configurazione mcp.json. A seconda del tipo di client che stai utilizzando (kiro/cline/amazon-q), la posizione di questo mcp.json sarà diversa. Dopo aver aggiunto la configurazione e riavviato il tuo IDE, il Threat Modeling MCP Server verrà installato automaticamente direttamente da questo repository GitHub utilizzando uvx.
Nota: Gli strumenti utilizzati da questo server MCP per la modellazione delle minacce sono già stati aggiunti a
autoApproveper facilità d'uso, consentendo un funzionamento senza interruzioni senza richieste di approvazione manuale per ogni chiamata di strumento. Tutti gli strumenti sono interni al server e non effettuano chiamate API esterne. Se desideri rivedere ciascuno degli strumenti e approvarli singolarmente, sostituisci l'array autoApprove con questo:"autoApprove": []
Aggiungi quanto segue alla configurazione del tuo client MCP:
Per 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"]
}
}
}
**Per 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"
}
}
}
Per 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"]
}
}
}
### Esecuzione con Kiro CLI
Per eseguire il server MCP tramite `kiro-cli` con tutti gli strumenti approvati automaticamente:```bash
kiro-cli chat --trust-tools="@threat-modeling-mcp-server/*"
Questa configurazione autorizza tutti gli strumenti del server MCP threat-modeling-mcp-server, quindi non ti verrà chiesto di approvare ogni singola chiamata di strumento individualmente.
Questo repository include un agente Kiro CLI preconfigurato che offre un'esperienza di threat modeling guidata in 9 fasi. La configurazione dell'agente si trova in .kiro/agents/threat-modeler.json.
Installazione globale (disponibile da qualsiasi directory):```bash ./install-kiro-agent.sh
Per disinstallare: `./install-kiro-agent.sh --remove`
**Installazione locale** (specifica del progetto):```bash
cp -r /path/to/threat-modeling-mcp-server/.kiro /path/to/your-project/.kiro
Utilizzo:```bash
kiro-cli chat --agent threat-modeler --no-interactive "Threat model this project"
kiro-cli chat --agent threat-modeler
**Cosa include l'agente**:
- **System prompt** (`.kiro/prompts/threat-modeler.md`): Istruzioni dettagliate per la metodologia STRIDE a 9 fasi
- **Skills** (`.kiro/skills/`): Materiali di riferimento per fase per ciascuna delle 9 fasi di threat modeling
- **Strumenti MCP approvati automaticamente**: Tutti gli strumenti di threat modeling vengono eseguiti senza richieste di approvazione manuale
## Gestione dei File di Output
Tutti i file di output generati dal server di threat modeling vengono automaticamente salvati in una directory `.threatmodel` nella root del tuo progetto. Questo include:
- Modelli di minaccia esportati (formato JSON)
- Report di validazione
- Risultati dell'analisi
La directory `.threatmodel` viene creata automaticamente quando necessario.
## Riferimento Rapido
### Strumenti Essenziali per Iniziare
| Strumento | Scopo | Esempio |
|-----------|-------|---------|
| `get_threat_modeling_plan()` | Ottieni un piano completo | Inizia qui per una panoramica |
| **`get_phase_1_guidance()`** | **Ottieni indicazioni mirate per la Fase 1** | **Punto di partenza consigliato** |
| `get_current_phase_status()` | Controlla lo stato di avanzamento | Traccia il completamento |
| `set_business_context(desc)` | Definisci il contesto del sistema | "Sistema di pagamento e-commerce" |
| `add_component(name, type)` | Aggiungi un componente architetturale | "API Gateway", "Rete" |
| `add_threat(source, prereq, action, impact)` | Identifica una minaccia | "Attaccante", "accesso alla rete", "SQL injection", "violazione dati" |
| `add_mitigation(content)` | Aggiungi un controllo di sicurezza | "Validazione input e query parametrizzate" |
| `link_mitigation_to_threat(m_id, t_id)` | Collega controlli alle minacce | Collega mitigazioni a minacce specifiche |
| **`execute_code_validation_step()`** | **Esegui automaticamente la Fase 7.5** | **Assicura il completamento della validazione del codice** |
| **`execute_final_export_step()`** | **Esegui automaticamente la Fase 9** | **Genera tutti i file richiesti** |
### 🚀 Guida Passo-Passo
**Approccio Consigliato**: Utilizza gli strumenti di guida specifici per fase invece del piano completo:
| Fase | Strumento | Scopo |
|------|-----------|-------|
| 1 | `get_phase_1_guidance()` | Analisi del Contesto Aziendale |
| 2 | `get_phase_2_guidance()` | Analisi dell'Architettura |
| 3 | `get_phase_3_guidance()` | Analisi degli Attaccanti |
| 4 | `get_phase_4_guidance()` | Analisi dei Confini di Fiducia |
| 5 | `get_phase_5_guidance()` | Analisi dei Flussi di Asset |
| 6 | `get_phase_6_guidance()` | Identificazione delle Minacce |
| 7 | `get_phase_7_guidance()` | Pianificazione delle Mitigazioni |
| 7.5 | `execute_code_validation_step()` | Validazione del Codice (Automatica) |
| 8 | `get_phase_8_guidance()` | Analisi del Rischio Residuo |
| 9 | `execute_final_export_step()` | Esportazione Finale (Automatica) |
## Panoramica degli Strumenti
Il Threat Modeling MCP Server fornisce **oltre 100 strumenti** organizzati nelle seguenti categorie:
| Categoria | Strumenti | Descrizione |
|-----------|-----------|-------------|
| **Piano di Threat Modeling** | 1 strumento | Genera piani completi di threat modeling |
| **Gestione delle Assunzioni** | 5 strumenti | Aggiungi, elenca, ottieni, aggiorna ed elimina assunzioni |
| **Analisi del Contesto Aziendale** | 13 strumenti | Analizza il contesto aziendale e i requisiti |
| **Analisi dell'Architettura** | 13 strumenti | Documenta e analizza l'architettura del sistema |
| **Analisi degli Attaccanti** | 10 strumenti | Identifica e analizza potenziali attaccanti |
| **Analisi dei Confini di Fiducia** | 18 strumenti | Analizza zone di fiducia, confini e punti di attraversamento |
| **Rilevamento dei Confini di Fiducia** | 1 strumento | Rilevamento dei confini di fiducia basato su IA |
| **Analisi dei Flussi di Asset** | 12 strumenti | Traccia e analizza i flussi di asset attraverso il sistema |
| **Generazione delle Minacce** | 4 strumenti | Aggiungi, elenca, ottieni ed elimina minacce |
| **Gestione delle Mitigazioni** | 7 strumenti | Gestisci mitigazioni e collegale alle minacce |
| **Guida al Threat Modeling** | 3 strumenti | Guida passo-passo attraverso il processo |
| **Tipi di Modello Dati** | 2 strumenti | Esplora i tipi di modello dati disponibili |
| **Validazione della Sicurezza del Codice** | 3 strumenti | Valida i controlli di sicurezza nel codice |
| **Validazione del Modello di Minaccia** | 2 strumenti | Valida i modelli di minaccia rispetto al codice |
| **Orchestratore di Passi** | 12 strumenti | Guida specifica per fase ed esecuzione dei passi |
## Metodologia di Threat Modeling
### Framework STRIDE
Il server utilizza la metodologia STRIDE per l'identificazione sistematica delle minacce:
| Categoria | Descrizione | Esempi di Minacce |
|-----------|-------------|-------------------|
| **Spoofing** | Impersonare qualcuno o qualcos'altro | Bypass dell'autenticazione, furto d'identità |
| **Tampering** | Modificare dati o codice | Corruzione dei dati, injection di codice |
| **Repudiation** | Negare di aver eseguito un'azione | Manomissione dei log, fallimenti di non ripudio |
| **Information Disclosure** | Esporre informazioni a utenti non autorizzati | Fughe di dati, violazioni della privacy |
| **Denial of Service** | Negare o degradare un servizio | Esaurimento delle risorse, attacchi alla disponibilità |
| **Elevation of Privilege** | Ottenere capacità senza autorizzazione | Escalation dei privilegi, accesso non autorizzato |
### Processo di Threat Modeling
Il processo completo di threat modeling include queste fasi:
1. **Analisi del Contesto Aziendale**: Comprendere il valore aziendale e la criticità del sistema
2. **Analisi dell'Architettura**: Documentare l'architettura tecnica del sistema
3. **Analisi degli Attaccanti**: Identificare potenziali avversari e le loro capacità
4. **Analisi dei Confini di Fiducia**: Identificare zone di fiducia e attraversamenti dei confini
5. **Analisi dei Flussi di Asset**: Tracciare gli asset critici attraverso il sistema
6. **Identificazione delle Minacce**: Identificare sistematicamente le potenziali minacce utilizzando STRIDE
7. **Pianificazione delle Mitigazioni**: Sviluppare strategie per affrontare le minacce identificate
8. **Validazione del Codice**: Validare le minacce rispetto ai controlli di sicurezza esistenti
9. **Analisi del Rischio Residuo**: Valutare i rischi rimanenti dopo le mitigazioni
Ogni fase include obiettivi, attività e output specifici per guidare il processo di threat modeling.
### Livelli di Gravità delle Minacce
- **Critical**: Azione immediata richiesta, probabile compromissione del sistema
- **High**: Rischio significativo, da affrontare rapidamente
- **Medium**: Rischio moderato, da affrontare nel normale ciclo di sviluppo
- **Low**: Rischio minore, da affrontare quando conveniente
- **Info**: Risultato informativo, nessuna azione immediata richiesta
### Tipi di Mitigazione
- **Preventive**: Controlli che prevengono il verificarsi delle minacce
- **Detective**: Controlli che rilevano quando si verificano le minacce
- **Corrective**: Controlli che rispondono e correggono le minacce
- **Compensating**: Controlli alternativi quando i controlli primari non sono fattibili
## Assunzioni nel Threat Modeling
Le assunzioni sono dichiarazioni che accettiamo come vere senza richiedere ulteriori validazioni. Aiutano a delimitare il modello di minaccia stabilendo confini e vincoli. Esempi comuni includono:
- "Tutte le connessioni di rete nella VPC sono crittografate in transito"
- "Le chiavi AWS KMS non possono essere scoperte per forza bruta"
- "Gli attaccanti a livello statale non sono una preoccupazione per questo sistema"
Documentando le assunzioni, possiamo:
- Evitare di generare minacce inutili
- Evitare di raccomandare mitigazioni non necessarie
- Concentrarci su problemi di sicurezza rilevanti
- Documentare chiaramente l'ambito e i limiti del modello di minaccia
## Sviluppo
### Contribuire
Per contribuire a questo progetto:
1. Clona il repository
2. Installa le dipendenze di sviluppo con `uv pip install -e .`
3. Esegui il server localmente con `python run_server.py`
4. Esegui i test con `python -m pytest`
## Sicurezza
Vedi [CONTRIBUTING](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/CONTRIBUTING.md#security-issue-notifications) per maggiori informazioni.
## Licenza
Questo progetto è concesso in licenza con la Licenza Apache-2.0. Vedi il file [LICENSE](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/LICENSE) per i dettagli.