30 of November, AWS announces the AWS MCP Server, a managed remote Model Context Protocol (MCP) server that helps AI agents and AI-native IDEs perform real-world, multi-step tasks across one or more AWS services. The AWS MCP Server consolidates capabilities from the existing AWS API MCP and AWS Knowledge servers into a unified interface, providing access to AWS documentation, generating and executing calls to over 15,000 AWS APIs, including those for newly released services, and following pre-built workflows called Agent standard operating procedures (SOPs) that guide AI agents through common tasks on AWS.

(C) https://aws.amazon.com/about-aws/whats-new/2025/11/aws-mcp-server/

You can list or review existing resources, or ask to create new resources if you want to.

Let’s test it out!

Prerequisites:

  1. AWS CLI > aws-cli/2.32.7 version
  2. Existing AWS account with administrator role

And let’s get started with the setup:

  1. Delete any of the existing AWS MCP servers (You know about https://awslabs.github.io/mcp/ right? :) ), for kiro, for example, from ~/.kiro/settings/mcp.json
  2. And add aws-mcp-server:
{
  "mcpServers": {
    "aws-mcp": {
      "command": "uvx",
      "timeout": 100000,
      "transport": "stdio",
      "args": [
        "mcp-proxy-for-aws@latest",
        "https://aws-mcp.us-east-1.api.aws/mcp",
        "--metadata", "AWS_REGION=us-west-2"
      ]
    }
  }
}
  1. And install uvtool
    For Linux and macOS:
$ curl -LsSf https://astral.sh/uv/install.sh | bash
  1. Install kiro-cli, the latest installation steps you can check in the official documentation: https://kiro.dev/cli/
curl -fsSL https://cli.kiro.dev/install | bash
  1. And the final step is to authorise our CLI in AWS. AWS CLI > 2.32 supports this functionality. Read more. You don’t need to export AWS Access and Secret keys anymore
$ aws login

And confirm in the UI

Voila! We are ready to test it now

❯ kiro-cli                                                                                                                                                                           18:38:17
⚠ 0 of 1 mcp servers initialized. Servers still loading:
 - aws-mcp
⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀     ⢀⣴⣶⣶⣦⡀⠀⠀⠀⢀⣴⣶⣦⣄⡀⠀⠀⢀⣴⣶⣶⣦⡀⠀⠀⢀⣴⣶⣶⣶⣶⣶⣶⣶⣶⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⣶⣶⣶⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀    ⢰⣿⠋⠁⠈⠙⣿⡆⠀⢀⣾⡿⠁⠀⠈⢻⡆⢰⣿⠋⠁⠈⠙⣿⡆⢰⣿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⣦⠀⠀⠀⠀⣴⡿⠟⠋⠁⠀⠀⠀⠈⠙⠻⢿⣦⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⣿⣇⣴⡿⠋⠀⠀⠀⢀⣼⠇⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⢠⣤⣤⣤⣤⣄⠀⠀⠀⠀⣿⡆⠀⠀⣼⡟⠀⠀⠀⠀⣀⣀⣀⠀⠀⠀⠀⢻⣧⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⣿⡿⠋⠀⠀⠀⢀⣾⡿⠁⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⢸⣿⠉⠉⠉⣿⡇⠀⠀⠀⣿⡇⠀⣼⡟⠀⠀⠀⣰⡿⠟⠛⠻⢿⣆⠀⠀⠀⢻⣧⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⠙⠁⠀⠀⢀⣼⡟⠁⠀⠀⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⢸⣿⣶⣶⡶⠋⠀⠀⠀⠀⣿⠇⢰⣿⠀⠀⠀⢰⣿⠀⠀⠀⠀⠀⣿⡆⠀⠀⠀⣿⡆
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⡀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣼⠟⠀⢸⣿⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⣿⡇⠀⠀⠀⣿⡇
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⠀⣠⡀⠀⠀⠹⣷⡄⠀⠀⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⠀⣤⣄⠀⠀⠀⠀⠹⣿⡅⠀⠀⠸⣿⠀⠀⠀⠸⣿⠀⠀⠀⠀⠀⣿⠇⠀⠀⠀⣿⠇
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⣾⡟⣷⡀⠀⠀⠘⣿⣆⠀⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⠀⣿⡟⣷⡀⠀⠀⠀⠘⣿⣆⠀⠀⢻⣧⠀⠀⠀⠹⣷⣦⣤⣤⣾⠏⠀⠀⠀⣼⡟
⠀⠀⠀⠀⠀⠀⠀    ⢸⣿⠀⠀⠀⠀⣿⡇⠹⣷⡀⠀⠀⠈⢻⡇⠀⢸⣿⠀⠀⠀⠀⣿⡇⢸⣿⠀⠀⠀⠀⣿⡇⠹⣷⡀⠀⠀⠀⠈⢻⡇⠀⠀⢻⣧⠀⠀⠀⠀⠉⠉⠉⠀⠀⠀⠀⣼⡟
⠀⠀⠀⠀⠀⠀⠀    ⠸⣿⣄⡀⢀⣠⣿⠇⠀⠙⣷⡀⠀⢀⣼⠇⠀⠸⣿⣄⡀⢀⣠⣿⠇⠸⣿⣄⡀⢀⣠⣿⠇⠀⠙⣷⡀⠀⠀⢀⣼⠇⠀⠀⠀⠻⣷⣦⣄⡀⠀⠀⠀⢀⣠⣴⣾⠟
⠀⠀⠀⠀⠀⠀⠀    ⠀⠈⠻⠿⠿⠟⠁⠀⠀⠀⠈⠻⠿⠿⠟⠁⠀⠀⠈⠻⠿⠿⠟⠁⠀⠀⠈⠻⠿⠿⠟⠁⠀⠀⠀⠈⠻⠿⠿⠟⠁⠀⠀⠀⠀⠀⠈⠙⠻⠿⠿⠿⠿⠟⠋⠁

╭─────────────────────────────── Did you know? ────────────────────────────────╮
│                                                                              │
│     Enable workspace checkpoints to snapshot & restore changes. Just run     │
│                 kiro-cli settings chat.enableCheckpoint true                 │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

Model: Auto (/model to change) | Plan: KIRO FREE (/usage for more detail)


> list my lambda functions in eu-central-1 region

Running aws cli command (using tool: aws):

Service name: lambda
Operation name: list-functions
Parameters: 
Region: eu-central-1
Label: List Lambda functions in eu-central-1
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 - Completed in 0.869s

> You have 6 Lambda functions in eu-central-1:

1. sm-ps-demo - Python 3.13, arm64, 128MB
2. step-funtion1 - Node.js 22.x, arm64, 128MB
3. step-function3 - Node.js 22.x, arm64, 128MB
4. latency-check - Node.js 22.x, arm64, 128MB
5. StepFunctionsSample-TransferDataRe-SeedingFunction-1RO9X79DBreo - Node.js 18.x, x86_64, 128MB
6. step-function2 - Node.js 22.x, arm64, 128MB
 ▸ Credits: 0.08 • Time: 19s

Just asked to list existing resources, and it works. Let’s try a more complicated task:

> what is my ecs task resources utilisation ? Is it under or overprovisioned? 

> I'll check your ECS tasks and their resource utilization.
Running aws cli command (using tool: aws):

Service name: ecs
Operation name: list-clusters
Parameters: 
Region: eu-central-1
Label: List ECS clusters
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 - Completed in 1.44s

> You don't have any ECS clusters in eu-central-1. Let me check other regions where you might have ECS resources.
Running aws cli command (using tool: aws):

Service name: ecs
Operation name: list-clusters
Parameters: 
Region: us-east-1
Label: List ECS clusters in us-east-1
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y


 - Completed in 1.241s

Running aws cli command (using tool: aws):

Service name: ecs
Operation name: describe-clusters
Parameters: 
- clusters: ["hope-therapeutic-cluster"]
- include: ["STATISTICS"]
Region: us-east-1
Label: Describe ECS cluster details
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> 
y

Running aws cli command (using tool: aws):

Service name: ecs
Operation name: list-services
Parameters: 
- cluster: "hope-therapeutic-cluster"
Region: us-east-1
Label: List ECS services in cluster
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

Running aws cli command (using tool: aws):

Service name: ecs
Operation name: list-tasks
Parameters: 
- cluster: "hope-therapeutic-cluster"
Region: us-east-1
Label: List ECS tasks in cluster
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 - Completed in 0.895s

 - Completed in 0.876s

 - Completed in 0.924s

Running aws cli command (using tool: aws):

Service name: ecs
Operation name: describe-tasks
Parameters: 
- tasks: ["arn:aws:ecs:us-east-1:1234567891011:task/hope-therapeutic-cluster/74c7a4e16bb34062a31b378f63e917c2"]
- cluster: "hope-therapeutic-cluster"
- include: ["TAGS"]
Region: us-east-1
Label: Get task details and resource allocation
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

Running aws cli command (using tool: aws):

Service name: ecs
Operation name: describe-services
Parameters: 
- services: ["hope-therapeutic-service"]
- cluster: "hope-therapeutic-cluster"
Region: us-east-1
Label: Get service details
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 - Completed in 0.915s

 - Completed in 0.905s

> Now let me get the task definition details and check CloudWatch metrics for actual CPU and memory utilization:


Running aws cli command (using tool: aws):

Service name: ecs
Operation name: describe-task-definition
Parameters: 
- taskDefinition: "HopeTherapeuticStackHopeTherapeuticServiceTaskDef7242D9E8:9"
Region: us-east-1
Label: Get task definition details
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

Running aws cli command (using tool: aws):

Service name: cloudwatch
Operation name: get-metric-statistics
Parameters: 
- Period: 3600
- Statistics: ["Average","Maximum"]
- Namespace: "AWS/ECS"
- Dimensions: [{"Name":"ServiceName","Value":"hope-therapeutic-service"},{"Name":"ClusterName","Value":"hope-therapeutic-cluster"}]
- StartTime: "2025-11-24T18:43:13Z"
- MetricName: "CPUUtilization"
- EndTime: "2025-12-01T18:43:13Z"
Region: us-east-1
Label: Get CPU utilization metrics
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

Running aws cli command (using tool: aws):

Service name: cloudwatch
Operation name: get-metric-statistics
Parameters: 
- StartTime: "2025-11-24T18:43:13Z"
- Statistics: ["Average","Maximum"]
- Namespace: "AWS/ECS"
- MetricName: "MemoryUtilization"
- Dimensions: [{"Name":"ServiceName","Value":"hope-therapeutic-service"},{"Name":"ClusterName","Value":"hope-therapeutic-cluster"}]
- EndTime: "2025-12-01T18:43:13Z"
- Period: 3600
Region: us-east-1
Label: Get memory utilization metrics
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 - Completed in 0.916s

 - Completed in 1.576s

 - Completed in 1.321s

> Based on the data, your ECS task is significantly overprovisioned:

Resource Allocation:
- CPU: 1024 (1 vCPU)
- Memory: 2048 MB (2 GB)
- Launch Type: Fargate

Actual Utilization (last 7 days):
- **Memory**: ~2.1% average (max 2.15%)
  - Using only ~43 MB out of 2048 MB allocated
- **CPU**: ~0.01% average (max 6.18% spike)
  - Essentially idle most of the time

Recommendations:

You can safely reduce to the smallest Fargate configuration:
- CPU: 256 (.25 vCPU) - 75% reduction
- Memory: 512 MB - 75% reduction

This would:
- Save approximately 75% on Fargate costs
- Still provide 10x headroom over current usage
- Handle traffic spikes comfortably (your max spike was only 6% CPU)

The task is running a Node.js web application on port 3000 with very light load. Even with the minimum Fargate configuration, you'd have plenty of capacity for growth.

As you see from the thinking process, it tries the current region - nothing was found, it tries us-east-1 region and found a cluster, after it found a task definition, service and went to CloudWatch metrics to fetch resources utilisation with the final recommendations to reduce resources given for this task. It’s an impressive start, isn’t it?

What about resource creation?

> Create me a python function to list existing ecs tasks in us-east-1 region, deploy this function with required permissions to us-east-1 region and give me lambda arn to test it

> I'll create a minimal Python Lambda function to list ECS tasks, deploy it, and give you the ARN.
I'll create the following file: /tmp/list_ecs_tasks.py (using tool: write)

+     1: import boto3
+     2: import json
+     3: 
+     4: ecs = boto3.client('ecs', region_name='us-east-1')
+     5: 
+     6: def lambda_handler(event, context):
+     7:     clusters = ecs.list_clusters()['clusterArns']
+     8:     
+     9:     result = []
+    10:     for cluster in clusters:
+    11:         tasks = ecs.list_tasks(cluster=cluster)['taskArns']
+    12:         if tasks:
+    13:             result.append({
+    14:                 'cluster': cluster.split('/')[-1],
+    15:                 'tasks': [t.split('/')[-1] for t in tasks]
+    16:             })
+    17:     
+    18:     return {
+    19:         'statusCode': 200,
+    20:         'body': json.dumps(result)
+    21:     }


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

Creating: /tmp/list_ecs_tasks.py
 - Completed in 0.3s

I will run the following command: cd /tmp && zip -q list_ecs_tasks.zip list_ecs_tasks.py (using tool: shell)
Purpose: Create deployment package


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 - Completed in 0.19s

Running aws cli command (using tool: aws):

Service name: iam
Operation name: create-role
Parameters: 
- RoleName: "list-ecs-tasks-lambda-role"
- AssumeRolePolicyDocument: "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"},\"Action\":\"sts:AssumeRole\"}]}"
Region: us-east-1
Label: Create IAM role for Lambda - Completed in 1.124s

