aws-iac-mcp-serverの使い方 — CloudFormationとCDKをMCPで検証する
aws-iac-mcp-serverは、AWS LabsのCloudFormation/CDK向けMCPサーバーです。パッケージ名、Claude Codeへの登録コマンド、必要な権限と既知の不具合を示します。
aws-iac-mcp-serverは、AWS LabsがCloudFormationとCDK向けに公開しているMCPサーバーです。PyPIのパッケージ名はawslabs.aws-iac-mcp-serverで、Claude Codeにはuvx awslabs.aws-iac-mcp-server@latestをstdioサーバーとして登録します。テンプレートの構文チェックからセキュリティのコンプライアンス確認、デプロイに失敗したスタックの原因診断まで、Claude Codeに接続するだけで扱えます。中心はローカルで完結するテンプレート検証で、検証系のツールはAWS認証情報が無くても動きます。
CDKスタック自体をClaude Codeに書かせる手順はClaude CodeでAWS CDKスタックを書くにあります。この記事は、検証と診断のためにこのサーバーをつなぐ側の話です。このサーバーを同梱し、構成提案から見積もりまで一続きで進めるプラグインはDeploy on AWSプラグインの使い方で扱っています。
テンプレートの検証・診断・CDK検索の3系統
READMEが挙げるツールは9本です。用途で分けると3系統になります。
9本のツールの分け方
作る前後の検証
validate_cloudformation_template(構文・スキーマ)とcheck_cloudformation_template_compliance(セキュリティルール)。どちらもAWS認証情報は要りません。失敗後の診断
troubleshoot_cloudformation_deploymentが、失敗したスタックの原因をCloudTrailの記録と突き合わせます。ここだけ読み取り権限が必要です。ドキュメントとコード例の検索
search_cdk_documentation、search_cdk_samples_and_constructs、cdk_best_practices、search_cloudformation_documentation、read_iac_documentation_page、get_cloudformation_pre_deploy_validation_instructions。
導入 — uvの用意からClaude Codeへの登録まで
前提はuvと、uv python install 3.10で入るPython 3.10です。PyPI上のパッケージawslabs.aws-iac-mcp-serverはPython 3.10以上を要求します。
接続までの流れ
- 1
uvとPythonを入れる
uvをインストールし、uv python install 3.10を実行します。 - 2
サーバーを登録する
下のコマンドを、チームで共有したいなら
--scope project付きで実行します。省略するとlocalスコープに入ります。 - 3
初回の承認を済ませる
プロジェクトスコープの
.mcp.jsonは、未承認のうちはPending approvalと表示されます。claudeを対話モードで起動して承認します。
テンプレート検証だけならAWS認証情報は不要です。デプロイ失敗の診断を使うときだけ、aws configureかAWS_ACCESS_KEY_ID等の環境変数で、IAM権限を持つ認証情報を渡します。
claude mcp add --scope project \
--env AWS_PROFILE=readonly-profile \
--env FASTMCP_LOG_LEVEL=ERROR \
--transport stdio aws-iac \
-- uvx awslabs.aws-iac-mcp-server@latestv2.1.287で上のコマンドを実行すると、次のメッセージが出ます。
Added stdio MCP server aws-iac with command: uvx awslabs.aws-iac-mcp-server@latest to project config生成された.mcp.jsonは次の内容です。claude mcp addはtype: "stdio"を自動で補います。
{
"mcpServers": {
"aws-iac": {
"type": "stdio",
"command": "uvx",
"args": ["awslabs.aws-iac-mcp-server@latest"],
"env": {
"AWS_PROFILE": "readonly-profile",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}FASTMCP_LOG_LEVEL=ERRORはREADMEの設定例にも入っている環境変数で、登録に必須ではありません。--より前がclaude mcp add自身のオプション、後ろがサーバーの起動コマンドです。
Windowsでは、READMEがuvxではなくuv tool runを使う形を示しています。
{
"mcpServers": {
"awslabs.aws-iac-mcp-server": {
"command": "uv",
"args": [
"tool", "run", "--from",
"awslabs.aws-iac-mcp-server@latest",
"awslabs.aws-iac-mcp-server.exe"
],
"env": { "AWS_PROFILE": "your-aws-profile" }
}
}
}CloudFormationテンプレートを検証する
validate_cloudformation_templateはcfn-lintで、構文エラーや無効なプロパティ、スキーマ違反を行番号付きの修正案とともに返します。パラメータはtemplate_content(必須)、regions、ignore_checksです。regionsには検証対象のリージョンのリストを渡します。特定のチェックを外すには、ignore_checksにcfn-lintのチェックIDのリストを渡します。
check_cloudformation_template_complianceは別のツールで、cfn-guardを使います。AWS Guard Rules RegistryとControl Towerのproactive controlsに照らし、セキュリティとコンプライアンスのルール違反を拾って、修正の手引きを返します。検証対象はサーバーに同梱されたルールです。
ドキュメント検索のsearch_cloudformation_documentationは、リソースタイプやプロパティ、テンプレート構文の該当箇所を返します。AWS::Lambda::Functionのプロパティを確かめながらテンプレートを書く場面に向きます。検索ツールのKeyErrorは、後述のとおり解消済みです。
デプロイに失敗したスタックの原因を診断する
troubleshoot_cloudformation_deploymentはstack_nameとregionを受け取り、30以上の既知の失敗パターンと照合します。include_cloudtrailは既定でtrueで、CloudTrailの該当イベントへのリンクも返します。
必要な権限は、後述の「何にAWS認証情報が要るか」の節にあります。
削除済みのスタックには注意が要ります。DescribeStackEventsもDescribeStacksも、削除済みスタックは名前では引けず、一意のスタックIDを求めます。このツールはstack_nameをそのままdescribe_stacksに渡すので、削除済みのスタックはIDを渡すと引ける実装です。
CDKのドキュメントとコード例を検索する
search_cdk_documentationは、CDK APIリファレンス・ベストプラクティスガイド・コードサンプル・CDK-NAGの検証ルールを検索します。クエリにはDynamoDB AND tableのようなブール演算子が使え、aws-s3.Bucketのような具体的なコンストラクト名を入れると的を絞れます。2026年5月に報告されたissue #3339のエラーは、10月6日にクローズされています(後述)。
search_cdk_samples_and_constructsはlanguageパラメータ(既定typescript)で、TypeScript・Python・Java・C#・Goのサンプルを絞り込めます。cdk_best_practicesはパラメータなしで、アプリ設定・コーディング・コンストラクト・セキュリティ・テストの各観点をまとめて返します。
検索結果の続きを読むにはread_iac_documentation_pageにURLを渡します。ページをMarkdownにして返し、starting_indexで途中から取れます。get_cloudformation_pre_deploy_validation_instructionsはパラメータなしで、チェンジセット作成時の事前検証機能のCLIコマンドと修正の手引きをJSONで返します。
Claude Codeへの指示は自然文で足ります。READMEの例は次のとおりです。
| やりたいこと | 指示の例 | 動くツール |
|---|---|---|
| テンプレート検証 | 指示の例「このCloudFormationテンプレートを検証して」+本文 | 動くツールvalidate_cloudformation_template |
| コンプライアンス確認 | 指示の例「セキュリティとコンプライアンスをチェックして」+本文 | 動くツールcheck_cloudformation_template_compliance |
| 失敗の診断 | 指示の例「my-app-stackがus-east-1で失敗した原因を調べて」 | 動くツールtroubleshoot_cloudformation_deployment |
| CDKのサンプル探し | 指示の例「S3バケット暗号化のCDKサンプルを探して」 | 動くツールsearch_cdk_samples_and_constructs |
何にAWS認証情報が要るか
認証情報が要るのは、デプロイ失敗の診断だけです。必要なIAM権限は、次の読み取り4つです。
| 機能 | 必要なIAM権限 |
|---|---|
| テンプレート検証・コンプライアンスチェック | 必要なIAM権限不要(ローカル検証のみ) |
| デプロイ失敗の診断 | 必要なIAM権限cloudformation:DescribeStacks / DescribeStackEvents / DescribeStackResources |
| CloudTrail連携の深いリンク | 必要なIAM権限cloudtrail:LookupEvents |
ツール一覧にはリソースを変更するものがありません。診断用に付けるポリシーは、READMEの例のとおり次の形です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudformation:DescribeStacks",
"cloudformation:DescribeStackEvents",
"cloudformation:DescribeStackResources",
"cloudtrail:LookupEvents"
],
"Resource": "*"
}
]
}aws-api-mcp-serverとどう使い分けるか
同じAWS Labsのリポジトリには、AWS CLIのコマンドを実行するaws-api-mcp-serverもあります。
2つのAWS Labsサーバーの守備範囲
aws-iac-mcp-server
CloudFormationとCDKのテンプレート検証、コンプライアンス確認、失敗の診断、ドキュメント検索に特化します。任意のAWSコマンドを実行するツールはありません。
aws-api-mcp-server
call_awsで、あらゆるAWSサービスにコマンドを投げる汎用サーバーです。書き込み系のAPIも実行できるため、渡す認証情報の権限設計が重くなります。
2つを使い分ければ、渡す認証情報も用途ごとに絞れます。
つまずきやすいポイント
GitHubのissueで報告された不具合が3件(うち1件は解消済み)と、Dockerで使うときの注意が1点あります。
- 起動時に
No module named 'fastmcp.server.proxy'で落ちる: 1.0.24は依存にfastmcp>=3.2.0としか書いておらず、uvx ...@latestがFastMCP 4.0.0を解決して起動時にクラッシュしました(issue #4567)。FastMCP 4.0でfastmcp.server.proxyが移動したためです。上限を付ける修正(PR #4568)は2026年9月1日(UTC)にマージされました。PyPIの1.0.25と1.0.26は、依存をfastmcp<4,>=3.2.0としています - 検索ツールが
Error calling tool 'search_cdk_documentation': 'url'で失敗していた(2026年10月に解消): issue #3339で2026年5月4日に報告され、search_cloudformation_documentationも同じエラーで失敗していました。10月6日のissueコメントによると、原因は検索の裏側にあるAWS Knowledge MCPがurlのない項目を返したことで、そちら側の修正で解消済みです。クライアントの更新や設定変更は要らず、@latestの1.0.26でそのまま動くと説明されています。 - ツール名が長く、クライアントによってはセッション全体が壊れる:
get_cloudformation_pre_deploy_validation_instructionsは53字あります。issue #2395では、Amazon Bedrockの64字制限に、LibreChatが付ける_mcp_aws-iac-mcp-serverを足して76字になり、全ツールが使えなくなった例が報告されています。Claude Codeのmcp__<サーバー名>__<ツール名>の形に当てはめると、サーバー名をaws-iacにした場合で67字です。名前を短縮するPR #2541はマージされずにクローズされ、READMEも旧名のままです - Dockerイメージは自分でビルドする: READMEのDocker例は、事前に
docker build -t awslabs/aws-iac-mcp-server .を実行する前提です。一時的な認証情報は.envに書き、期限が切れたらホスト側で更新します
まとめ
テンプレートの検証と失敗の診断を、書き込み手段を持たないサーバーで済ませたいなら、このサーバーが合います。ただし起動クラッシュ(#4567)は依存に上限が付いた1.0.25以降で避けられ、検索エラー(#3339)も10月6日にクローズされました。バージョンを1.0.25以降に固定するか@latestのままにするかは、チームで決めておく価値があります。
自作のMCPサーバーでチームの手順を組み込みたい場合はMCPサーバー自作ガイド、他のインフラをMCP経由で扱う設計例はKubernetes MCPサーバー、AWS上でのClaude Code運用全般はClaude Platform on AWSが参考になります。