set setting reset

脂肪と糖にはたらくやつ

Claude Code に AWS が公開している MCP Server を追加する

AWS が公開している MCP Server 群は以下。 awslabs.github.io

今回は Claude Code が参照できるように設定追加を行う。
MCP Server が設定されているかを確認するコマンドは以下。

> /mcp 
  ⎿  No MCP servers configured. Run `claude mcp` to learn about how to configure MCP servers.

上記メッセージにあるように claude mcp コマンドを実行するとよさそうだ。

$ claude mcp --help
Usage: claude mcp [options] [command]

Configure and manage MCP servers

Options:
  -h, --help                                     Display help for command

Commands:
  serve [options]                                Start the Claude Code MCP server
  add [options] <name> <commandOrUrl> [args...]  Add a server
  remove [options] <name>                        Remove an MCP server
  list                                           List configured MCP servers
  get <name>                                     Get details about an MCP server
  add-json [options] <name> <json>               Add an MCP server (stdio or SSE) with a JSON string
  add-from-claude-desktop [options]              Import MCP servers from Claude Desktop (Mac and WSL only)
  reset-project-choices                          Reset all approved and rejected project-scoped (.mcp.json) servers within this project
  help [command]                                 display help for command

add を使うのがシンプルなようだが、https://awslabs.github.io/mcp/ にて公開されている JSON をリスペクトするために add-json を使うのがよさそうだ。
無邪気に以下のようにしてみる。

$ claude mcp add-json awslabs.aws-documentation-mcp-server '{
  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.aws-documentation-mcp-server@latest"],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "AWS_DOCUMENTATION_PARTITION": "aws"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}'
Invalid name awslabs.aws-documentation-mcp-server. Names can only contain letters, numbers, hyphens, and underscores.

名前に . があると怒られる。 . を削除する。

$ claude mcp add-json aws-documentation-mcp-server '{
  "mcpServers": {
    "awslabs.aws-documentation-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.aws-documentation-mcp-server@latest"],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "AWS_DOCUMENTATION_PARTITION": "aws"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}'
Invalid configuration: : Invalid input

ダメそう。色々試してみると command の箇所からだけでよさそうだった。

$ claude mcp add-json aws_documentation_server '{"command": "uvx", "args": ["awslabs.terraform-mcp-server@latest"], "env": {"FASTMCP_LOG_LEVEL": "ERROR", "AWS_DOCUMENTATION_PARTITION": "aws"}, "disabled": false, "autoApprove": []}'
Added stdio MCP server aws_documentation_server to local config

Claude に入って /mcp すると追加されていることが確認できる。

awslabs.terraform-mcp-server@latest を追加したので、 MCP Server を参照した回答になるのか試す。

terraform で S3 を実装するうえでのベストプラクティスを教えて下さい。

初手で参照してくれている模様。

結果は以下。

● TerraformでS3を実装する際のベストプラクティスは以下の通りです:

  リソース分離

  - aws_s3_bucketは基本のバケット作成のみに使用
  - 個別設定は専用リソースで管理:
    - aws_s3_bucket_versioning でバージョニング
    - aws_s3_bucket_server_side_encryption_configuration で暗号化
    - aws_s3_bucket_acl でアクセス制御
    - aws_s3_bucket_policy でバケットポリシー

  セキュリティ

  - デフォルトでプライベートアクセス設定
  - KMS暗号化を有効化(aws:kmsまたはAES256)
  - バージョニングを有効化してデータ保護
  - 適切なIAMポリシーとバケットポリシー設定

  命名規則

  - 小文字のみ使用(63文字以内)
  - bucket_prefixでユニーク名を自動生成
  - 一貫性のあるタグ付け

  ライフサイクル管理

  - aws_s3_bucket_lifecycle_configurationでコスト最適化
  - 古いバージョンの自動削除設定
  - ストレージクラス遷移(IA、Glacierなど)

  その他

  - force_destroy = trueは慎重に使用(データ完全削除)
  - CORSやロギングは専用リソースで設定
  - プロバイダーのdefault_tags活用で統一的なタグ管理