Terraform MCP Server 使ってみた

こんにちは!プラットフォームエンジニアリングチームのマクシィです! 業務ではGoogle CloudやAWSを使用してシステムの設計・構築・運用・保守などを行っています!

この記事では、AIにTerraformに関する機能を追加する「Terraform MCP Server」について、メリットや具体的な導入手順について解説します。 実際に導入してPoCとして動作確認を行った結果も記載しています。読者の皆様にとってTerraform MCP Serverの有用性を判断する一助となれば幸いです!    

🎯この記事の対象読者

  • Terraformを業務で利用している方
  • AIエージェントの活用に興味がある方
  • CLIベースの開発を行っている方

✨はじめに

Terraform MCP Serverは、AIに様々な機能を追加するMCP Serverの1種です。 Terraformを開発しているHashiCorpの公式リポジトリで公開されています。

github.com

2026年3月時点のバージョン(v0.4.0)では、導入することでTerraformに関する以下の機能を追加できます。

  • Terraform Registryとの連携 ⇒Terraform公式・コミュニティの最新情報を常に参照し、より正確で質の高いコードを生成できます。
  • HCP Terraformとの連携 ⇒安全かつ共同作業に適したTerraformの実行管理(プランの作成、ワークスペースの確認など)をAIに行わせることが可能になります。

MCPサーバーについてはこちらをご参照ください。

modelcontextprotocol.io      

📦Terraform MCP Server を導入してみよう!

早速導入していきましょう! 今回は以下のような環境でPoCを行いました。今回の検証ではVS Code上で動作するGemini CLIを利用しています。モデルごとに設定方法が異なる場合がありますのでご注意ください! また、今回はOSとしてLinuxを使用しましたが、Windowsで同様の環境を構築する場合はWSL2やDocker Desktopを利用することが出来ます。

検証時の動作環境・バージョン情報

  • OS: Linux (Ubuntu 24.04)
  • エディタ: VS Code (最新版)
  • Go: 1.25.7
  • Gemini CLI: 0.27.0
  • terraform-mcp-server: v0.4.0
  • Node.js: 20.11.0
  • npm: 10.2.4

事前にインストールが必要なもの(Gemini CLIに導入する場合)

※特別な理由が無ければ、最新バージョンをインストールします。

  • Go:(ソースから導入する場合)
  • Docker:(Dockerを用いた導入をする場合)
  • Gemini CLI: 最新版を公式インストールガイドに従ってインストール。
  • Node.js:(Gemini CLIのインストールに必要。)
  • npm:(Gemini CLIのインストールに必要)

ステップ1: Terraform MCP Serverのインストール

まず、公式リポジトリを参照して、Terraform MCP Server本体をインストールします。 今回のPoC環境はDockerで動作しておりDinD(Docker in Docker)が不可という制約がありました。そのため、MCPをDockerで起動することができなかったので、代替手段としてGo言語によるソースからの起動を試しました。 (Dockerを利用する場合はDockerHubの公式イメージを利用します。)

手順:

以下のコマンドをターミナルで実行します。

go install github.com/hashicorp/terraform-mcp-server@latest

このコマンドは、GitHubから自動的にソースコードをダウンロードし、ビルド、インストールまでを行います。 これにより、go-workspace/bin ディレクトリ配下に terraform-mcp-server という実行可能ファイルが作成されます。この後のステップで、このファイルのパスをGemini CLIに設定します。

作成されたMCPサーバーの実行ファイル

ステップ2: Gemini CLI への Terraform MCP Server の登録

次に、Gemini CLIにTerraform MCP Serverを登録します。ここでは、Gemini CLIの起動時にMCPサーバーのプロセスも自動的に開始されるように設定します。これにより、手動でサーバーを起動する手間が省けます。

~/.gemini/settings.json ファイルに、先ほどビルドした terraform-mcp-server の実行可能ファイルのパスを指定します。Gemini CLIは起動したときこのファイルを読み込み、パスで指定したMCPサーバーを子プロセスとして自動起動してくれます。MCPサーバーの名前は任意のものを設定できますが、今回はわかりやすいようにterraformとしました。

{
  "hasSeenIdeIntegrationNudge": true,
  "ide": {
    "enabled": true
  },
  "security": {
    "auth": {
      "selectedType": "vertex-ai"
    }
  },
  "mcpServers": {
    "terraform": {
      "command": "★step1でビルドしたterraform-mcp-serverのパスを入力★",
      "args": []
    }
  }
}

※今回のPoCでは、VertexAIからGemini CLIを呼び出しているのでこのような設定となっています。

設定後、geminiコマンドでGemini CLIを起動し、/mcp コマンドを実行してMCPサーバーが正しく登録されているか確認しましょう。

MCPサーバーが認識されている

Configured MCP servers の中に 先ほど設定したMCPサーバー名(今回ではterraform) が表示されていれば、正しく設定できています。これで、Gemini CLIからTerraform MCP Serverを利用する準備が整いました。最後のステップとして、HCP Terraformと連携するための認証情報を設定します。

ステップ3: HCP Terraformとの連携設定 (TFEトークン)

HCP Terraformと連携するために、APIトークンを設定します。 APIトークンの設定方法の参考:https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/api-tokens

今回の検証ではセキュリティの観点から、トークンを直接コードに記述するのではなく、環境変数として読み込ませました。※実運用ではシークレット管理ツールを利用するなどのよりセキュアな方法をお勧めします。

作業ディレクトリの配下に .env ファイルを配置し、HCP Terraformのトークンを記述します。Gemini CLIは起動時にこのファイルを自動で読み込み、環境変数を設定してくれます!