Running aws cli command (using tool: aws):

Service name: iam
Operation name: put-role-policy
Parameters: 
- PolicyDocument: "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"ecs:ListClusters\",\"ecs:ListTasks\",\"logs:CreateLogGroup\",\"logs:CreateLogStream\",\"logs:PutLogEvents\"],\"Resource\":\"*\"}]}"
- RoleName: "list-ecs-tasks-lambda-role"
- PolicyName: "ecs-list-policy"
Region: us-east-1
Label: Attach ECS permissions to role - Completed in 1.56s

I will run the following command: sleep 10 (using tool: shell)
Purpose: Wait for IAM role propagation


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

 - Completed in 10.15s

Running aws cli command (using tool: aws):

Service name: lambda
Operation name: create-function
Parameters: 
- Timeout: 30
- Architectures: ["arm64"]
- FunctionName: "list-ecs-tasks"
- MemorySize: 128
- Runtime: "python3.13"
- Handler: "list_ecs_tasks.lambda_handler"
- Code: {"ZipFile":""}
- Role: "arn:aws:iam::1234567891011:role/list-ecs-tasks-lambda-role"
Region: us-east-1
Label: Create Lambda function ⋮ 
 ● Execution failed after 0.506s:

ZipFile cannot be provided as part of the --code argument.  Please use the '--zip-file' option instead to specify a zip file.


