Claude Code GitHub ActionsからTerraform MCPサーバーを使ってHCP Terraformを操作してみた

Claude Code GitHub ActionsからTerraform MCPサーバーを使ってHCP Terraformを操作してみた

2025.11.17

先日、Claude Code GitHub Actions上でTerraform MCPサーバーを使用してみました。

https://dev.classmethod.jp/articles/claude-code-github-actions-setup-terraform-mcp-server/

Terraform MCPサーバーはHCP Terraformを操作するツールも提供しています。

今回は、Claude Code GitHub ActionsからTerraform MCPサーバー経由でHCP Terraformを操作してみました。

https://dev.classmethod.jp/articles/terraform-mcp-hcp-terraform-alignment/

やってみた

Claude Code GitHub ActionsにTerraform MCPサーバーを追加

上記のブログの手順で、Terraform MCPサーバーを追加します。

HCP Terraformにアクセスするには、追加でHCP Terraformの認証情報(APIトークン)をGitHubリポジトリにセットする必要があります。

GitHub Actions SecretsにHCP TerraformのAPIトークンをセット

以下の手順で、HCP Terraformの認証情報(APIトークン)を準備します。

https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/api-tokens

GitHub Actions SecretsにAPIトークンをTFE_TOKENとしてセットします。

GitHubリポジトリ -> Settings -> Secrets And variables -> Actions -> New repository secretの順番に選択します。

Actions_secrets_·_msato0731_cc-hcptf-demo.png

以下の情報をセットして、Add secretを選択します。

  • Name: TFE_TOKEN
  • Secret: HCP Terraform APIトークン

Add_Actions_secret_·_msato0731_cc-hcptf-demo.png

Claude Code実行環境にHCP Terraform APIトークンを環境変数としてセット(ワークフローファイルの修正)

Claude Code GitHub Actions上で、HCP Terraform APIトークンを利用できるようにワークフローファイルに記述を追加します。

.github/workflows/claude.yml
name: Claude Code

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]
  issues:
    types: [opened, assigned]
  pull_request_review:
    types: [submitted]

jobs:
  claude:
    if: |
      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
      (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
      (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: read
      issues: read
      id-token: write
      actions: read # Required for Claude to read CI results on PRs
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 1

      - name: Run Claude Code
        id: claude
        uses: anthropics/claude-code-action@v1
        with:
          claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
          claude_args: |
            --allowed-tools "mcp__terraform__list_workspaces"
        env:
          additional_permissions: |
            actions: read
+          TFE_TOKEN: ${{ secrets.TFE_TOKEN }}

allowed-toolsではWorkspaceの一覧を確認するツールだけ許可しました。

以下を参考に、必要に応じて許可するツールを追加してください。

https://developer.hashicorp.com/terraform/mcp-server/reference

Terraform MCPにHCP Terraform APIトークンをセット(.mcp.jsonの修正)

最後にTerraform MCPサーバーにAPIトークンを設定します。

.mcp.json
{
  "mcpServers": {
    "terraform": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
+        "-e", "TFE_TOKEN=${TFE_TOKEN}",
        "hashicorp/terraform-mcp-server:0.3.2"
      ]
    }
  }
}

https://github.com/hashicorp/terraform-mcp-server?tab=readme-ov-file#installation

動作確認

Claude Code GitHub Actionsを使って、HCP TerraformのWorkspace一覧を取得してみます。

GitHub上のIssueコメントで以下のプロンプトを実行しました。

@claude

HCP Terraform Org <HCP Terraform Organization名>のWorkspace一覧を取得してください。

以下の応答があり、正常にHCP Terraform上のWorkspace一覧を取得できました。

テスト_Terraform_MCPサーバー_·_Issue__31_·_msato0731_cc-hcptf-demo.png

テスト_Terraform_MCPサーバー_·_msato0731_cc-hcptf-demo_1e1bc41.png

おわりに

以前Claude Code GitHub ActionsとHCP Terraformを組み合わせたTerraformワークフローを考えてみました。

https://dev.classmethod.jp/articles/hahitalks-japan-2025-genai-terraform-workflow/

Claude CodeにPlanやポリシーチェックの結果をどうやって渡すかに悩みました。

HCP Terraform上でPlan・Applyを実行するため、GitHubで実行しているClaude Codeは内容を確認できないためです。(Pull RequestにCIの結果として表示されますが、詳細はリンクを開かないと見れない)

Claude Code GitHub Actions上でTerraform MCPサーバー経由でHCP Terraformにアクセスすればこの課題を解決できそうです。

Runの結果詳細から、Claude Codeでコード修正することも今後試してみたいと思います。

この記事をシェアする

FacebookHatena blogX

関連記事