公式ドキュメントによると、以下のディレクトリに配置された.env ファイルを自動で読み込んでくれます。(以下は翻訳された文章です)

CLIは環境変数を.envファイルから自動的に読み込みます。読み込み順序は次のとおりです。

.env現在の作業ディレクトリにあるファイル。
見つからない場合は、 .envファイルが見つかるか、プロジェクトのルート(.gitフォルダで識別される)またはホームディレクトリに到達するまで、親ディレクトリを遡って検索します。
~/.envそれでも見つからない場合は、 (ユーザーのホームディレクトリ内を)検索します。

今回の検証では.envファイルは、ホームディレクトリ直下に配置しました。 .envファイルには以下のようにTFEトークンを記載しました。

.env ファイルの例:

TFE_TOKEN=★ここにHCP Terraformから取得したTFEトークンを記載★

これで全ての準備が整いました。      

🤖Terraform MCP Server を使ってみよう! (PoC実施内容)

Terraform MCP Server を導入したAIエージェントとの対話を通じて、どのような事が可能になるかを見ていきます!

① Terraform Registry との連携

Terraform MCP Server を導入することで、AIエージェントはTerraformに関する応答を行うとき、Terraform Registryの情報を参照出来るようになります。Terraform RegistryはHashiCorpが運営するTerraformの公式プロバイダーやモジュールを検索・共有できるプラットフォームです。Terraform MCP Serverはsearch_modulesget_module_detailsなどのツールを用いてTerraform Registryから新鮮な情報を取得できます。

対話例:「AWSの最新S3モジュールのサンプルコードを教えて欲しい」

AIエージェントがMCPサーバーのsearch_modulesツールやget_module_detailsツールを利用し最適なモジュールを検索し詳細を取得します。

search_modulesツールを利用して情報を取得

get_module_detailsツールを利用してモジュールの詳細情報を取得

そのまま、main.tfとしてサンプルコードを作成してくれました。

作成されたmain.tf

Terraform Registryの新鮮な情報を参照したコードを入手できました。

② HCP Terraform との連携

組織でTerraformを利用する場合、ガバナンス強化やCI/CD等を目的としてHCP Terraformを使用しているケースも多いかと思います。Terraform MCP Server を導入することで、AIエージェントはHCP Terraformのリソースにもアクセスすることができます。先ほど設定した認証情報 (TFEトークン)を使用してアクセスし、list_workspacescreate_workspaceなどのツールを用いて権限に応じた操作を行うことが出来ます。

対話例1:HCP Terraform 組織のworkspaces一覧を取得したい

AIエージェントがMCPサーバーのlist_workspacesツールやget_module_detailsツールを利用し、指定されたオーガニゼーションに存在するworkspaces一覧を取得できました。

list_workspacesツールを利用し、ワークスペース一覧を取得
出力されたワークスペースのリスト

対話例2:HCP Terraform 組織にworkspacesを作成したい

Default Projectを指定して、workspacesを作成する指示を行いました。 AIエージェントがMCPサーバーのlist_terraform_projectsツールやcreate_workspaceツールを利用し、指定したworkspacesを作成しました。

Default Projectにワークスペースを作成させる指示
Gemini CLIが複数のツールを利用し、ワークスペースを作成
実際にHCP TerraformのDefault Project上にワークスペースが作成されている

このように、AIエージェントへの自然言語ベースでのやりとりにより、HCP Terraformのリソースを操作できました。      

📝検証した所感

導入から使用まで

AIエージェントにMCPサーバーを導入するのは今回が初めてだったのですが、その導入のしやすさと拡張性の高さには正直驚かされました。AIエージェントが動く環境があれば、無料で簡易に導入できるという点で敷居は低く感じられました。

Terraform Registry との連携について

通常の検索では古いバージョンの情報が引っかかってしまうこともあるので、信頼できる新鮮なソースを参照した応答が出来る点は良いと思います。 AIエージェントを利用したTerraformコーディングにおいて、コーディングの精緻化による省力化や、Terraform開発の敷居の低下が期待できそうです。 実務観点ではコードレビューの工数削減や、ベストプラクティスの遵守が維持しやすくなる等のメリットが期待できます。

HCP Terraform との連携について

AIエージェントをSaaS製品であるHCP Terraformの環境に立ち入らせることが出来るのは魅力を感じます。AIエージェントにリソースを操作させるだけでなく、デバッグや環境調査にも活用できそうです。 実務観点では調査時間短縮による工数の削減が期待できます。 一方、実務に活用する際の権限設定や、シークレット管理については注意が必要だと思います。今回のPoCでのシークレット(TFEトークン)は.envファイルで外部化していましたが、エンタープライズな運用ではシークレット管理ツールを用いたより安全な管理が検討されるでしょう。      

✅まとめ

今回はTerraform MCP ServerをVS Code上で動くGemini CLIに導入し、PoCを目的として動作検証を行いました。 Terraform MCP Serverを導入することで、AIエージェントがTerraform Registryの最新情報を参照した応答を行えることや、HCP Terraformのリソースの操作・閲覧を行えることを確認することが出来ました。 特にAIエージェントがHCP Terraform上のリソースを探索できるという点については、デバッグなどの実運用にも活かせる可能性を感じています。

今回の経験をきっかけに、これからもMCP関連の動向にはしっかりアンテナを張っていきたいと思います。実際の運用で「これなら使える!」というシーンをどんどん開拓していくのが楽しみです!

補足:参考資料