0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ClaudeCode に Terraform MCP Server と HashiCorp Agent Skills を入れる

0
Posted at

はじめに

HashiCorp から、AI で Terraform を書くときに使える公式のツール。

  • Terraform MCP Server:Terraform Registry を検索するツール
  • HashiCorp Agent Skills:Terraform の作法をまとめた手順書(Skill)

どちらも Claude Code にプラグインとして入れられます。それぞれ何ができるのかを実際に試してまとめてみました。

MCP と Skill

Terraform MCP Server HashiCorp Agent Skills
中身 Registry を検索するツール 9 個 手順書(SKILL.md)16 個
得意なこと 最新バージョン、引数、モジュール、ポリシーを調べる スタイル修正、テスト作成、モジュール分割などの作業
解決すること AI の知識が古い AI の書き方が自己流
動き方 Docker コンテナとして起動 作業に合わせて Claude が読み込む

導入方法

# Terraform MCP Server(Docker Desktop の起動が必要)
claude plugin install terraform@claude-plugins-official

# HashiCorp Agent Skills
claude plugin marketplace add hashicorp/agent-skills
claude plugin install terraform@hashicorp

MCP サーバーは docker run で起動するので、Docker Desktop が止まっていると接続に失敗することに注意です。

Terraform MCP Server でできること

Terraform MCP Server のツールは、調べる対象で分けると 5 種類です。HCP Terraform のトークン(TFE_TOKEN)がなくても、9 個すべてが使えました。

調べるもの ツール 例えばこう聞ける
provider のバージョン get_latest_provider_version 「aws provider の最新は?」
provider にあるもの get_provider_capabilities 「aws provider にはどんなリソースがある?」
リソースの使い方 search_providers / get_provider_details 「aws_s3_bucket_versioning の引数は?」
公開モジュール search_modules / get_module_details / get_latest_module_version 「VPC を作るモジュールはある?」
ポリシー search_policies / get_policy_details 「AWS 向けの CIS ポリシーはある?」

実際に呼び出してみた結果です(2026-10-06 時点)。

聞いたこと 返ってきた内容
aws provider の最新 6.67.0
aws provider にあるもの リソース 1722 個、データソース 680 個、Action 12 個、Ephemeral Resource 11 個
aws_s3_bucket_versioning の引数 bucket、versioning_configuration、mfa などの表と、「Enabled から Disabled には戻せない」といった注意点
VPC のモジュール terraform-aws-modules/vpc/aws 6.7.3(約 2.2 億ダウンロード)など
CIS のポリシー CIS-Policy-Set-for-AWS-Terraform(Sentinel のポリシー集)

Agent Skills でできること

16 個の Skill を用途で分けると、次のようになります。Terraform を書く人向けは上の 2 グループで、残りは provider を開発する人向けです。

用途 Skill できること
構成を書く terraform-style-guide Style Guide に沿って書く・直す
terraform-test .tftest.hcl のテストを書いて terraform test を実行する
refactor-module 1 ファイルの構成を再利用できるモジュールに分ける
azure-verified-modules Azure の公式認定モジュールの要件に沿って書く
運用・統制 terraform-search-import 既存のクラウドリソースを探し、まとめて Terraform 管理に取り込む
terraform-stacks Terraform Stacks の構成(.tfcomponent.hcl など)を書く
terraform-policy Terraform Policy を書く・テストする、Sentinel から変換する
provider 開発 new-terraform-provider ほか 8 個 provider の雛形、リソース実装、ドキュメント、テストなど

Skill 名を指定しなくても、「main.tf をレビューして、作法どおりに直して」と頼むだけで Claude が terraform-style-guide を自分で読み込みました。 ここからは、書く人向けの 2 つを試した結果です。

terraform-style-guide:作法どおりに直してくれる

わざと崩して書いた S3 バケットの main.tf を、次の指示でレビューしてもらいました。

/terraform:terraform-style-guide main.tf をスタイルガイドに沿ってレビューして修正して。

1 ファイルだった構成が、Style Guide の推奨どおりに用途別のファイルへ分かれました。

直された点 Before After
ファイル構成 main.tf だけ terraform.tf / providers.tf / variables.tf / outputs.tf / main.tf
リソース名 MyBucket、v main(小文字とアンダースコア)
変数 variable "env" {} type = string と description を追加
バージョン固定 なし required_version と aws ~> 6.0 を追加

パブリックアクセスブロックや暗号化のように挙動が変わる変更は、「今回は追加していない」と提案だけにとどめていました。 勝手に構成を変えないのは安心できます。

terraform-test:テストを書いて実行まで

Terraform のテストは、「plan した結果がこうなっているはず」という確認を .tftest.hcl に書くしくみです。次のように頼みました。

/terraform:terraform-test この構成のテストを書いて。AWS の認証情報は使えないので mock_provider で動くようにし、バケット名に env が入ること・バージョニングが Enabled であること・env が空文字ならエラーになること を確認したい。最後に terraform test を実行して。

mock_provider(AWS につながない偽の provider)を使ったテストが作られ、variables.tf には空文字を弾く validation が追加されました。

tests/main_unit_test.tftest.hcl(抜粋)
mock_provider "aws" {}

variables {
  env = "dev"
}

run "versioning_is_enabled" {
  command = plan

  assert {
    condition     = aws_s3_bucket_versioning.main.versioning_configuration[0].status == "Enabled"
    error_message = "Bucket versioning should be Enabled"
  }
}

run "empty_env_is_rejected" {
  command = plan

  variables {
    env = ""
  }

  expect_failures = [var.env]
}

Claude が terraform init と terraform test まで実行し、3 件とも pass しました。

テストが本当に効いているかを確かめるため、バージョニングを Suspended に書き換えて再実行しました。結果は versioning_is_enabled だけが fail になり、テストが効いていることも確認できました。

  run "bucket_name_includes_env"... pass
  run "versioning_is_enabled"... fail
  run "empty_env_is_rejected"... pass
Failure! 2 passed, 1 failed.

まとめ

MCP が情報の鮮度を、Skill が書き方の作法を補ってくれます。 どちらを使うかは Claude が作業に合わせて判断してくれるので、両方入れておくだけで良さそうです。

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?