Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Reason given by maintainers: Superceeded by awslabs.aws-iac-mcp-server

⚠️ DEPRECATION NOTICE: This server is deprecated and will no longer receive updates. Please migrate to the AWS IAC MCP Server, which provides a unified infrastructure-as-code experience covering CloudFormation, CDK, and Terraform. See the migration guide for a detailed mapping of tools and known gaps.

CloudFormation MCP Server

Model Context Protocol (MCP) server that enables LLMs to directly create and manage over 1,100 AWS resources through natural language using AWS Cloud Control API and Iac Generator with Infrastructure as Code best practices.

Features

  • Resource Creation: Uses a declarative approach to create any of 1,100+ AWS resources through Cloud Control API
  • Resource Reading: Reads all properties and attributes of specific AWS resources
  • Resource Updates: Uses a declarative approach to apply changes to existing AWS resources
  • Resource Deletion: Safely removes AWS resources with proper validation
  • Resource Listing: Enumerates all resources of a specified type across your AWS environment
  • Schema Information: Returns detailed CloudFormation schema for any resource to enable more effective operations
  • Natural Language Interface: Transform infrastructure-as-code from static authoring to dynamic conversations
  • Partner Resource Support: Works with both AWS-native and partner-defined resources
  • Template Generation: Generates a template on created/existing resources for a subset of resource types

Prerequisites

  1. Configure AWS credentials:
    • Via AWS CLI: aws configure
    • Or set environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION)
  2. Ensure your IAM role or user has the necessary permissions (see Security Considerations)

Installation

Kiro Cursor VS Code
Add to Kiro Install MCP Server Install on VS Code

Configure the MCP server in your MCP client configuration (e.g., for Kiro, edit ~/.kiro/settings/mcp.json):