I will run the following command: aws lambda create-function \
  --function-name list-ecs-tasks \
  --runtime python3.13 \
  --role arn:aws:iam::1234567891011:role/list-ecs-tasks-lambda-role \
  --handler list_ecs_tasks.lambda_handler \
  --zip-file fileb:///tmp/list_ecs_tasks.zip \
  --timeout 30 \
  --memory-size 128 \
  --architectures arm64 \
  --region us-east-1 (using tool: shell)
Purpose: Create Lambda function using AWS CLI


Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:

> y

{
    "FunctionName": "list-ecs-tasks",
    "FunctionArn": "arn:aws:lambda:us-east-1:1234567891011:function:list-ecs-tasks",
    "Runtime": "python3.13",
    "Role": "arn:aws:iam::1234567891011:role/list-ecs-tasks-lambda-role",
    "Handler": "list_ecs_tasks.lambda_handler",
    "CodeSize": 452,
    "Description": "",
    "Timeout": 30,
    "MemorySize": 128,
    "LastModified": "2025-12-01T19:33:13.454+0000",
    "CodeSha256": "5dXUTTD2iVvNLCut/rS28zPz6uUjuGVN7JDcApySmkI=",
    "Version": "$LATEST",
    "TracingConfig": {
        "Mode": "PassThrough"
    },
    "RevisionId": "492972d1-be8a-4512-9102-6f140c4a8480",
    "State": "Pending",
    "StateReason": "The function is being created.",
    "StateReasonCode": "Creating",
    "PackageType": "Zip",
    "Architectures": [
        "arm64"
    ],
    "EphemeralStorage": {
        "Size": 512
    },
    "SnapStart": {
        "ApplyOn": "None",
        "OptimizationStatus": "Off"
    },
    "RuntimeVersionConfig": {
        "RuntimeVersionArn": "arn:aws:lambda:us-east-1::runtime:3e3a3605cfe7da866e05663426b7d097356b064d47290ddfe6189c3540e8b1c8"
    },
    "LoggingConfig": {
        "LogFormat": "Text",
        "LogGroup": "/aws/lambda/list-ecs-tasks"
    }
}
 - Completed in 1.295s

