Claude Media
aws-iac-mcp-serverの使い方 — CloudFormationとCDKをMCPで検証する

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. 1

    uvとPythonを入れる

    uvをインストールし、uv python install 3.10を実行します。

  2. 2

    サーバーを登録する

    下のコマンドを、チームで共有したいなら--scope project付きで実行します。省略するとlocalスコープに入ります。

  3. 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@latest

v2.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が参考になります。

この記事を共有:XはてブLinkedIn