{
  "mcpServers": {
    "awslabs.cfn-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.cfn-mcp-server@latest"
      ],
      "env": {
        "AWS_PROFILE": "your-named-profile"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

If you would like to prevent the MCP from taking any mutating actions (i.e. Create/Update/Delete Resource), you can specify the readonly flag as demonstrated below:

{
  "mcpServers": {
    "awslabs.cfn-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.cfn-mcp-server@latest",
        "--readonly"
      ],
      "env": {
        "AWS_PROFILE": "your-named-profile"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

Windows Installation

For Windows users, the MCP server configuration format is slightly different:

{
  "mcpServers": {
    "awslabs.cfn-mcp-server": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--from",
        "awslabs.cfn-mcp-server@latest",
        "awslabs.cfn-mcp-server.exe"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "AWS_PROFILE": "your-aws-profile",
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

or docker after a successful docker build -t awslabs/cfn-mcp-server .:

# fictitious `.env` file with AWS temporary credentials
AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
AWS_SESSION_TOKEN=AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
  {
    "mcpServers": {
      "awslabs.cfn-mcp-server": {
        "command": "docker",
        "args": [
          "run",
          "--rm",
          "--interactive",
          "--env-file",
          "/full/path/to/file/above/.env",
          "awslabs/cfn-mcp-server:latest",
          "--readonly" // Optional paramter if you would like to restrict the MCP to only read actions
        ],
        "env": {},
        "disabled": false,
        "autoApprove": []
      }
    }
  }

NOTE: Your credentials will need to be kept refreshed from your host

Tools

create_resource

Creates an AWS resource using the AWS Cloud Control API with a declarative approach. Example: Create an S3 bucket with versioning and encryption enabled.

get_resource

Gets details of a specific AWS resource using the AWS Cloud Control API. Example: Get the configuration of an EC2 instance.

update_resource

Updates an AWS resource using the AWS Cloud Control API with a declarative approach. Example: Update an RDS instance's storage capacity.

delete_resource

Deletes an AWS resource using the AWS Cloud Control API. Example: Remove an unused NAT gateway.

list_resources

Lists AWS resources of a specified type using AWS Cloud Control API. Example: List all EC2 instances in a region.

get_resource_schema_information

Get schema information for an AWS CloudFormation resource. Example: Get the schema for AWS::S3::Bucket to understand all available properties.

get_request_status

Get the status of a mutation that was initiated by create/update/delete resource. Example: Give me the status of the last request I made.

create_template

Create a Cloudformation template from created or listed resources. Example: Create a YAML template for those resources.

Basic Usage

Examples of how to use the AWS Infrastructure as Code MCP Server:

  • "Create a new S3 bucket with versioning and encryption enabled"
  • "List all EC2 instances in the production environment"
  • "Update the RDS instance to increase storage to 500GB"
  • "Delete unused NAT gateways in VPC-123"
  • "Set up a three-tier architecture with web, app, and database layers"
  • "Create a disaster recovery environment in us-east-1"
  • "Configure CloudWatch alarms for all production resources"
  • "Implement cross-region replication for critical S3 buckets"
  • "Show me the schema for AWS::Lambda::Function"
  • "Create a template for all the resources we created and modified"

Resource Type support

Resources which are supported by this MCP and the supported operations can be found here

Security Considerations

When using this MCP server, you should consider:

  • Ensuring proper IAM permissions are configured before use
  • Use AWS CloudTrail for additional security monitoring
  • Configure resource-specific permissions when possible instead of wildcard permissions
  • Consider using resource tagging for better governance and cost management
  • Review all changes made by the MCP server as part of your regular security reviews
  • If you would like to restrict the MCP to readonly operations, specify --readonly True in the startup arguments for the MCP

Required IAM Permissions

Ensure your AWS credentials have the following minimum permissions:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudcontrol:ListResources",
                "cloudcontrol:GetResource",
                "cloudcontrol:CreateResource",
                "cloudcontrol:DeleteResource",
                "cloudcontrol:UpdateResource",
                "cloudformation:CreateGeneratedTemplate",
                "cloudformation:DescribeGeneratedTemplate",
                "cloudformation:GetGeneratedTemplate"
            ],
            "Resource": "*"
        }
    ]
}

Limitations

  • Operations are limited to resources supported by AWS Cloud Control API and Iac Generator
  • Performance depends on the underlying AWS services' response times
  • Some complex resource relationships may require multiple operations
  • This MCP server can only manage resources in the AWS regions where Cloud Control API and/or Iac Generator is available
  • Resource modification operations may be limited by service-specific constraints
  • Rate limiting may affect operations when managing many resources simultaneously
  • Some resource types might not support all operations (create, read, update, delete)
  • Generated templates are primarily intended for importing existing resources into a CloudFormation stack and may not always work for creating new resources (in another account or region)

Release files for awslabs.cfn-mcp-server 1.0.19

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for awslabs.cfn-mcp-server 1.0.19
File Size Uploaded
awslabs_cfn_mcp_server-1.0.19.tar.gz 103.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for awslabs.cfn-mcp-server 1.0.19
File Interpreter ABI Platform
awslabs_cfn_mcp_server-1.0.19-py3-none-any.whl Python 3 none any Details

Total release size:128.4 kB

Release files / awslabs_cfn_mcp_server-1.0.19.tar.gz

Download URL awslabs_cfn_mcp_server-1.0.19.tar.gz
Size 103.4 kB
Tags Source
SHA-256 checksum
How to use checksums
725d5f5185d86b577d4a73ce55884f7a44aa19b0eb9c7f59fb6774bc86aaf1d2
BLAKE2b-256 checksum
How to use checksums
8f235f16e205a587cc32590e980a783617ef768f4ad8c3528b4ddab0b30d862f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 13, 2026.

Transparency log

Release files / awslabs_cfn_mcp_server-1.0.19-py3-none-any.whl

Download URL awslabs_cfn_mcp_server-1.0.19-py3-none-any.whl
Size 25.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1f2c186fae303cf74aef1266d6c3a13660f6da627e4755aa619a353acbb72c57
BLAKE2b-256 checksum
How to use checksums
3cd156577c95b7b9e9b02b77a3266a94921f2895083228752b87bda868528773
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.19 This release

2 release files

1.0.15

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page