> Perfect! Your Lambda function has been deployed successfully.

Lambda ARN: arn:aws:lambda:us-east-1:1234567891011:function:list-ecs-tasks

To test it, run:
bash
aws lambda invoke --function-name list-ecs-tasks --region us-east-1 /tmp/output.json && cat /tmp/output.json


The function will:
- List all ECS clusters in us-east-1
- For each cluster, list all running tasks
- Return cluster names and task IDs in a clean format

Permissions granted:
- ecs:ListClusters
- ecs:ListTasks
- CloudWatch Logs (for function logging)
 ▸ Credits: 2.09 • Time: 2m 7s

It has created a new function with a role to only list clusters and tasks.

Let’s try one more example:

> generate a static website with a feedback form. I want to deploy it to aws to s3 bucket and cloudfront, and as an api I want to have a lambda function, which will send email from this feedback form to [email protected]. The function needs to be written using python or nodejs.

> I'll create a minimal static website with a feedback form, Lambda function, and deployment configuration for S3/CloudFront.
I'll create the following file: /Users/username/work/work/fastapi/static-site/index.html (using tool: write)
Purpose: Create minimal HTML feedback form

.....
<removed huge output with generated html/css code>
.....

Changeset created successfully. arn:aws:cloudformation:us-east-1:1234567891011:changeSet/samcli-deploy1764629712/efd6412c-fde3-46d2-8fe6-658ac02df375


