
MCP-Server für strukturierte STRIDE-basierte Bedrohungsmodellierung mit automatischer Code-Validierung, Geschäftskontextanalyse und umfassender Berichterstellung in den Formaten Markdown und JSON.
Ein Model Context Protocol (MCP) Server für umfassende Bedrohungsmodellierung mit automatischer Code-Validierung.
Dieser Server stellt Werkzeuge für die Bedrohungsmodellierung bereit, darunter Analyse des Geschäftskontexts, Architekturanalyse, Analyse von Bedrohungsakteuren, Vertrauensgrenzenanalyse, Analyse des Asset-Flows, Sicherheitsüberprüfung von Code und Erstellung umfassender Berichte.
Dieser MCP Server ruft das vorhandene LLM des Agents auf, anstatt einen externen API- oder Netzwerkaufruf an einen anderen Dienst zu tätigen. Es verlässt sich auf das bestehende LLM des Clients, bei dem es sich um Amazon-Q, Kiro oder Cline handeln könnte.
Dieser Threat Modeling MCP Server hat drei Hauptfunktionen:
Es enthält auch Werkzeuge, um einen endgültigen Bericht sowohl in Markdown- als auch in JSON-Exportformaten zu erstellen.
.threatmodel, und Sie können Ihr Bedrohungsmodell weiterentwickeln, während sich Ihr Code, Design und Ihre Architektur weiterentwickeln.Hinweis: Bevor Sie diese Prompts verwenden, müssen Sie zuerst den Installations-Prozess abschließen, um den MCP Server einzurichten.
"Threat model this project using the threat modeling MCP Server"
Die Spezifikation in der Eingabeaufforderung, den Threat Modeling MCP Server zu verwenden, stellt sicher, dass der Client (Cline/Kiro/etc) die genauen Phasen und Methoden befolgt, anstatt Abkürzungen zu nehmen und Halluzinationen in den Ergebnissen einzuführen.
### Threat model für ein Unterprojekt oder den Umfang auf einen Unterordner reduzieren```
"Threat model this subfolder using the threat modeling MCP Server"
Wenn es in einem Unterordner ausgeführt wird, wird der Umfang des Bedrohungsmodells und des Codes auf diesen Unterordner beschränkt und die Ergebnisse als .threatmodel-Verzeichnis innerhalb des Unterordners gespeichert.
"Save the threat model report"
### Validieren Sie die Vollständigkeit des Bedrohungsmodellierungsprozesses```
"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"
### Versuch, die Bedrohungen zu beheben```
"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"
### Weitere Beispiele```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"
Bevor Sie den Threat Modeling MCP Server installieren, stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllen:
uvx von Astral oder der GitHub README
uvx --versionSobald uvx installiert und funktionsfähig ist, fügen Sie die folgende Konfiguration zu Ihrer mcp.json-Konfigurationsdatei hinzu. Abhängig davon, welchen Client-Typ Sie verwenden (kiro/cline/amazon-q), unterscheidet sich der Speicherort dieser mcp.json. Sobald Sie die Konfiguration hinzugefügt und Ihre IDE neu gestartet haben, wird der Threat Modeling MCP Server automatisch direkt aus diesem GitHub-Repository mit uvx installiert.
Hinweis: Die von diesem MCP-Server für die Bedrohungsmodellierung verwendeten Werkzeuge wurden bereits zur
autoApprove-Liste hinzugefügt, um die Benutzerfreundlichkeit zu verbessern und einen nahtlosen Betrieb ohne manuelle Genehmigungsaufforderungen für jeden Werkzeugaufruf zu ermöglichen. Alle Werkzeuge sind intern im Server und tätigen keine externen API-Aufrufe. Wenn Sie jedes Werkzeug überprüfen und pro Aufruf genehmigen möchten, müssen Sie das autoApprove-Array durch Folgendes ersetzen:"autoApprove": []
Fügen Sie Folgendes zu Ihrer MCP-Client-Konfiguration hinzu:
Für 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"]
}
}
}
**Für 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"
}
}
}
Für 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"]
}
}
}
### Ausführen mit Kiro CLI
Um den MCP-Server über `kiro-cli` mit allen automatisch genehmigten Tools auszuführen:```bash
kiro-cli chat --trust-tools="@threat-modeling-mcp-server/*"
This vertraut allen Tools des threat-modeling-mcp-server MCP servers, sodass Sie nicht aufgefordert werden, jeden Tool-Aufruf einzeln zu genehmigen.
Dieses Repository enthält einen vorkonfigurierten Kiro CLI Agent, der eine geführte, 9-phasige Threat Modeling Experience bietet. Die Agentenkonfiguration befindet sich in .kiro/agents/threat-modeler.json.
Globale Installation (von jedem Verzeichnis aus verfügbar):```bash ./install-kiro-agent.sh
Zum Deinstallieren: `./install-kiro-agent.sh --remove`
**Lokale Installation** (projektspezifisch):```bash
cp -r /path/to/threat-modeling-mcp-server/.kiro /path/to/your-project/.kiro
Nutzung:```bash
kiro-cli chat --agent threat-modeler --no-interactive "Threat model this project"
kiro-cli chat --agent threat-modeler
**Was der Agent enthält**:
- **System-Prompt** (`.kiro/prompts/threat-modeler.md`): Detaillierte Anweisungen für die 9-Phasen-STRIDE-Methodik
- **Fähigkeiten** (`.kiro/skills/`): Referenzmaterialien pro Phase für jede der 9 Threat-Modeling-Phasen
- **Automatisch genehmigte MCP-Tools**: Alle Threat-Modeling-Tools werden ohne manuelle Genehmigungsaufforderungen ausgeführt
## Verwaltung der Ausgabedateien
Alle Ausgabedateien, die vom Threat-Modeling-Server generiert werden, werden automatisch in einem `.threatmodel`-Verzeichnis im Stammverzeichnis Ihres Projekts gespeichert. Dies umfasst:
- Exportierte Bedrohungsmodelle (JSON-Format)
- Validierungsberichte
- Analyseergebnisse
Das `.threatmodel`-Verzeichnis wird bei Bedarf automatisch erstellt.
## Kurzübersicht
### Wesentliche Tools für den Einstieg
| Tool | Zweck | Beispiel |
|------|-------|----------|
| `get_threat_modeling_plan()` | Umfassenden Plan abrufen | Hier starten für eine Übersicht |
| **`get_phase_1_guidance()`** | **Fokussierte Phase-1-Anleitung abrufen** | **Empfohlener Startpunkt** |
| `get_current_phase_status()` | Fortschritt prüfen | Abschlussstatus verfolgen |
| `set_business_context(desc)` | Systemkontext definieren | „E-Commerce-Zahlungssystem” |
| `add_component(name, type)` | Architekturkomponente hinzufügen | „API-Gateway”, „Netzwerk” |
| `add_threat(source, prereq, action, impact)` | Bedrohung identifizieren | „Angreifer”, „Netzwerkzugang”, „SQL-Injection”, „Datenpanne” |
| `add_mitigation(content)` | Sicherheitsmaßnahme hinzufügen | „Eingabevalidierung und parametrisierte Abfragen” |
| `link_mitigation_to_threat(m_id, t_id)` | Maßnahmen mit Bedrohungen verknüpfen | Maßnahmen mit spezifischen Bedrohungen verbinden |
| **`execute_code_validation_step()`** | **Phase 7.5 automatisch ausführen** | **Stellt den Abschluss der Code-Validierung sicher** |
| **`execute_final_export_step()`** | **Phase 9 automatisch ausführen** | **Generiert alle erforderlichen Dateien** |
### 🚀 Schritt-für-Schritt-Anleitung
**Empfohlener Ansatz**: Verwenden Sie phasenspezifische Anleitungstools anstelle des umfassenden Plans:
| Phase | Tool | Zweck |
|-------|------|-------|
| 1 | `get_phase_1_guidance()` | Geschäftskontextanalyse |
| 2 | `get_phase_2_guidance()` | Architekturanalyse |
| 3 | `get_phase_3_guidance()` | Bedrohungsakteursanalyse |
| 4 | `get_phase_4_guidance()` | Vertrauensgrenzenanalyse |
| 5 | `get_phase_5_guidance()` | Asset-Fluss-Analyse |
| 6 | `get_phase_6_guidance()` | Bedrohungsidentifikation |
| 7 | `get_phase_7_guidance()` | Maßnahmenplanung |
| 7.5 | `execute_code_validation_step()` | Code-Validierung (Auto) |
| 8 | `get_phase_8_guidance()` | Restrisikoanalyse |
| 9 | `execute_final_export_step()` | Finaler Export (Auto) |
## Übersicht der Tools
Der Threat Modeling MCP Server bietet **100+ Tools**, die in die folgenden Kategorien unterteilt sind:
| Kategorie | Tools | Beschreibung |
|-----------|-------|--------------|
| **Threat Modeling Plan** | 1 Tool | Umfassende Threat-Modeling-Pläne generieren |
| **Annahmenverwaltung** | 5 Tools | Annahmen hinzufügen, auflisten, abrufen, aktualisieren und löschen |
| **Geschäftskontextanalyse** | 13 Tools | Geschäftskontext und -anforderungen analysieren |
| **Architekturanalyse** | 13 Tools | Systemarchitektur dokumentieren und analysieren |
| **Bedrohungsakteursanalyse** | 10 Tools | Potenzielle Bedrohungsakteure identifizieren und analysieren |
| **Vertrauensgrenzenanalyse** | 18 Tools | Vertrauenszonen, -grenzen und -übergänge analysieren |
| **Vertrauensgrenzenerkennung** | 1 Tool | KI-gestützte Erkennung von Vertrauensgrenzen |
| **Asset-Fluss-Analyse** | 12 Tools | Asset-Flüsse durch das System verfolgen und analysieren |
| **Bedrohungsgenerierung** | 4 Tools | Bedrohungen hinzufügen, auflisten, abrufen und löschen |
| **Maßnahmenverwaltung** | 7 Tools | Maßnahmen verwalten und mit Bedrohungen verknüpfen |
| **Threat Model Guide** | 3 Tools | Schritt-für-Schritt-Anleitung durch den Prozess |
| **Datenmodelltypen** | 2 Tools | Verfügbare Datenmodelltypen erkunden |
| **Codesicherheitsvalidierung** | 3 Tools | Sicherheitsmaßnahmen im Code validieren |
| **Threat Model Validierung** | 2 Tools | Bedrohungsmodelle am Code validieren |
| **Schritt-Orchestrator** | 12 Tools | Phasenspezifische Anleitung und Schrittausführung |
## Threat-Modeling-Methodik
### STRIDE-Framework
Der Server verwendet die STRIDE-Methodik zur systematischen Bedrohungsidentifikation:
| Kategorie | Beschreibung | Beispiele für Bedrohungen |
|-----------|--------------|---------------------------|
| **Spoofing** | Sich als jemand oder etwas anderes ausgeben | Authentifizierungsumgehung, Identitätsdiebstahl |
| **Tampering** | Ändern von Daten oder Code | Datenkorruption, Code-Injection |
| **Repudiation** | Behaupten, eine Aktion nicht ausgeführt zu haben | Log-Manipulation, Ausfall der Nichtabstreitbarkeit |
| **Information Disclosure** | Preisgabe von Informationen an Unbefugte | Datenlecks, Datenschutzverletzungen |
| **Denial of Service** | Verweigerung oder Beeinträchtigung des Dienstes | Ressourcenerschöpfung, Verfügbarkeitsangriffe |
| **Elevation of Privilege** | Erlangen von Fähigkeiten ohne Autorisierung | Privilegieneskalation, unbefugter Zugriff |
### Threat-Modeling-Prozess
Der umfassende Threat-Modeling-Prozess umfasst die folgenden Phasen:
1. **Geschäftskontextanalyse**: Verstehen des Geschäftswerts und der Kritikalität des Systems
2. **Architekturanalyse**: Dokumentieren der technischen Architektur des Systems
3. **Bedrohungsakteursanalyse**: Identifizieren potenzieller Gegner und ihrer Fähigkeiten
4. **Vertrauensgrenzenanalyse**: Identifizieren von Vertrauenszonen und Grenzübergängen
5. **Asset-Fluss-Analyse**: Verfolgen kritischer Assets durch das System
6. **Bedrohungsidentifikation**: Systematisches Identifizieren potenzieller Bedrohungen mit STRIDE
7. **Maßnahmenplanung**: Entwickeln von Strategien zur Bewältigung identifizierter Bedrohungen
8. **Code-Validierung**: Validieren von Bedrohungen gegen bestehende Sicherheitsmaßnahmen
9. **Restrisikoanalyse**: Bewerten verbleibender Risiken nach Maßnahmen
Jede Phase umfasst spezifische Ziele, Aktivitäten und Ausgaben, um den Threat-Modeling-Prozess zu leiten.
### Bedrohungsschweregrade
- **Kritisch**: Sofortiges Handeln erforderlich, Systemkompromittierung wahrscheinlich
- **Hoch**: Erhebliches Risiko, sollte schnell behoben werden
- **Mittel**: Mäßiges Risiko, im normalen Entwicklungszyklus behandeln
- **Niedrig**: Geringes Risiko, behandeln, wenn es passt
- **Info**: Informationsfund, kein sofortiges Handeln erforderlich
### Maßnahmentypen
- **Präventiv**: Maßnahmen, die das Eintreten von Bedrohungen verhindern
- **Detektiv**: Maßnahmen, die erkennen, wenn Bedrohungen eintreten
- **Korrektiv**: Maßnahmen, die auf Bedrohungen reagieren und sie korrigieren
- **Kompensierend**: Alternative Maßnahmen, wenn primäre Maßnahmen nicht umsetzbar sind
## Annahmen im Threat Modeling
Annahmen sind Aussagen, die wir ohne weitere Validierung als wahr akzeptieren. Sie helfen, das Bedrohungsmodell abzugrenzen, indem sie Grenzen und Einschränkungen festlegen. Häufige Beispiele sind:
- „Alle Netzwerkverbindungen im VPC werden während der Übertragung verschlüsselt”
- „AWS-KMS-Schlüssel können nicht durch Brute-Force ermittelt werden”
- „Staatliche Bedrohungsakteure sind für dieses System nicht relevant”
Durch die Dokumentation von Annahmen können wir:
- Sinnlose Bedrohungen vermeiden
- Unnötige Maßnahmen vermeiden
- Uns auf relevante Sicherheitsbedenken konzentrieren
- Den Umfang und die Grenzen des Bedrohungsmodells klar dokumentieren
## Entwicklung
### Mitwirken
Um zu diesem Projekt beizutragen:
1. Klonen Sie das Repository
2. Installieren Sie die Entwicklungsabhängigkeiten mit `uv pip install -e .`
3. Führen Sie den Server lokal mit `python run_server.py` aus
4. Führen Sie Tests mit `python -m pytest` aus
## Sicherheit
Siehe [CONTRIBUTING](https://github.com/awslabs/threat-modeling-mcp-server/blob/main/CONTRIBUTING.md#security-issue-notifications) für weitere Informationen.
## Lizenz
Dieses Projekt ist unter der Apache-2.0-Lizenz lizenziert. Siehe die Datei [LICENSE](https://github.com/awslabs/threat-modeling-mcp-server/blob/main/LICENSE) für Details.