こんにちは!ひろひろです😀
今回は,最近リリースされた Draw.io MCP を Codex CLI で試すために,AWS Knowledge MCP を併用して「ベストプラクティスに沿った AWS アーキテクチャ図」を作成できるか試してみます.
MCPサーバは Claude Code で試してみた記事が多い印象なので、今回は Codexユーザー向けにまとめます.
config.toml に MCP の設定をする
Codex の場合,MCP サーバの設定は config.toml というファイルで管理します.デフォルトの配置場所は以下です.
~/.codex/config.toml
注意
初めて MCP サーバを設定する場合,このファイルが存在しないことがあります.その場合は作成しましょう.
※Codex CLIにMCPの設定をするのは以下の記事を参考にしました.⬇️
まずは config.toml に AWS Knowledge MCP の設定を追記します.
[mcp_servers.aws-knowledge]
url = "https://knowledge-mcp.global.api.aws"
編集を保存したら codex を起動し,/mcp コマンドで MCP が正しく設定されたか確認します.
codex
Codex 起動後に以下を入力:
/mcp
同様に,config.toml に Draw.io MCP の設定を追記します.
[mcp_servers.drawio]
command = "npx"
args = ["-y", "@drawio/mcp"]
編集内容を保存し,再度 /mcp コマンドで設定を確認します.

正しく設定できたようです.
Codex CLIからMCPを呼び出してみる
まずは AWS Knowledge MCP に,ベストプラクティスに沿って簡単なシステム設計をさせてみます.
ECS(Fargate)+ALB+RDS(Aurora) の典型構成で、
可用性/セキュリティ/ネットワークのベストプラクティスを公式情報ベースで
要点箇条書きにして.VPCはPublic/Privateの分離、NAT、VPC Endpointも触れて.
すると以下の回答が返ってきました.
• 以下、ECS(Fargate)+ALB+Aurora の典型3層構成における、AWS公式情報ベースの要点です。
可用性
- ALB・ECSタスク・Auroraを複数AZに配置する。
- ECSサービスは単一AZ偏りを避け、タスクをAZ分散する(サービス再配置/リバランス機能も活用)。
- ALBターゲットグループのヘルスチェックを適切化し、ECSのローリング更新時の不安定時間を短縮する。
- ALBのderegistration delayとECS停止シグナル処理を調整し、デプロイ/スケールイン時の切断を減らす。
- Auroraはリーダーを配置し、自動フェイルオーバー前提で接続先はクラスター/リーダーエンドポイントを使う。
- Auroraの自動バックアップ(PITR)とスナップショットを有効化し、DR要件次第でGlobal Databaseを検討。
セキュリティ
- Fargateはawsvpc前提で、タスク単位SGを適用して最小許可にする。
- SGは参照ベースで絞る。
- ALB SG: 443受信(必要なら80->443リダイレクト)。
- ECSタスク SG: 受信はALB SGからのアプリポートのみ。
- Aurora SG: 受信はECSタスク SGからのDBポートのみ。
- IAMはTask Role(アプリ権限)とTask Execution Role(ECR pull/Logs出力)を分離し、最小権限にする。
- 機密情報はSecrets Managerを使い、平文環境変数やイメージ埋め込みを避ける。
- AuroraはKMSで保存時暗号化、クライアント接続はTLSで転送時暗号化を強制する。
ネットワーク(Public/Private分離、NAT、VPC Endpoint)
- Publicサブネット: ALBのみ配置(IGWへルート)。
- Privateサブネット: ECSタスク/Auroraを配置(直接インターネット非公開)。
- Privateから外向き通信が必要な場合はNAT Gatewayを使う。可用性観点でAZごとにNATを置く設計が定石。
- NATは汎用的だが、AWSサービス向け通信はVPC Endpointで置き換えると、インターネット非経由・NATコスト抑制に有効。
- 典型的に使うEndpoint:
- Gateway Endpoint: S3(必要に応じDynamoDB)
- Interface Endpoint: ECR(ecr.api,ecr.dkr), CloudWatch Logs, Secrets Manager(必要に応じECS API)
- Fargateでプライベートサブネット運用時、ECRイメージ取得やログ送信に必要な経路(NAT or Endpoint)を必ず満たす。
公式参考
- ECS Best Practices: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-best-practices.html
- ECS outbound接続(Public/Private+NAT): https://docs.aws.amazon.com/AmazonECS/latest/developerguide/networking-outbound.html
- ECSからVPC内AWSサービス接続(NAT vs PrivateLink): https://docs.aws.amazon.com/AmazonECS/latest/developerguide/networking-connecting-vpc.html
- ECS VPC endpoints: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html
- Fargateタスクネットワーキング: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-task-networking.html
- ECSでALB利用: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/alb.html
- ALBターゲットヘルスチェック: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html
- Aurora高可用性: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html
- Aurora VPC/DB subnet group: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html
- Auroraセキュリティベストプラクティス: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/CHAP_BestPractices.Security.html
- Aurora暗号化: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Overview.Encryption.html
- VPC Gateway Endpoint: https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html
次に Draw.io MCP に「構成図」を作成させます。
上の要点を反映したAWS構成図を Mermaid で書いて.
完成したら open_drawio_mermaid を使って draw.io で開いて.
数十秒後にブラウザが立ち上がり,draw.ioのページで以下の構成図が作成されました.

うーん...Mermaid 形式だとこんな感じか😒
AWS の公式アイコンを使って,もっと “いい感じ” の構成図を作らせたい!
ということで,ここから30 分以上 Codexとやり取りしました.
ただ,Draw.io MCP はあくまで お絵かき(図形操作) 専門で,AWS の前提知識(配置のセオリーや意味づけ)までは持っていないことが原因か,アイコンの配置が意図とズレることが多かったです.(AWS knowledge MCPとも繋がってるはずなんだけどな...)
なんとか形にはなってきましたが,まだ色々とおかしい...今回はここで諦めました😇

まとめ
Claude で AWS のアーキテクチャ図を作成してみた記事は結構見かけるのですが,Codex でやってみた記事はあまり見かけなかったので,今回まとめてみました.
正直,現時点だと Codex だけで納得のいくアーキテクチャ図を自動生成するのは難しそうという感触です(※まだ比較検証はできていません).
ただ,Codex CLI から Draw.io MCP を呼び出して図を生成するところまでは確認できたので,どなたかの参考になれば嬉しいです😆

