背景・目的
以前、awsdacを使用して CloudFormation(Cfn) テンプレートからAWSのアーキテクチャ図を生成しました。
今回は、Amazon Q Developer(Q Dev) CLIとaws-diagram-mcp-serverを組み合わせて図を生成してみます。
概要
AWS Diagram MCP Server
下記を基に概要を整理します。
- PythonダイアグラムパッケージDSLを使用してシームレスにダイアグラムを作成する
- Pythonコードを使用してAWSダイアグラム、シーケンスダイアグラム、フローダイアグラム、クラスダイアグラムを生成できる
Features
- Generate Diagrams
- Python コードを使用してプロフェッショナルな図を作成する
- Multiple Diagram Types
- AWS アーキテクチャ、シーケンス図、フローチャート、クラス図などのサポート
- Customization
- 図の外観、レイアウト、スタイルをカスタマイズする
- Security
- 安全なダイアグラム生成を保証するコードスキャン
Graphviz
What is Graphviz?
- Graphvizはオープンソースのグラフ可視化ソフトウェア
- グラフ可視化とは、構造情報を抽象的なグラフやネットワークの図として表現する方法
- 以下のような分野において用途がある
- ネットワーク
- バイオインフォマティクス
- ソフトウェアエンジニアリング
- データベース
- Webデザイン
- 機械学習
Features
- Graphvizレイアウトプログラムは、シンプルなテキスト言語で記述されたグラフの記述を受け取る
- 下記のような便利な形式でのダイアグラムを作成する
- Webページ用の画像
- SVG
- 他のドキュメントに組み込むためのPDFやPostscript
- インタラクティブなグラフブラウザでの表示など
- Graphvizには、下記のようなダイアグラム作成に役立つ機能が多数用意されている
- 色
- フォント
- 表形式のノードレイアウト
- 線のスタイル
- ハイパーリンク
- カスタムシェイプなどのオプションなど
実践
事前準備
下記を事前にインストールします
- uv
- Python 3.10(以上)
- GraphViz
-
uv を確認します
% uv -V uv 0.8.23 (00d3aa378 2025-10-04) % -
Pythonのバージョンを確認します
% python -V Python 3.12.5 % -
graphvizのバージョンを確認します
% dot -V dot - graphviz version 12.2.1 (20241206.2353) % dot -V dot - graphviz version 14.0.1 (20251006.0113) %
MCPのセットアップ
-
mcp.jsonに追加します
cat ~/.aws/amazonq/mcp.json { "mcpServers": { ・・・・省略 }, { "mcpServers": { "awslabs.aws-diagram-mcp-server": { "command": "uvx", "args": ["awslabs.aws-diagram-mcp-server"], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "autoApprove": [], "disabled": false } } } }, "tools": [ ・・・・省略 "@awslabs.aws-diagram-mcp-server" ] } -
q chatを起動します
-
確認します
/mcp awslabs.aws-diagram-mcp-server ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ [2025:00:32]: ✓ awslabs.aws-diagram-mcp-server loaded in 7.73 s
ダイアグラムの生成
-
図を生成してみます
VPCとPublic サブネット、Private サブネット、NATGW、IGWを配置した図を生成して -
動き始めました。awslabs.aws-diagram-mcp-serverを利用していることがわかります
> VPCの基本的なネットワーク構成図を生成します。まず利用可能なAWSアイコンを確認してから図を作成しますね。 🛠️ Using tool: list_icons from mcp server awslabs.aws-diagram-mcp-server ⋮ ● Running list_icons with the param: ⋮ { ⋮ "provider_filter": "aws", ⋮ "service_filter": "network" ⋮ } Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]: > t ⋮ ● Completed in 0.28s -
完了しました(EC2は指示していませんが、作ってくれたようです)
🛠️ Using tool: generate_diagram (trusted) from mcp server awslabs.aws-diagram-mcp-server ⋮ ● Running generate_diagram with the param: ⋮ { ⋮ "workspace_dir": "/Users/XXXXXX/XXXX/diagram-test", ⋮ "code": "with Diagram(\"VPC Network Architecture\", show=False, direction=\"LR\"):\n with Cluster(\"VPC\"):\n igw = IGW(\"Internet Gateway\")\n \n with Cluster(\"Public Subnet\"):\n natgw = NATGateway(\"NAT Gateway\")\n \n with Cluster(\"Private Subnet\"):\n private = PrivateSubnet(\"Private Resources\")\n \n igw >> natgw >> private\n", ⋮ "filename": "vpc_network_architecture" ⋮ } ⋮ ● Completed in 3.189s > 図を/Users/XXXXXX/XXXX/diagram-test/generated-diagrams/vpc_network_architecture.pngに生成しました。 >
考察
Q Dev CLIとaws-diagram-mcp-serverの組み合わせにより、自然言語から直接AWSアーキテクチャ図を生成でき便利でした。
今後はawsdacやdrawioと組み合わせ、IaCコードと図を一元管理しながら可視化する運用も試したいと考えています。
参考
