
Servidor MCP para modelagem de ameaças estruturada baseada em STRIDE com validação automática de código, análise de contexto de negócios e geração de relatórios abrangentes nos formatos Markdown e JSON.
Um servidor Model Context Protocol (MCP) para modelagem abrangente de ameaças com validação automática de código.
Este servidor fornece ferramentas para modelagem de ameaças, incluindo análise de contexto de negócios, análise de arquitetura, análise de atores de ameaças, análise de limites de confiança, análise de fluxo de ativos, validação de segurança de código e geração de relatórios abrangentes.
Este servidor MCP chama o LLM do agente existente em vez de fazer uma chamada de API externa ou de rede para um serviço diferente. Ele depende do LLM do cliente existente, que pode ser Amazon-Q, Kiro ou Cline.
Este servidor MCP de Modelagem de Ameaças tem três funcionalidades principais:
Também possui ferramentas para gerar um relatório final em formatos exportáveis Markdown e JSON.
.threatmodel, e você pode evoluir seu modelo de ameaças à medida que seu código, design e arquitetura evoluem.Nota: Antes de usar esses prompts, você deve primeiro concluir o processo de Instalação para configurar o servidor MCP.
"Threat model this project using the threat modeling MCP Server"
Ser específico no prompt para usar o servidor MCP de modelagem de ameaças garantirá que o cliente (Cline/Kiro/etc) siga as fases e metodologia exatas, em vez de tomar um atalho e introduzir alucinação nos resultados.
### Modele ameaças de um subprojeto ou reduza o escopo para uma subpasta```
"Threat model this subfolder using the threat modeling MCP Server"
Executá-lo em uma subpasta limitará o escopo do modelo de ameaça e do código a essa subpasta e salvará os resultados como um diretório .threatmodel dentro da subpasta.
"Save the threat model report"
### Validar a completude do processo de modelagem de ameaças```
"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"
### Tentativa de corrigir as ameaças```
"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"
### Mais exemplos```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"
Antes de instalar o Threat Modeling MCP Server, verifique se você possui os seguintes requisitos:
uvx a partir do Astral ou do GitHub README
uvx --versionDepois de ter o uvx instalado e verificado que está funcionando, adicione a configuração abaixo ao seu arquivo de configuração mcp.json. Dependendo do tipo de cliente que você está usando (kiro/cline/amazon-q), a localização deste mcp.json será diferente. Depois de adicionar a configuração e reiniciar sua IDE, o Threat Modeling MCP Server será instalado automaticamente diretamente deste repositório GitHub usando uvx.
Nota: As ferramentas usadas por este servidor mcp para modelagem de ameaças já estão adicionadas ao
autoApprovepara facilitar a experiência do usuário, permitindo operação contínua sem solicitações de aprovação manual para cada chamada de ferramenta. Todas as ferramentas são internas ao servidor e não fazem chamadas de API externas. Se você deseja revisar cada uma das ferramentas e aprová-las por invocação, então você precisa substituir o array autoApprove por este:"autoApprove": []
Adicione o seguinte à configuração do seu cliente MCP:
Para 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"]
}
}
}
**Para 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"
}
}
}
Para 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"]
}
}
}
### Executando com Kiro CLI
Para executar o servidor MCP via `kiro-cli` com todas as ferramentas aprovadas automaticamente:```bash
kiro-cli chat --trust-tools="@threat-modeling-mcp-server/*"
Isso confia em todas as ferramentas do servidor MCP threat-modeling-mcp-server, para que você não seja solicitado a aprovar cada chamada de ferramenta individualmente.
Este repositório inclui um agente Kiro CLI pré-configurado que fornece uma experiência guiada de modelagem de ameaças em 9 fases. A configuração do agente está em .kiro/agents/threat-modeler.json.
Instalação global (disponível a partir de qualquer diretório):```bash ./install-kiro-agent.sh
Para desinstalar: `./install-kiro-agent.sh --remove`
**Instalação local** (específica do projeto):```bash
cp -r /path/to/threat-modeling-mcp-server/.kiro /path/to/your-project/.kiro
Uso:```bash
kiro-cli chat --agent threat-modeler --no-interactive "Threat model this project"
kiro-cli chat --agent threat-modeler
**O que o agente inclui**:
- **Prompt do sistema** (`.kiro/prompts/threat-modeler.md`): Instruções detalhadas para a metodologia STRIDE de 9 fases
- **Habilidades** (`.kiro/skills/`): Materiais de referência por fase para cada uma das 9 fases de modelagem de ameaças
- **Ferramentas MCP aprovadas automaticamente**: Todas as ferramentas de modelagem de ameaças são executadas sem solicitações de aprovação manual
## Gerenciamento de Arquivos de Saída
Todos os arquivos de saída gerados pelo servidor de modelagem de ameaças são salvos automaticamente em um diretório `.threatmodel` na raiz do seu projeto. Isso inclui:
- Modelos de ameaças exportados (formato JSON)
- Relatórios de validação
- Resultados de análise
O diretório `.threatmodel` é criado automaticamente quando necessário.
## Referência Rápida
### Ferramentas Essenciais para Começar
| Ferramenta | Propósito | Exemplo |
|------|---------|---------|
| `get_threat_modeling_plan()` | Obter plano abrangente | Comece aqui para uma visão geral |
| **`get_phase_1_guidance()`** | **Obter orientação focada da Fase 1** | **Ponto de partida recomendado** |
| `get_current_phase_status()` | Verificar progresso | Acompanhar status de conclusão |
| `set_business_context(desc)` | Definir contexto do sistema | "Sistema de pagamento de e-commerce" |
| `add_component(name, type)` | Adicionar componente de arquitetura | "API Gateway", "Rede" |
| `add_threat(source, prereq, action, impact)` | Identificar ameaça | "Atacante", "acesso à rede", "injeção SQL", "violação de dados" |
| `add_mitigation(content)` | Adicionar controle de segurança | "Validação de entrada e consultas parametrizadas" |
| `link_mitigation_to_threat(m_id, t_id)` | Vincular controles a ameaças | Conectar mitigações a ameaças específicas |
| **`execute_code_validation_step()`** | **Executar automaticamente a Fase 7.5** | **Garante a conclusão da validação de código** |
| **`execute_final_export_step()`** | **Executar automaticamente a Fase 9** | **Gera todos os arquivos necessários** |
### 🚀 Orientação Passo a Passo
**Abordagem Recomendada**: Use ferramentas de orientação específicas de fase em vez do plano abrangente:
| Fase | Ferramenta | Propósito |
|-------|------|---------|
| 1 | `get_phase_1_guidance()` | Análise de Contexto de Negócios |
| 2 | `get_phase_2_guidance()` | Análise de Arquitetura |
| 3 | `get_phase_3_guidance()` | Análise de Ator de Ameaça |
| 4 | `get_phase_4_guidance()` | Análise de Limite de Confiança |
| 5 | `get_phase_5_guidance()` | Análise de Fluxo de Ativos |
| 6 | `get_phase_6_guidance()` | Identificação de Ameaças |
| 7 | `get_phase_7_guidance()` | Planejamento de Mitigação |
| 7.5 | `execute_code_validation_step()` | Validação de Código (Auto) |
| 8 | `get_phase_8_guidance()` | Análise de Risco Residual |
| 9 | `execute_final_export_step()` | Exportação Final (Auto) |
## Visão Geral das Ferramentas
O Servidor MCP de Modelagem de Ameaças fornece **mais de 100 ferramentas** organizadas nas seguintes categorias:
| Categoria | Ferramentas | Descrição |
|----------|-------|-------------|
| **Plano de Modelagem de Ameaças** | 1 ferramenta | Gerar planos abrangentes de modelagem de ameaças |
| **Gerenciamento de Suposições** | 5 ferramentas | Adicionar, listar, obter, atualizar e excluir suposições |
| **Análise de Contexto de Negócios** | 13 ferramentas | Analisar contexto e requisitos de negócios |
| **Análise de Arquitetura** | 13 ferramentas | Documentar e analisar a arquitetura do sistema |
| **Análise de Ator de Ameaça** | 10 ferramentas | Identificar e analisar potenciais atores de ameaça |
| **Análise de Limite de Confiança** | 18 ferramentas | Analisar zonas de confiança, limites e pontos de cruzamento |
| **Detecção de Limite de Confiança** | 1 ferramenta | Detecção de limites de confiança baseada em IA |
| **Análise de Fluxo de Ativos** | 12 ferramentas | Rastrear e analisar fluxos de ativos através do sistema |
| **Geração de Ameaças** | 4 ferramentas | Adicionar, listar, obter e excluir ameaças |
| **Gerenciamento de Mitigações** | 7 ferramentas | Gerenciar mitigações e vinculá-las a ameaças |
| **Guia de Modelo de Ameaças** | 3 ferramentas | Orientação passo a passo através do processo |
| **Tipos de Modelo de Dados** | 2 ferramentas | Explorar tipos de modelo de dados disponíveis |
| **Validação de Segurança de Código** | 3 ferramentas | Validar controles de segurança no código |
| **Validação de Modelo de Ameaças** | 2 ferramentas | Validar modelos de ameaças em relação ao código |
| **Orquestrador de Etapas** | 12 ferramentas | Orientação específica de fase e execução de etapas |
## Metodologia de Modelagem de Ameaças
### Framework STRIDE
O servidor utiliza a metodologia STRIDE para identificação sistemática de ameaças:
| Categoria | Descrição | Exemplos de Ameaças |
|----------|-------------|-----------------|
| **Spoofing** | Fingir ser alguém ou algo | Bypass de autenticação, roubo de identidade |
| **Adulteração** | Modificar dados ou código | Corrupção de dados, injeção de código |
| **Repúdio** | Alegar não ter realizado uma ação | Adulteração de logs, falhas de não repúdio |
| **Divulgação de Informações** | Expor informações a usuários não autorizados | Vazamentos de dados, violações de privacidade |
| **Negação de Serviço** | Negar ou degradar o serviço | Exaustão de recursos, ataques de disponibilidade |
| **Elevação de Privilégio** | Obter capacidades sem autorização | Escalonamento de privilégio, acesso não autorizado |
### Processo de Modelagem de Ameaças
O processo abrangente de modelagem de ameaças inclui estas fases:
1. **Análise de Contexto de Negócios**: Entender o valor de negócio e a criticidade do sistema
2. **Análise de Arquitetura**: Documentar a arquitetura técnica do sistema
3. **Análise de Atores de Ameaça**: Identificar potenciais adversários e suas capacidades
4. **Análise de Limites de Confiança**: Identificar zonas de confiança e cruzamentos de limites
5. **Análise de Fluxo de Ativos**: Rastrear ativos críticos através do sistema
6. **Identificação de Ameaças**: Identificar sistematicamente ameaças potenciais usando STRIDE
7. **Planejamento de Mitigação**: Desenvolver estratégias para lidar com ameaças identificadas
8. **Validação de Código**: Validar ameaças contra controles de segurança existentes
9. **Análise de Risco Residual**: Avaliar riscos restantes após mitigações
Cada fase inclui objetivos, atividades e saídas específicas para orientar o processo de modelagem de ameaças.
### Níveis de Severidade de Ameaças
- **Crítico**: Ação imediata necessária, comprometimento do sistema provável
- **Alto**: Risco significativo, deve ser tratado rapidamente
- **Médio**: Risco moderado, trate no ciclo normal de desenvolvimento
- **Baixo**: Risco menor, trate quando conveniente
- **Info**: Achado informacional, nenhuma ação imediata necessária
### Tipos de Mitigação
- **Preventiva**: Controles que impedem a ocorrência de ameaças
- **Detetive**: Controles que detectam quando ameaças ocorrem
- **Corretiva**: Controles que respondem e corrigem ameaças
- **Compensatória**: Controles alternativos quando os controles primários não são viáveis
## Suposições na Modelagem de Ameaças
Suposições são declarações que aceitamos como verdadeiras sem exigir validação adicional. Elas ajudam a delimitar o modelo de ameaças estabelecendo limites e restrições. Exemplos comuns incluem:
- "Todas as conexões de rede na VPC são criptografadas em trânsito"
- "Chaves AWS KMS não podem ser descobertas por força bruta"
- "Atores de ameaça de estados-nação não são uma preocupação para este sistema"
Ao documentar suposições, podemos:
- Evitar gerar ameaças sem sentido
- Evitar recomendar mitigações desnecessárias
- Focar em questões de segurança relevantes
- Documentar claramente o escopo e as limitações do modelo de ameaças
## Desenvolvimento
### Contribuindo
Para contribuir com este projeto:
1. Clone o repositório
2. Instale as dependências de desenvolvimento com `uv pip install -e .`
3. Execute o servidor localmente com `python run_server.py`
4. Execute os testes com `python -m pytest`
## Segurança
Veja [CONTRIBUTING](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/CONTRIBUTING.md#security-issue-notifications) para mais informações.
## Licença
Este projeto está licenciado sob a Licença Apache-2.0. Veja o arquivo [LICENSE](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/LICENSE) para detalhes.