
1,100以上のAWSリソースを自然言語で作れるCloudFormation MCP Serverを試してみた
お疲れさまです。とーちです。
AWS MCP ServersにCloudFormation MCP Serverというものがあったので試してみました。
少し前から存在は知っていたのですが、以前試したときは、uvxコマンドによるMCPサーバのインストールの部分で失敗していました。先ほど試したところ、正常にMCPサーバがインストールできるようになっていたので、実際に試してみました。
少し試した感じなかなか凄いなという感じです。さっそく見ていきましょう。
どんな機能がある?
まずはどんな機能があるのかをざっと確認してみましょう。最近はMCPサーバーの機能を確認する際、実際にMCPサーバーをインストールした後に直接問いかけてみています。cfn-mcp-serverではどんなことができますか?
と聞いたところ以下のような回答が返ってきました。
主な機能
-
リソーススキーマ取得(get_resource_schema_information)
- AWSリソースタイプ(例: "AWS::S3::Bucket")のスキーマ情報を取得
- ここでいうスキーマ情報というのはCloudFormationテンプレートで指定できるプロパティの一覧を指しているようです
-
リソース一覧表示(list_resources)
- 指定タイプのAWSリソースをリージョン別にリスト表示
-
リソース詳細取得(get_resource)
- 特定リソースの詳細情報を構造化データで取得
-
リソース操作
- 作成(create_resource):新規リソースのプロビジョニング
- 更新(update_resource):JSON Patch形式での変更適用
- 削除(delete_resource):リソースの削除
-
非同期操作管理(get_request_status)
- 長時間実行操作の進捗状況を追跡
CloudFormation MCP Serverという名前から誤解していたのですが、実態としてはCloud Control APIを使って各種操作を行うようです。
Cloud Control APIについては以下の記事が理解しやすかったです。
AWS Cloud Control APIがリリースされていたので触ってみた
ざっくり説明すると、従来は、AWSサービスごとに作成されたAPIで対象サービスのリソースの作成・更新・削除などを行っていました。(例:aws logs describe-log-groups ~
)
Cloud Control APIでは単独のAPIでAWSリソースに対する一貫した操作(リソースの作成、読み取り、更新、削除、一覧表示等)を行えるようになっています。(例:aws cloudcontrol get-resource --type-name AWS::Logs::LogGroup ~
)
それでは実際に使ってみましょう。
やってみた
MCPクライアントへの設定ですが以下の設定を追加しています。
{
"awslabs.cfn-mcp-server": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"command": "uvx",
"args": [
"awslabs.cfn-mcp-server@latest"
],
"env": {
"AWS_PROFILE": "<AWS認証情報のプロファイル名>",
"AWS_REGION": "ap-northeast-1",
"FASTMCP_LOG_LEVEL": "ERROR",
"HOME": "<.aws/configが存在するHOMEディレクトリ>"
},
"transportType": "stdio"
}
}
S3バケットの作成
とりあえずバージョン管理と暗号化を有効にした S3 バケットを作成して
と依頼してみました。すると以下のようにサクッと作ってくれました。
リソース作成は非同期で行われるので、作成状況を get_request_status
というツールで確認できるようになっています。
確認したところ確かにバージョン管理と暗号化を有効にした S3 バケットが作成されていました。
リソースの一覧表示
続いて 東京リージョンにあるs3バケット名を全て表示してください。
と依頼してみました。
今度は list_resources
というツールを使っています。ざっと見た感じ、東京リージョン以外の場所で作成されたS3バケットも取得してきているようですが、これはおそらくS3バケットの特性によるものなのかなと思います(マネージメントコンソール等でも東京リージョンから全てのリージョンのバケットを確認できる)。
今度は us-east-1にあるセキュリティグループの一覧を出して
と依頼したところ今度はちゃんとus-east-1に存在するセキュリティグループだけを出してくれました。
リソースの更新
続いてS3バケットの設定変更をしてみます。my-encrypted-bucket-20250621のバージョニングを無効にして
と依頼しました。
get_request_status
でリクエスト状況がSUCCESS
になったことを確認したあと、設定が意図した通りになっているかを確認していました。
まず、get_resourceツールの結果を確認します。取得したプロパティ内のVersioningConfigurationが"Suspended"に設定されていることが確認できました。これにより、バケットのバージョニングが正常に無効化されたことが検証されました。
実際にバージョニング無効になっています。
リソースの削除
最後にリソースの削除を行ってみます。my-encrypted-bucket-20250621を削除してください。
と依頼しました。
先ほどの設定変更と同様にget_request_status
でリクエスト状況がSUCCESS
になったことを確認したあと、list_resourcesでS3バケットを一覧表示し、削除したバケットが含まれていないことを確認していました。
実際に削除されていることも確認できました。
まとめ
というわけで、CloudFormation MCP Serverの紹介でした。
これ凄くないですか?MCPサーバは色々試しましたが、CloudFormation MCP Serverにはちょっと感動してしまいました。
これがあればIaCがいらない世界が来るのもそう遠くないのかも、と感じてしまいました。もちろん本番環境等では依然として変更管理ができるIaCが重要なのは間違い無いですが、検証環境とかのちょっとした環境ならCloudFormation MCP Serverで作ってしまうというのもありな気がしました。
また、AWS Documentation MCP Serverと組み合わせると更に可能性が広がりそうですよね。例えばALBログ出力のためのS3バケットを作ってみたいな指示で適切なバケットポリシーを設定したバケットを作成してくれたりするんじゃないかなと期待しました。
以上、とーちでした。