タダです.
以前の記事で Python を使ってシステム構成図を生成する Diagrams を紹介しました.AWS MCP サーバの中に AWS Diagram MCP Server というのがあり,Diagrams による構成図やコードの生成をサポートしてくれる為使ってみた時のメモをまとめます.
AWS Diagram MCP Server 概要
AWS Diagram MCP Server は Diagrams を使って AWS のシステム構成図とコードを生成するための MCPサーバーです.
Claude Desktop での設定
以下のように設定して動作しました.
{ "mcpServers": { "awslabs.aws-diagram-mcp-server": { "command": "uvx", "args": ["awslabs.aws-diagram-mcp-server"], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "autoApprove": [], "disabled": false } }
Claude Code での設定
以下のように設定して動作しました.
claude mcp add aws-diagram \ --env FASTMCP_LOG_LEVEL=ERROR \ -- uvx awslabs.aws-diagram-mcp-server
システムの情報から構成図生成を依頼する
以下のシステム情報から構成図生成を依頼してみました.
・WEB3層構造のAWSアーキテクチャを設計し、構成図をかきます ・東京リージョンのマルチAZとします ・APIサーバーをFargateで構築します ・APIサーバー前段にALBを配置してください ・DBはAurora MySQLを使い、READER/WRITER1つずつ使用する構成とします 上記の構成図を生成してください
上記の依頼に対して以下の結果が返ってきました.
WEB3層構造のAWSアーキテクチャ図を生成させていただきます。東京リージョン(ap-northeast-1)でマルチAZ構成、Fargate、ALB、Aurora MySQLで構成します。完成しました!WEB3層構造のAWSアーキテクチャ図を生成いたしました。
構成の特徴:
WEB層(プレゼンテーション層) - Route53でDNS管理 - ALB(Application Load Balancer)でトラフィック分散
API層(アプリケーション層) - 2つのAZ(AZ-1a、AZ-1c)にまたがるマルチAZ構成 - 各AZに複数のFargateタスクを配置 - ALBがリクエストを各タスクに分散
DB層(データ層) - Aurora MySQL Cluster - Primary/Writer:AZ-1aに配置(書き込み用) - Reader:AZ-1cに配置(読み取り用) - レプリケーション接続で自動同期
この構成により、高可用性、スケーラビリティ、災害復旧性を備えた堅牢なシステムが実現できます。APIサーバーは読み取りと書き込みを適切に分離し、データベースの負荷を分散できます。
構成図としては次の画像が生成され良さげな結果でした.

合わせて Diagram のコードも出力されてくれるのでなにか生成された構成図を調整したいときはこのコードをベースに変更できます.
from diagrams import Diagram, Cluster, Edge from diagrams.aws.compute import Fargate, ECS from diagrams.aws.network import ALB, Route53 from diagrams.aws.database import RDS, Aurora from diagrams.aws.storage import S3 from diagrams.aws.integration import SQS from diagrams.aws.security import IAM with Diagram("AWS WEB3層アーキテクチャ - 東京リージョン", show=False, direction="TB"): # クライアント層 users = Route53("Route53\n(DNS)") with Cluster("WEB層 (東京リージョン ap-northeast-1)"): with Cluster("ALB"): alb = ALB("Application\nLoad Balancer") with Cluster("AZ-1a (API層)"): api_1a_1 = Fargate("API Server\nTask-1") api_1a_2 = Fargate("API Server\nTask-2") with Cluster("AZ-1c (API層)"): api_1c_1 = Fargate("API Server\nTask-3") api_1c_2 = Fargate("API Server\nTask-4") with Cluster("DB層 (Aurora MySQL)"): with Cluster("AZ-1a"): writer = Aurora("Aurora MySQL\n(Primary/Writer)") with Cluster("AZ-1c"): reader = Aurora("Aurora MySQL\n(Reader)") # 接続関係 users >> alb alb >> Edge(label="ロードバランシング") >> api_1a_1 alb >> api_1a_2 alb >> api_1c_1 alb >> api_1c_2 # API → DB api_1a_1 >> Edge(label="Write") >> writer api_1a_2 >> Edge(label="Write") >> writer api_1c_1 >> Edge(label="Write") >> writer api_1c_2 >> Edge(label="Write") >> writer api_1a_1 >> Edge(label="Read", style="dashed") >> reader api_1a_2 >> Edge(label="Read", style="dashed") >> reader api_1c_1 >> Edge(label="Read", style="dashed") >> reader api_1c_2 >> Edge(label="Read", style="dashed") >> reader # DB間のレプリケーション writer >> Edge(label="Replication", style="dotted", color="green") >> reader
まとめ
AWS Diagram MCP Serverの設定とシステム構成図と Diagrams のコードを生成した時の結果をまとめました.