0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Q Developer CLIとMCPでAWSアーキテクチャ図を生成してみた

Posted at

背景・目的

以前、awsdacを使用して CloudFormation(Cfn) テンプレートからAWSのアーキテクチャ図を生成しました。

今回は、Amazon Q Developer(Q Dev) CLIとaws-diagram-mcp-serverを組み合わせて図を生成してみます。

概要

AWS Diagram MCP Server

下記を基に概要を整理します。

  • PythonダイアグラムパッケージDSLを使用してシームレスにダイアグラムを作成する
  • Pythonコードを使用してAWSダイアグラム、シーケンスダイアグラム、フローダイアグラム、クラスダイアグラムを生成できる

Features

  1. Generate Diagrams
    • Python コードを使用してプロフェッショナルな図を作成する
  2. Multiple Diagram Types
    • AWS アーキテクチャ、シーケンス図、フローチャート、クラス図などのサポート
  3. Customization
    • 図の外観、レイアウト、スタイルをカスタマイズする
  4. Security
    1. 安全なダイアグラム生成を保証するコードスキャン

Graphviz

What is Graphviz?

  • Graphvizはオープンソースのグラフ可視化ソフトウェア
  • グラフ可視化とは、構造情報を抽象的なグラフやネットワークの図として表現する方法
  • 以下のような分野において用途がある
    • ネットワーク
    • バイオインフォマティクス
    • ソフトウェアエンジニアリング
    • データベース
    • Webデザイン
    • 機械学習

Features

  • Graphvizレイアウトプログラムは、シンプルなテキスト言語で記述されたグラフの記述を受け取る
  • 下記のような便利な形式でのダイアグラムを作成する
    • Webページ用の画像
    • SVG
    • 他のドキュメントに組み込むためのPDFやPostscript
    • インタラクティブなグラフブラウザでの表示など
  • Graphvizには、下記のようなダイアグラム作成に役立つ機能が多数用意されている
    • フォント
    • 表形式のノードレイアウト
    • 線のスタイル
    • ハイパーリンク
    • カスタムシェイプなどのオプションなど

実践

事前準備

下記を事前にインストールします

  • uv
  • Python 3.10(以上)
  • GraphViz
  1. uv を確認します

    % uv -V
    uv 0.8.23 (00d3aa378 2025-10-04)                      
    % 
    
  2. Pythonのバージョンを確認します

    % python -V 
    Python 3.12.5
    % 
    
  3. graphvizのバージョンを確認します

    % dot -V
    dot - graphviz version 12.2.1 (20241206.2353)
    % dot -V
    dot - graphviz version 14.0.1 (20251006.0113)
    % 
    

MCPのセットアップ

  1. 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"
      ]
    }
    
  2. q chatを起動します

  3. 確認します

    /mcp
    awslabs.aws-diagram-mcp-server
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    [2025:00:32]: ✓ awslabs.aws-diagram-mcp-server loaded in 7.73 s    
    

ダイアグラムの生成

  1. 図を生成してみます

    VPCとPublic サブネット、Private サブネット、NATGW、IGWを配置した図を生成して
    
  2. 動き始めました。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
    
    
  3. 完了しました(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に生成しました。
    
    > 
    
  4. 一応、生成されました
    image.png

考察

Q Dev CLIとaws-diagram-mcp-serverの組み合わせにより、自然言語から直接AWSアーキテクチャ図を生成でき便利でした。
今後はawsdacやdrawioと組み合わせ、IaCコードと図を一元管理しながら可視化する運用も試したいと考えています。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?