/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

Terraform MCP ServerをClaude Codeに設定する手順(Docker / バイナリ)

Terraform MCP Serverとは

Model Context Protocol(MCP)を使って、AIエージェントがTerraformエコシステムと連携するためのサーバーです。Claude CodeなどのMCP対応ツールから、Terraform Registryの最新プロバイダー/モジュール情報にリアルタイムアクセスできます。

現在のステータスはベータ版。本番環境での利用は非推奨です。

v0.4.0で何が変わったか

項目 内容
バージョン v0.4.0
リリース日 2025-01-22
主な追加 Stacksサポート(list_stacks, get_stack_details)、ポリシーセット管理、toolsフラグ

使えるツール

認証なしで使えるRegistryツールがこのあたり。

ツール名 説明
search_providers プロバイダーをサービス名で検索
get_provider_details プロバイダーの完全ドキュメント取得
get_latest_provider_version プロバイダーの最新バージョン取得
search_modules モジュール名・機能で検索
get_module_details モジュールの詳細情報取得
get_latest_module_version モジュールの最新バージョン取得
search_policies Sentinelポリシー検索
get_policy_details ポリシーの詳細ドキュメント取得

Terraform Cloud/Enterprise連携用のツール(ワークスペース管理、実行操作、Stacks管理など22種類以上)もありますが、こっちは TFE_TOKEN が必要です。

toolsフラグで選択的に有効化(v0.4.0新機能)

全ツールを有効にする必要はなくて、用途に応じて絞れます。

用途 toolsetフラグ 備考
公開Registryのみ検索 --toolset=registry 認証不要。軽量
TFE/TFCプライベートRegistry --toolset=registry-private TFE_TOKEN 必須
TFE/TFC実行操作(plan/apply) --toolset=terraform-operations TFE_TOKEN 必須

ツール名で個別指定もできます。

--tools=search_providers,get_module_details

Claude Codeへの設定手順

Docker(推奨)

.claude/mcp.json または ~/.claude.jsonmcpServers に追加します。

公開Registryのみ(認証不要):

{
  "mcpServers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "hashicorp/terraform-mcp-server:v0.4.0",
        "--toolset=registry"
      ]
    }
  }
}

HCP Terraform / TFE連携ありの場合:

{
  "mcpServers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "TFE_ADDRESS=https://app.terraform.io",
        "-e", "TFE_TOKEN",
        "hashicorp/terraform-mcp-server:v0.4.0"
      ]
    }
  }
}

-e TFE_TOKEN(値なし)は、シェルの環境変数 TFE_TOKEN をコンテナに引き渡すDockerの標準構文です。-e TFE_TOKEN=<値> のようにmcp.jsonにトークンを直接書くのは絶対やめてください。

事前にシェル側で環境変数をセットしておく必要があります。

# direnvの場合
export TFE_TOKEN="$(op read 'op://vault/hcp-terraform/token')"

# シェル直接の場合(一時的な利用のみ)
export TFE_TOKEN="tfp-xxxx..."

バイナリ直接実行

Dockerが使えない環境ならバイナリでも動きます。

# リリースページからダウンロード
# https://releases.hashicorp.com/terraform-mcp-server

chmod +x terraform-mcp-server
sudo mv terraform-mcp-server /usr/local/bin/
{
  "mcpServers": {
    "terraform": {
      "command": "/usr/local/bin/terraform-mcp-server",
      "args": ["--toolset=registry"]
    }
  }
}

HashiCorp Agent Skills

Terraform MCP Serverと合わせて使えるClaude Code向けスキル集も出ています。HCLコード生成やモジュールリファクタリングなどが含まれています。

スキル 説明
terraform-code-generation HashiCorpスタイルのHCLコード生成
terraform-module-generation モジュール開発・リファクタリング
terraform-provider-development プロバイダー開発支援
packer-builders マシンイメージ構築
packer-hcp HCP Packerレジストリ統合

インストール方法や利用可能なスキルの詳細は GitHubリポジトリ を確認してください。

注意点

  • ベータ版のため、ツール仕様が予告なく変更される可能性があります
  • 本番TFE/TFCに接続する場合は、読み取り専用トークンでの検証を推奨
  • TFE_TOKEN は環境変数で渡す。mcp.jsonにハードコードしない
  • ローカルホスト(127.0.0.1)での実行を推奨

まとめ

Terraform MCP Serverを入れると、Claude Codeの中からプロバイダーやモジュールの最新ドキュメントを直接参照できます。HCL書くときにRegistryのページを行ったり来たりしなくてよくなるのが地味に便利。

Stacksサポートが入ったので、TFC/TFE使ってる人はそっちも試す価値あり。ただしベータ版なので、本番環境への接続は様子見が無難です。

参考