2025-12-01 22:55:19 - Waiting for stack create/update to complete

CloudFormation events from stack operations (refresh every 5.0 seconds)
-------------------------------------------------------------------------------------------------
ResourceStatus           ResourceType             LogicalResourceId        ResourceStatusReason   
-------------------------------------------------------------------------------------------------
CREATE_IN_PROGRESS       AWS::CloudFormation::S   feedback-site            User Initiated         
                         tack                                                                     
CREATE_IN_PROGRESS       AWS::IAM::Role           FeedbackFunctionRole     -                      
CREATE_IN_PROGRESS       AWS::S3::Bucket          WebsiteBucket            -                      
CREATE_IN_PROGRESS       AWS::CloudFront::Origi   CloudFrontOAC            -                      
                         nAccessControl                                                           
CREATE_IN_PROGRESS       AWS::CloudFront::Origi   CloudFrontOAC            Resource creation      
                         nAccessControl                                    Initiated              
CREATE_IN_PROGRESS       AWS::IAM::Role           FeedbackFunctionRole     Resource creation      
                                                                           Initiated              
CREATE_IN_PROGRESS       AWS::S3::Bucket          WebsiteBucket            Resource creation      
                                                                           Initiated              
CREATE_COMPLETE          AWS::CloudFront::Origi   CloudFrontOAC            -                      
                         nAccessControl                                                           
CREATE_COMPLETE          AWS::S3::Bucket          WebsiteBucket            -                      
CREATE_IN_PROGRESS       AWS::CloudFront::Distr   CloudFrontDistribution   -                      
                         ibution                                                                  
CREATE_COMPLETE          AWS::IAM::Role           FeedbackFunctionRole     -                      
CREATE_IN_PROGRESS       AWS::CloudFront::Distr   CloudFrontDistribution   Resource creation      
                         ibution                                           Initiated              
