お客様のDXの推進やクラウド活用をサポートする
NRIグループのプロフェッショナルによるブログ記事を掲載

AWS初心者がAmazon QとMCPを使ってAWS環境を自動構築してみた

下津 裕生 - Nomura Research Institute, Ltd.

石川 堅也 - Nomura Research Institute, Ltd.

はじめに 

こんにちは、NRIの下津と石川です。
私たちは、本番作業の統制を確保するためのAWSを用いたサービスの維持管理を担当しています。

昨今、RAGの発展からAIエージェントの開発が進む中で、クラウド上でのリソース構築の速度も加速しているように感じます。
「もしAIがクラウド上でのリソース構築まで代わりにやってくれたら、業務効率がさらに上がるのでは?」
今回はそんな発想のもと、AWSや生成AIの初学者でも30分程度で実装できる、MCPサーバを使ったAIエージェントの構築方法をご紹介します。

 

MCPサーバを実装してみたきっかけ

私たちのチームでは、クラウド技術や生成AIを活用したサービスを提供しています。私たち自身AWSの経験が浅く、生成AIの知識もまだまだ未熟ですが「生成AIでクラウド開発を効率化できないか?」と思い、今回の検証を始めました。

 

構築したもの

作成したリソースは以下3つとなります。

  • EC2:Amazon Q Developer CLI(以下、Q Developer CLI)をインストールし、自然言語による操作を実現
  • NAT Gateway:プライベートサブネット内のEC2がインターネットにアクセスするための経路
  • VPC Endpoint:EC2がSystems Manager(SSM)にアクセスできるようにするための内部接続

構築手順は以下の通りで、とてもシンプルに実装することができました。

  1. EC2にSSM接続可能な環境を構築
  2. Q Developer CLIをインストール
  3. MCPサーバを設定
  4. 自然言語で環境構築を実行

 

実際の構築手順

1:EC2にSSMする環境作成

1-1:VPC・サブネット・EC2を作成

AWS Management ConsoleからVPCを作成し、2つのサブネット(パブリック/プライベート)を用意します。
プライベートサブネット上にAmazon Linux 2023のEC2インスタンスを作成します。

 

1-2:Session Manager(SSM)を設定

EC2の設定をするために、Session Managerを設定します。
まず、VPCの「DNSホスト名を有効化」にチェックを入れます。

次に、VPCエンドポイント用のセキュリティグループ(SG)を作成します。
SGのインバウンドルールにて、作成したEC2からのHTTP/HTTPS通信を許可します。

そして、Session Managerを設定するために、以下の3つを許可するVPCエンドポイントを作成します。(先ほど作成したVPCエンドポイント用のSG内に作成します)

  • com.amazonaws.<region>.ssm
  • com.amazonaws.<region>.ssmmessages
  • com.amazonaws.<region>.ec2messages

 

1-3:IAMロールの作成

EC2内のSSM AgentがSession Managerとのセッションを確立できるよう、以下のマネージドポリシーをアタッチしたIAMロールを作成します。

・AmazonSSMManagedInstanceCore

作成したIAMロールをEC2にアタッチします。

 

1-4:Session ManagerでEC2にSSH接続

EC2を再起動し、「AWS Systems Manager」→「セッションマネージャー」に移動します。
「セッションの開始」→「ターゲットインスタンス」にEC2が表示されています。
EC2を選択し、「セッションの開始」を押下すると、EC2に接続できます。
※もしここで接続できない場合、ルートテーブルの設定が原因の可能性があるため、3-2実施後に改めて接続できるかをご確認ください。

 

2:Q Developer CLIのインストール

2-1:NAT Gatewayを設定

Q Developer CLIをインストールするために、EC2からインターネットへアクセスする必要があります。
EC2を作成していないサブネット上にNAT Gatewayを作成します。
作成後の構成図は以下になります。

 

2-2:ルートテーブルを設定

プライベートサブネットのルートテーブルをサブネット内はlocalに、それ以外はNAT Gatewayをターゲットに設定します。

送信先

ターゲット

0.0.0.0/0

(NATGateway)

(VPCのCIDR)

local

 

パブリックサブネットのルートテーブルをサブネット内はlocalに、それ以外はインターネットゲートウェイをターゲットに設定します。

送信先

ターゲット

0.0.0.0/0

(インターネットゲートウェイ)

(VPCのCIDR)

local

 

2-3:Q Developer CLIをインストール

ec2-userにてQ Developer CLIを実行したいので、ec2-userにてログインし直します。
以下のコマンドを実行してec2-userにパスワードを設定します。

sudo passwd ec2-user
su - ec2-user

それでは準備が出来たので、ようやくQ Developer CLIをインストールします!

参考:
https://docs.aws.amazon.com/ja_jp/amazonq/latest/qdeveloper-ug/command-line-installing-ssh-setup-autocomplete.html

以下のコマンドを実行し、glibcバージョンを確認します。

ldd --version

バージョン2.34なので、以下のコマンドを実行します。

curl --proto '=https' --tlsv1.2 -sSf "https://desktop-release.q.us-east-1.amazonaws.com/latest/q-x86_64-linux.zip" -o "q.zip"

インストールできたので、インストーラを解凍します。

unzip q.zip

インストールプログラムを実行します。

./q/install.sh

認証するために、記載のURLにアクセスします。

ブラウザ上でアクセスを許可すると、ログインできます。

これでQ Developer CLIをインストールできました。以下のコマンドでAmazon Qを開始してみます。

q chat

この状態で、自然言語でAmazon Qとチャットすることができます。

この対話モードを終了したいときは以下のコマンドを実行します。

/quit

 

3:MCPサーバを設定

