
構造化されたSTRIDEベースの脅威モデリングのためのMCPサーバー。自動コード検証、ビジネスコンテキスト分析、MarkdownおよびJSON形式での包括的レポート生成を備えています。
包括的な脅威モデリングと自動コード検証のためのModel Context Protocol (MCP)サーバー。
このサーバーは、ビジネスコンテキスト分析、アーキテクチャ分析、脅威アクター分析、信頼境界分析、資産フロー分析、コードセキュリティ検証、包括的なレポート生成など、脅威モデリングのためのツールを提供します。
このMCPサーバーは、外部APIやネットワークコールを別のサービスに行う代わりに、既存のエージェントのLLMを呼び出します。これは、Amazon-Q、Kiro、Clineなどの既存のクライアントのLLMに依存します。
この脅威モデリングMCPサーバーには、主に3つの機能があります:
また、MarkdownとJSONのエクスポート可能な形式で最終レポートを生成するツールも備えています。
.threatmodelディレクトリに保存し、コード、設計、アーキテクチャの進化に合わせて脅威モデルを発展させることができます。注: これらのプロンプトを使用する前に、まずインストールプロセスを完了してMCPサーバーをセットアップする必要があります。
"Threat model this project using the threat modeling MCP Server"
プロンプトで脅威モデリングMCP Serverを使用するように具体的に指示することで、クライアント(Cline/Kiroなど)が正確なフェーズと方法論に従い、近道を取ったり結果に幻覚(ハルシネーション)を導入したりすることを防ぎます。
### サブプロジェクトの脅威モデリング、またはスコープをサブフォルダに縮小する```
"Threat model this subfolder using the threat modeling MCP Server"
サブフォルダ上で実行すると、脅威モデルとコードの範囲がそのサブフォルダに限定され、結果はサブフォルダ内の.threatmodelディレクトリとして保存されます。
"Save the threat model report"
### 脅威モデリングプロセスの網羅性を検証する```
"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"
### 脅威の修復を試みる```
"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"
### その他の例```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"
Threat Modeling MCP Serverをインストールする前に、次の要件を満たしていることを確認してください。
uvx をインストールします
uvx --versionuvxをインストールし、動作確認ができたら、以下の設定をmcp.json設定ファイルに追加します。使用しているクライアントの種類(kiro/cline/amazon-q)によって、このmcp.jsonの場所は異なります。設定を追加してIDEを再起動すると、Threat Modeling MCP ServerはこのGitHubリポジトリからuvxを使用して自動的にインストールされます。
注意: このMCPサーバーが脅威モデリングに使用するツールは、ユーザーエクスペリエンスを容易にするために既に
autoApproveに追加されています。これにより、各ツール呼び出しごとに手動承認プロンプトを表示せずにシームレスな操作が可能になります。すべてのツールはサーバー内部にあり、外部API呼び出しは行いません。各ツールを確認し、呼び出しごとに承認したい場合は、autoApprove配列を次のように置き換える必要があります:"autoApprove": []
以下をMCPクライアント設定に追加します:
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"]
}
}
}
**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"
}
}
}
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"]
}
}
}
### Kiro CLI での実行
`kiro-cli` を介してすべてのツールが自動承認された状態で MCP サーバーを実行するには:```bash
kiro-cli chat --trust-tools="@threat-modeling-mcp-server/*"
これにより、threat-modeling-mcp-server MCPサーバーのすべてのツールが信頼されるため、個々のツール呼び出しのたびに承認を求められることはありません。
このリポジトリには、ガイド付きの9フェーズの脅威モデリング体験を提供する、事前構成済みのKiro CLIエージェントが含まれています。エージェント設定は.kiro/agents/threat-modeler.jsonにあります。
グローバルインストール (任意のディレクトリから利用可能):```bash ./install-kiro-agent.sh
アンインストールするには: `./install-kiro-agent.sh --remove`
**ローカルインストール** (プロジェクト固有):```bash
cp -r /path/to/threat-modeling-mcp-server/.kiro /path/to/your-project/.kiro
使用方法:```bash
kiro-cli chat --agent threat-modeler --no-interactive "Threat model this project"
kiro-cli chat --agent threat-modeler
**エージェントに含まれるもの**:
- **システムプロンプト** (`.kiro/prompts/threat-modeler.md`): 9フェーズのSTRIDE手法に関する詳細な指示
- **スキル** (`.kiro/skills/`): 9つの脅威モデリングフェーズごとのフェーズ別参考資料
- **自動承認済みMCPツール**: すべての脅威モデリングツールが手動承認プロンプトなしで実行されます
## 出力ファイル管理
脅威モデリングサーバーによって生成されたすべての出力ファイルは、プロジェクトルートの `.threatmodel` ディレクトリに自動的に保存されます。これには以下が含まれます:
- エクスポートされた脅威モデル(JSON形式)
- 検証レポート
- 分析結果
`.threatmodel` ディレクトリは必要に応じて自動的に作成されます。
## クイックリファレンス
### はじめに必要な基本ツール
| ツール | 目的 | 例 |
|------|---------|---------|
| `get_threat_modeling_plan()` | 包括的な計画を取得 | 概要はこちらから開始 |
| **`get_phase_1_guidance()`** | **フェーズ1の集中的なガイダンスを取得** | **推奨される開始点** |
| `get_current_phase_status()` | 進捗を確認 | 完了ステータスを追跡 |
| `set_business_context(desc)` | システムコンテキストを定義 | 「Eコマース決済システム」 |
| `add_component(name, type)` | アーキテクチャコンポーネントを追加 | 「APIゲートウェイ」、「ネットワーク」 |
| `add_threat(source, prereq, action, impact)` | 脅威を特定 | 「攻撃者」、「ネットワークアクセス」、「SQLインジェクション」、「データ漏洩」 |
| `add_mitigation(content)` | セキュリティコントロールを追加 | 「入力検証とパラメータ化クエリ」 |
| `link_mitigation_to_threat(m_id, t_id)` | コントロールを脅威にリンク | 緩和策を特定の脅威に接続 |
| **`execute_code_validation_step()`** | **フェーズ7.5を自動実行** | **コード検証の完了を保証** |
| **`execute_final_export_step()`** | **フェーズ9を自動実行** | **必要なすべてのファイルを生成** |
### 🚀 ステップバイステップガイダンス
**推奨アプローチ**: 包括的な計画の代わりにフェーズ固有のガイダンスツールを使用してください:
| フェーズ | ツール | 目的 |
|-------|------|---------|
| 1 | `get_phase_1_guidance()` | ビジネスコンテキスト分析 |
| 2 | `get_phase_2_guidance()` | アーキテクチャ分析 |
| 3 | `get_phase_3_guidance()` | 脅威アクター分析 |
| 4 | `get_phase_4_guidance()` | 信頼境界分析 |
| 5 | `get_phase_5_guidance()` | アセットフロー分析 |
| 6 | `get_phase_6_guidance()` | 脅威の特定 |
| 7 | `get_phase_7_guidance()` | 緩和計画 |
| 7.5 | `execute_code_validation_step()` | コード検証(自動) |
| 8 | `get_phase_8_guidance()` | 残留リスク分析 |
| 9 | `execute_final_export_step()` | 最終エクスポート(自動) |
## ツール概要
Threat Modeling MCP Serverは、以下のカテゴリに分類された**100以上のツール**を提供します:
| カテゴリ | ツール数 | 説明 |
|----------|-------|-------------|
| **脅威モデリング計画** | 1ツール | 包括的な脅威モデリング計画を生成 |
| **前提条件管理** | 5ツール | 前提条件の追加、一覧表示、取得、更新、削除 |
| **ビジネスコンテキスト分析** | 13ツール | ビジネスコンテキストと要件を分析 |
| **アーキテクチャ分析** | 13ツール | システムアーキテクチャを文書化・分析 |
| **脅威アクター分析** | 10ツール | 潜在的な脅威アクターを特定・分析 |
| **信頼境界分析** | 18ツール | 信頼ゾーン、境界、交差ポイントを分析 |
| **信頼境界検出** | 1ツール | AIを活用した信頼境界検出 |
| **アセットフロー分析** | 12ツール | システム内のアセットフローを追跡・分析 |
| **脅威生成** | 4ツール | 脅威の追加、一覧表示、取得、削除 |
| **緩和策管理** | 7ツール | 緩和策を管理し、脅威にリンク |
| **脅威モデルガイド** | 3ツール | プロセスを通じたステップバイステップのガイダンス |
| **データモデルタイプ** | 2ツール | 利用可能なデータモデルタイプを探索 |
| **コードセキュリティ検証** | 3ツール | コード内のセキュリティコントロールを検証 |
| **脅威モデル検証** | 2ツール | 脅威モデルをコードに対して検証 |
| **ステップオーケストレーター** | 12ツール | フェーズ固有のガイダンスとステップ実行 |
## 脅威モデリング手法
### STRIDEフレームワーク
サーバーは体系的な脅威特定にSTRIDE手法を使用します:
| カテゴリ | 説明 | 脅威の例 |
|----------|-------------|-----------------|
| **スプーフィング** | 誰かまたは何かになりすます | 認証バイパス、なりすまし |
| **改ざん** | データまたはコードを変更する | データ破損、コードインジェクション |
| **否認** | アクションを実行していないと主張する | ログ改ざん、否認防止の失敗 |
| **情報漏洩** | 権限のないユーザーへの情報公開 | データ漏洩、プライバシー侵害 |
| **サービス拒否** | サービスを拒否または低下させる | リソース枯渇、可用性攻撃 |
| **権限昇格** | 許可なく機能を獲得する | 権限昇格、不正アクセス |
### 脅威モデリングプロセス
包括的な脅威モデリングプロセスには以下のフェーズが含まれます:
1. **ビジネスコンテキスト分析**: システムのビジネス価値と重要度を理解する
2. **アーキテクチャ分析**: システムの技術アーキテクチャを文書化する
3. **脅威アクター分析**: 潜在的な敵対者とその能力を特定する
4. **信頼境界分析**: 信頼ゾーンと境界の交差を特定する
5. **アセットフロー分析**: システム内の重要なアセットを追跡する
6. **脅威の特定**: STRIDEを使用して潜在的な脅威を体系的に特定する
7. **緩和計画**: 特定された脅威に対処する戦略を策定する
8. **コード検証**: 既存のセキュリティコントロールに対して脅威を検証する
9. **残留リスク分析**: 緩和後の残存リスクを評価する
各フェーズには、脅威モデリングプロセスを導くための具体的な目的、アクティビティ、および成果物が含まれます。
### 脅威の深刻度レベル
- **クリティカル**: 即時対応が必要、システム侵害の可能性が高い
- **高**: 重大なリスク、迅速に対処すべき
- **中**: 中程度のリスク、通常の開発サイクルで対処
- **低**: 軽微なリスク、都合の良いときに対処
- **情報**: 情報提供、即時対応は不要
### 緩和策の種類
- **予防**: 脅威の発生を防ぐコントロール
- **検出**: 脅威の発生を検出するコントロール
- **是正**: 脅威に対応し修正するコントロール
- **補完**: 主要なコントロールが実現不可能な場合の代替コントロール
## 脅威モデリングにおける前提条件
前提条件とは、さらなる検証を必要とせずに真実として受け入れるステートメントです。これらは、境界と制約を確立することで脅威モデルの範囲を設定するのに役立ちます。一般的な例は次のとおりです:
- 「VPC内のすべてのネットワーク接続は転送中に暗号化されている」
- 「AWS KMSキーはブルートフォースで発見できない」
- 「国家レベルの脅威アクターはこのシステムにとって懸念事項ではない」
前提条件を文書化することで、以下が可能になります:
- 無意味な脅威の生成を防ぐ
- 不必要な緩和策の推奨を避ける
- 関連するセキュリティ懸念に集中する
- 脅威モデルの範囲と制限を明確に文書化する
## 開発
### 貢献
このプロジェクトに貢献するには:
1. リポジトリをクローンします
2. `uv pip install -e .` で開発依存関係をインストールします
3. `python run_server.py` でサーバーをローカルで実行します
4. `python -m pytest` でテストを実行します
## セキュリティ
詳細については、[CONTRIBUTING](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/CONTRIBUTING.md#security-issue-notifications) を参照してください。
## ライセンス
このプロジェクトはApache-2.0ライセンスの下でライセンスされています。詳細は [LICENSE](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/LICENSE) ファイルを参照してください。