CREATE_IN_PROGRESS       AWS::Lambda::Function    FeedbackFunction         -                      
CREATE_IN_PROGRESS -     AWS::CloudFront::Distr   CloudFrontDistribution   Eventual consistency   
CONFIGURATION_COMPLETE   ibution                                           check initiated        
CREATE_IN_PROGRESS       AWS::Lambda::Function    FeedbackFunction         Resource creation      
                                                                           Initiated              
CREATE_IN_PROGRESS -     AWS::Lambda::Function    FeedbackFunction         Eventual consistency   
CONFIGURATION_COMPLETE                                                     check initiated        
CREATE_IN_PROGRESS       AWS::ApiGateway::RestA   FeedbackApi              -                      
                         pi                                                                       
CREATE_IN_PROGRESS       AWS::ApiGateway::RestA   FeedbackApi              Resource creation      
                         pi                                                Initiated              
CREATE_COMPLETE          AWS::ApiGateway::RestA   FeedbackApi              -                      
                         pi                                                                       
CREATE_IN_PROGRESS       AWS::ApiGateway::Deplo   FeedbackApiDeployment8   -                      
                         yment                    6a2dc2f75                                       
CREATE_IN_PROGRESS       AWS::Lambda::Permissio   FeedbackFunctionApiPer   -                      
                         n                        missionprod                                     
CREATE_IN_PROGRESS       AWS::Lambda::Permissio   FeedbackFunctionApiPer   Resource creation      
                         n                        missionprod              Initiated              
CREATE_IN_PROGRESS       AWS::ApiGateway::Deplo   FeedbackApiDeployment8   Resource creation      
                         yment                    6a2dc2f75                Initiated              
CREATE_COMPLETE          AWS::Lambda::Permissio   FeedbackFunctionApiPer   -                      
                         n                        missionprod                                     
CREATE_COMPLETE          AWS::ApiGateway::Deplo   FeedbackApiDeployment8   -                      
                         yment                    6a2dc2f75                                       
CREATE_COMPLETE          AWS::Lambda::Function    FeedbackFunction         -                      
CREATE_IN_PROGRESS       AWS::ApiGateway::Stage   FeedbackApiprodStage     -                      
CREATE_IN_PROGRESS       AWS::ApiGateway::Stage   FeedbackApiprodStage     Resource creation      
                                                                           Initiated              
CREATE_COMPLETE          AWS::ApiGateway::Stage   FeedbackApiprodStage     -                      
CREATE_COMPLETE          AWS::CloudFront::Distr   CloudFrontDistribution   -                      
                         ibution                                                                  
CREATE_IN_PROGRESS       AWS::S3::BucketPolicy    BucketPolicy             -                      
CREATE_IN_PROGRESS       AWS::S3::BucketPolicy    BucketPolicy             Resource creation      
                                                                           Initiated              
CREATE_COMPLETE          AWS::S3::BucketPolicy    BucketPolicy             -                      
CREATE_COMPLETE          AWS::CloudFormation::S   feedback-site            -                      
                         tack                                                                     
-------------------------------------------------------------------------------------------------

CloudFormation outputs from deployed stack
-------------------------------------------------------------------------------------------------
Outputs                                                                                         
-------------------------------------------------------------------------------------------------
Key                 ApiURL                                                                      
Description         -                                                                           
Value               https://te04qk76t0.execute-api.us-east-1.amazonaws.com/prod/feedback        

Key                 BucketName                                                                  
Description         -                                                                           
Value               feedback-site-websitebucket-5ymcd07pohsv                                    

Key                 WebsiteURL                                                                  
Description         -                                                                           
Value               da7da5qshdkp7.cloudfront.net                                                
-------------------------------------------------------------------------------------------------


Successfully created/updated stack - feedback-site in us-east-1

 - Completed in 253.820s

> Perfect! The stack deployed successfully

And the page itself:

With minimal knowledge, just using prompts, I have a simple website and infrastructure.

With the MCP Server, you can provision new resources, review and analyse your AWS environment, and quickly troubleshoot or resolve issues across your infrastructure.