では、Q Developer CLIをEC2にインストールできたので、AWS公式のドキュメントサーバをMCPとして登録します。

参考:
https://awslabs.github.io/mcp/servers/aws-documentation-mcp-server/

ディレクトリを作成し、作成したディレクトリ下にMCPサーバを指定するjsonファイルを作成します。

mkdir -p ~/.q
vim ~/.q/mcp.json

{
  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.aws-documentation-mcp-server@latest"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": [
        "read_documentation"
      ]
    }
  }
}

先ほど格納したJsonファイルからMCPサーバ設定をインポートします。

qchat mcp import --file ~/.q/mcp.json global

では、設定済みのサーバを一覧表示するコマンドを実行してみます。

q mcp list

先ほど記載したMCPサーバが登録されています!

次に、Python環境を準備します

参考:
https://docs.astral.sh/uv/getting-started/installation/

Linuxなので以下のコマンドを実行します。


curl -LsSf https://astral.sh/uv/install.sh | sh
sudo dnf install -y python3.11 python3.11-pip

では、再度Amazon Qを起動してみましょう。

q chat

この状態では、AWSの最新ドキュメントを参照することができます。
実際に、最新のドキュメントを参照しているかどうか確認してみます。

~~~一部省略~~~

このように、最新のドキュメントを参照して回答していることが分かります!

 

4:実際に自然言語で環境構築

では、Amazon Qに環境構築させるステップに入ります。

 

4-1:IAMロールにて、環境構築権限を付与

AWS環境を構築するのはEC2サーバなので、環境を構築する権限のIAMロールをEC2に付与します。
今回は、VPCの作成権限のみを付与します。
以下のIAMポリシーを作成します。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateVpc"
            ],
            "Resource": "*"
        }
    ]
}

作成したIAMポリシーを、1-3で作成したIAMロールに追加で付与します。

これで、EC2にVPCの作成権限が付与できました。

 

4-2:MCPサーバの追加

今回はVPCの作成のみですが、今後VPC以外を作成したくなった時を考えて、リソースごとにファイル分割します。
(main_server.pyより各リソース作成用のPythonファイル(aws_vpc.pyなど)を呼び出す構成となります)

まず、main_server.pyを作成します。


mkdir -p ~/mcp_servers
cd ~/mcp_servers
vim main_server.py

from fastmcp import FastMCP
from aws_vpc import register_vpc_methods

server = FastMCP("aws-admin-mcp")
register_vpc_methods(server)

if __name__ == "__main__":
    server.run()

参考:
https://gofastmcp.com/getting-started/quickstart

次に、VPCを作成するためのモジュールを格納したPythonファイルを作成します。

vim aws_vpc.py


import boto3

def register_vpc_methods(server):
    @server.tool()
    def create_vpc(cidr_block: str):
        """
        Create a VPC with the specified CIDR block.

        This tool creates a new VPC using the AWS EC2 service.
        """
        session = boto3.Session()
        region = session.region_name
        ec2 = boto3.client("ec2", region_name=region)

        resp = ec2.create_vpc(CidrBlock=cidr_block)
        vpc_id = resp["Vpc"]["VpcId"]
        return {"vpc_id": vpc_id, "cidr_block": cidr_block, "region": region}

参考:
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/session.html

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2/client/create_vpc.html

そして、4章で作成したMCPサーバをmcp.jsonに追記します。
(Amazon Qにmcp.jsonをインポートすることで、Amazon Qが4章で作成したMCPサーバを呼び出せるようになります)

vim ~/.q/mcp.json


{
  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.aws-documentation-mcp-server@latest"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": [
        "read_documentation"
      ]
    },
    "aws-admin-mcp": {
      "command": "python3.11",
      "args": [
        "/home/ec2-user/mcp_servers/main_server.py"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "INFO"
      },
      "disabled": false,
      "autoApprove": [
        "create_vpc"
      ]
    }
  }
}

必要ライブラリをインストールします。

python3.11 -m pip install fastmcp boto3

MCPサーバをAmazon Qに認識させます。


qchat mcp import --file ~/.q/mcp.json global –force
q mcp list

 

4-3:自然言語でVPC作成

それでは、自然言語でVPCを作成してみましょう。
チャットを開始します。

q chat

今回はバージニア北部リージョンに作成します。

バージニア北部にvpcを1つ作成して

途中で許可を求められるので許可すると、VPCが作成されます!

 

おわりに

今回は、AWSや生成AIの初学者でも簡単に構築できるAIエージェントの実装を紹介しました。30分程度で実装することができるので、AWSや生成AI学習の最初の一歩として是非ご活用いただけますと幸いです。

 

atlax公式SNS

各種SNSでも情報を発信しています。ぜひフォローをお願いいたします。

 

     

 

お問い合わせ

atlax では、ソリューション・サービス全般に関するご相談やお問い合わせを承っております。

 

関連リンク・トピックス

・atlax / クラウドの取り組み / AWS(Amazon Web Services) 

・2025/10/22 2025 Japan AWS Top Engineers 受賞者(4) Security

・2025/10/20 2025 Japan AWS Top Engineers 受賞者(3) Networking

 

※ 記載された会社名 および ロゴ、製品名などは、該当する各社の登録商標または商標です。
※ アマゾン ウェブ サービス、Amazon Web Services、AWS および ロゴは、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
※ Microsoft、Azure は、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。
※ Google Cloud、Looker、BigQuery および Chromebook は、Google LLC の商標です。
※ Oracle、Java、MySQL および NetSuite は、Oracle Corporation、その子会社および関連会社の米国およびその他の国における登録商標です。NetSuite は、クラウド・コンピューティングの新時代を切り開いたクラウド・カンパニーです。