mcpField
T
tfmcp: Terraform Model Context Protocol Tool

tfmcp: Terraform Model Context Protocol Tool

ローカル
crates.ioクラウド・インフラ3724 週間前に更新

tfmcp: Terraform Model Context Protocol Tool について

tfmcp は、MCP を通じてローカルの Terraform ワークフローを実行するコマンドラインツールです。AI アシスタントがプロジェクトを確認し、保存済みプランをレビューして承認済みの変更を適用できます。プランレビューと明示的な権限チェックを重視し、レジストリや HCP Terraform / TFE 向けのツールも備えています。

主な機能

  1. 01構成の読み取りとエントリポイントの検出
  2. 02プランの保存と plan_id による適用
  3. 03適用と破棄に明示的な権限を要求
  4. 04機密出力のマスクと状態アドレスの検証
  5. 05stdio と Streamable HTTP のトランスポート対応

活用シーン

  1. 01AI アシスタントによる Terraform プランのレビューと PR サマリー作成
  2. 02権限を管理した上での承認済みインフラ変更の適用
  3. 03変更前の状態の安全性とドリフトリスクの確認

MCP 対応

tfmcp は MCP サーバーとして、プラン、適用、状態、分析などの Terraform 関連ツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"tfmcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

tfmcp: Terraform Model Context Protocol ツール

Trust Score

⚠️ このプロジェクトには本番環境で利用できるセキュリティ機能が含まれていますが、現在も開発が進行中です。セキュリティシステムは強固な保護を提供しますが、本番環境ではすべての操作を慎重に確認してください。⚠️

tfmcp は、Model Context Protocol(MCP)を通じてローカルの Terraform ワークフローを実行します。 AI アシスタントがプロジェクトを調査し、実行を準備し、保存済みのプランを確認して、 同じプランを適用し、結果を確認できるようにします。レジストリおよび HCP/TFE ツールは、 これらのローカルワークフローをサポートします。

🎮 デモ

Claude Desktop での tfmcp の動作をご覧ください。

Claude Desktop での tfmcp デモ

  • Terraform 設定ファイルの読み込み
  • Terraform プランの出力の分析
  • Terraform 設定の適用
  • Terraform の状態の管理
  • Terraform 設定の作成と変更

🎉 現在のリリース

tfmcp v0.2.4 が現在のリリースです。

cargo install tfmcp --version 0.2.4
v0.2.4 の新機能
  • apply と同じ保存済みプランおよび権限チェックを使用した、レビュー済みの destroy プラン
  • 64 プランの上限を再び利用できるようにする、保存済みプランの一覧表示と破棄
  • apply 結果、失敗/不明な結果、および復旧ガイダンスの保持
  • 全出力クエリと名前指定の出力クエリの両方に対する、機密出力の秘匿
  • RMCP 3.5.0、依存関係とイメージの更新、Rust 1.88 の MSRV を維持

機能

分野機能
ローカル Terraform検証、フォーマット、plan/apply ワークフロー、インポートのガイダンス、出力、プロバイダー、依存関係グラフ、refresh-only フロー、およびガード付きの状態操作
リポジトリ分析エントリーポイント/プロジェクトの検出、設定分析、品質チェック、セキュリティチェック、モジュールの健全性、プランレビュー、ドリフト/状態の安全性の調査
レジストリHashiCorp 互換のエイリアスを利用した、パブリック/プライベートのプロバイダー、モジュール、ポリシーの検索
HCP Terraform / TFE組織、プロジェクト、ワークスペース、実行、プラン、apply、変数、ポリシーセット、変数セット、タグ、スタック、およびゲート付き操作
MCP のデプロイstdio と Streamable HTTP、MCP 2026-07-28 のディスカバリー、構造化されたツール結果、キャッシュヒント、ツールセット、リソース、ヘルス/メトリクス、セッション、Host/Origin 検証、レート制限、TLS の設定、監査ログ
パッケージングCargo、Docker/OCI メタデータ、MCP Registry メタデータ、Rust Edition 2024

インストール

ソースから
# Clone the repository
git clone https://github.com/nwiizo/tfmcp
cd tfmcp

# Build and install
cargo install --path .
Crates.io から
cargo install tfmcp
Docker を使用
# Clone the repository
git clone https://github.com/nwiizo/tfmcp
cd tfmcp

# Build the Docker image
docker build -t tfmcp .

# Run the container
docker run -it tfmcp

要件

  • Rust 1.88.0 以降(Rust Edition 2024)
  • Terraform CLI 1.15.8 がインストールされ、PATH から利用できること
  • MCP 互換の AI クライアント(例:Claude Desktop または Codex)
  • Docker(任意。コンテナでデプロイする場合)

使用方法

$ tfmcp --help
✨ A CLI tool to manage Terraform configurations and operate Terraform through the Model Context Protocol (MCP).

Usage: tfmcp [OPTIONS] [COMMAND]

Commands:
  mcp       Launch tfmcp as an MCP server
  analyze   Analyze Terraform configurations
  help      Print this message or the help of the given subcommand(s)

Options:
  -c, --config <PATH>    Path to the configuration file
  -d, --dir <PATH>       Terraform project directory
  -V, --version          Print version
  -h, --help             Print help
Docker を使用

Docker を使用する場合は、次のように tfmcp コマンドを実行できます。

# Run as MCP server (default)
docker run -it tfmcp

# Run with specific command and options
docker run -it tfmcp analyze --dir /app/example

# Mount your Terraform project directory
docker run -it -v /path/to/your/terraform:/app/terraform tfmcp --dir /app/terraform

# Set environment variables
docker run -it -e TFMCP_LOG_LEVEL=debug tfmcp
Claude Desktop との統合

Claude Desktop で tfmcp を使用するには、次の手順に従います。

  1. まだインストールしていない場合は、tfmcp をインストールします。

    cargo install tfmcp
    

    代わりに、Docker を使用することもできます。

    docker build -t tfmcp .
    
  2. インストール済みの tfmcp 実行ファイルのパスを確認します。

    which tfmcp
    
  3. 次の設定を ~/Library/Application\ Support/Claude/claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "tfmcp": {
      "command": "/path/to/your/tfmcp",  // Replace with the actual path from step 2
      "args": ["mcp"],
      "env": {
        "HOME": "/Users/yourusername",  // Replace with your username
        "PATH": "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
        "TERRAFORM_DIR": "/path/to/your/terraform/project"  // Optional: specify your Terraform project
      }
    }
  }
}

Claude Desktop で Docker を使用する場合は、次のように設定できます。

{
  "mcpServers": {
    "tfmcp": {
      "command": "docker",
      "args": ["run", "--rm", "-v", "/path/to/your/terraform:/app/terraform", "tfmcp", "mcp"],
      "env": {
        "TERRAFORM_DIR": "/app/terraform"
      }
    }
  }
}
  1. Claude Desktop を再起動し、tfmcp ツールを有効にします。

  2. ~/terraform が存在しない場合、tfmcp はサンプルの Terraform プロジェクトを自動的に作成します。これにより、Claude はすぐに Terraform で作業を開始できます。このサンプルプロジェクトは、このリポジトリの example/demo ディレクトリに含まれる例を基にしています。

ローカルの plan/apply ワークフロー

tfmcp --dir /path/to/project mcp --toolsets terraform から始めます。 デフォルトのツールセットは準備とプランレビューをサポートします。terraform ツールセットでは、初期化とゲート付きのローカル書き込みも利用できます。

  1. prepare_terraform_change を呼び出して、選択したディレクトリ、Terraform のバージョン、ワークスペース、バックエンド、構成の有効性、状態の読み取り可否を確認します。 ready は、確認した前提条件を満たしていることを意味します。入力変数とプロバイダーの認証情報は、実際のプランで確認されます。必要に応じて init_terraform で初期化し、その後、準備状況を再度確認します。
  2. {} または、たとえば {"var_files":["environment.tfvars"]} を指定して get_terraform_plan を呼び出します。結果には、plan_id、target、created_at、has_changes、および秘匿化された Terraform JSON の plan 文字列が含まれます。 リソースの置換アドレスには replace を、状態を変更せずにドリフトをプレビューするには refresh_only:true を使用します。
  3. 返された plan_id を analyze_plan、review_terraform_plan、summarize_plan_for_pr に渡します。これらの呼び出しでは保存済みの結果を再利用します。ID を省略すると、新しいプランが作成されます。レビュー結果は参考情報であり、適用を許可するものではありません。
  4. 変更をレビューして承認した後、{"plan_id":"<returned ID>","auto_approve":true} を指定して apply_terraform を呼び出します。サーバーで TFMCP_ALLOW_DANGEROUS_OPS=true と TFMCP_ALLOW_AUTO_APPROVE=true の両方が事前に設定されている必要があります。構成ファイルがその後編集されていても、適用される変更は保存済みのプランによって決まります。
  5. 適用結果の success、status、exit_code、diagnostics、state_verified、recovery.next_steps を確認します。get_terraform_plan({"plan_id":"<returned ID>"}) で、プランの最終ステータスと保持されている apply_result を取得します。失敗またはタイムアウトした場合は、状態を確認して新しいプランを作成してください。試行済みの ID は再度適用できません。

v0.2.2 からの移行: apply_terraform には plan_id が必要です。auto_approve のみを指定した呼び出しは、説明付きのエラーを返すようになりました。Terraform は対話型入力を受け取らないため、呼び出し前にクライアント側で承認を行います。

レビュー済みの破棄を行う場合は、get_terraform_plan({"destroy":true}) でプランを作成し、その plan_id をレビューしてから、その ID と auto_approve:true を指定して destroy_terraform を呼び出します。適用に関する両方の権限に加え、サーバーで TFMCP_DELETE_ENABLED=true も設定されている必要があります。破棄プランを apply_terraform に渡した場合も、同じ権限が適用されます。destroy は refresh_only または replace と併用できません。v0.2.3 からの移行: destroy_terraform には保存済みの破棄プランが必要になりました。未レビューのプランを作成したり、プロンプトを待ったりすることはありません。

list_terraform_plans を使用すると、保持されている ID とそのターゲットやステータスを確認できます。不要なプランの一時ファイルを削除して容量を解放するには、discard_terraform_plan({"plan_id":"<ID>"}) を使用します。破棄してもインフラストラクチャの変更、操作のキャンセル、適用のロールバックは行われません。失敗または不明な結果の記録を削除する前に、必ず確認してください。これらのツールは、デフォルトと Terraform の両方のツールセットで利用できます。

保存済みプランはプライベートな一時ディレクトリに保存され、プロジェクト、ワークスペース、初期化済みバックエンドのメタデータ、Terraform のバージョン、プロバイダーのロックファイルに関連付けられます。プラン ID が有効なのは現在のサーバープロセスの実行中のみで、保持できるプランは最大 64 件です。通常のサーバー終了時には一時ファイルが削除されます。failed は Terraform がゼロ以外の終了コードを返したことを意味し、一部の変更が適用されている可能性があります。outcome_unknown は、タイムアウトやキャンセルを含め、確定的な終了結果を取得できなかったことを意味します。どちらの場合も同じプランを再適用できず、復旧手順が示されます。操作が停止したことを確認し、記録されたターゲットと実際のリソースを調べ、原因を解決してから、新しいプランを生成してレビューしてください。ロールバックも自動再試行も行われません。結果を保持する前にリクエストがキャンセルされた場合、apply_result は null になります。状態の検証ではリソースアドレスを確認しますが、すべての属性値や出力値は確認しません。 ステータスの取得では、進行中の操作が終了するまで待機します。このリリースでは、リアルタイムの進捗確認と再起動後の復旧には対応していません。

MCP ツール

tfmcp は AI アシスタント向けに、以下の MCP ツールを提供します。

Terraform の主要な操作
ツール説明
init_terraformTerraform の作業ディレクトリを初期化します
get_terraform_plan保存済みのプランを生成するか、プラン ID を指定してマスキング済みの結果とステータスを取得します
list_terraform_plans保存済みのプラン ID、対象、ステータス、削除フラグを一覧表示します
discard_terraform_plan不要な保存済みプランを削除し、保持容量を解放します
analyze_plan新機能 リスクスコアと推奨事項を使ってプランを分析します
apply_terraformレビュー済みの保存済みプラン ID を適用し、状態のリソースアドレスを検証します
destroy_terraform削除の明示的な許可を伴って、レビュー済みの保存済み削除プランを適用します
validate_terraform設定構文を検証します
validate_terraform_detailedガイドラインに沿った詳細な検証を行います
get_terraform_state現在の状態を表示します
analyze_state新機能 ドリフト検出を使って状態を分析します
review_terraform_planプランのリスク、ブロッカー、破壊的変更、推奨事項をレビューします
summarize_plan_for_prPR コメント用のプラン概要を Markdown 形式で生成します
run_terraform_quality_checksCI に適した検証、モジュールの健全性、ガイドライン、ロックファイルのチェックを実行します
inspect_state_safety状態の読み取り可否、ドリフトのリスク、ロックファイルのステータス、ブロッカーを調査します
detect_drift_candidatesインフラストラクチャを変更せずに、読み取り可能な状態からドリフト候補を検出します
prepare_terraform_changeブロッカー、警告、推奨される変更手順を生成します
list_terraform_resources管理対象のすべてのリソースを一覧表示します
set_terraform_directoryアクティブなプロジェクトディレクトリを変更します
ワークスペースと状態(v0.1.9)
ツール説明
terraform_workspace新機能 ワークスペースを管理します(一覧表示、表示、新規作成、選択、削除)
terraform_import新機能 既存のリソースをインポートします
terraform_taint新機能 リソースに taint を設定/解除します
terraform_refresh新機能 状態を更新します
コードと出力(v0.1.9)
ツール説明
terraform_fmt新機能 コードをフォーマットします
terraform_graph新機能 依存関係グラフを生成します
terraform_output名前付きクエリを含め、機密値をマスキングした出力値を取得します
terraform_providers新機能 ロックファイルを使ってプロバイダー情報を取得します
check_provider_lockfile再現可能なプロバイダー選択のために .terraform.lock.hcl をチェックします
分析とセキュリティ
ツール説明
analyze_terraform設定を分析します
inspect_terraform_projectローカルの Terraform ディレクトリ、モジュール、エントリーポイントと思われる箇所を調査します
detect_terraform_entrypointsルートモジュールのエントリーポイントと思われる箇所を検出します
analyze_module_health凝集度/結合度の指標を使ってモジュールの健全性を分析します
get_resource_dependency_graphリソースの依存関係を可視化します
suggest_module_refactoringリファクタリングを提案します
get_security_statusシークレット検出を含むセキュリティスキャンを実行します
レジストリ
ツール説明
search_providersプロバイダーを検索します(HashiCorp 互換のエイリアス)
search_terraform_providersプロバイダーを検索します
get_provider_detailsプロバイダーの詳細を取得します(HashiCorp 互換のエイリアス)
get_provider_infoプロバイダーの詳細を取得します
get_provider_docsプロバイダーのドキュメントを取得します
get_provider_capabilitiesプロバイダーのリソース、データソース、関数、ガイドを取得します
search_modulesモジュールを検索します(HashiCorp 互換のエイリアス)
search_terraform_modulesモジュールを検索します
get_module_detailsモジュールの詳細を取得します
get_latest_module_versionモジュールの最新バージョンを取得します
get_latest_provider_versionプロバイダーの最新バージョンを取得します
search_policiesSentinel/OPA ポリシーライブラリを検索します
get_policy_detailsポリシーライブラリの詳細を取得します
HCP Terraform / Terraform Enterprise(読み取り専用)
ツール説明
get_token_permissionsトークンを公開せずに、設定済みのトークンアカウントの詳細を確認します
list_terraform_orgs表示可能な組織の一覧を取得します
list_terraform_projects組織内のプロジェクト一覧を取得します
list_workspaces組織内のワークスペース一覧を取得します
get_workspace_detailsID または組織名/名前でワークスペースの詳細を取得します
list_runsワークスペースの実行一覧を取得します
get_run_details実行の詳細を取得します
get_plan_detailsプランの詳細を取得します
get_plan_logsプランのログを取得します
get_plan_json_outputTerraform の JSON プラン出力を取得します
get_apply_details適用の詳細を取得します
get_apply_logs適用のログを取得します
get_workspace_policy_setsワークスペースに関連付けられたポリシーセットを取得します
list_workspace_variablesワークスペース変数の一覧を取得します
list_variable_sets組織の変数セット一覧を取得します
read_workspace_tagsワークスペースのタグを読み取ります
list_stacksTerraform スタックの一覧を取得します
get_stack_detailsTerraform スタックの詳細を取得します
search_private_modulesプライベートレジストリのモジュールを検索します
get_private_module_detailsプライベートレジストリのモジュールの詳細を取得します
search_private_providersプライベートレジストリのプロバイダーを検索します
get_private_provider_detailsプライベートレジストリのプロバイダーの詳細を取得します
HCP Terraform / Terraform Enterprise(制限付き操作)
ツール説明
create_workspaceENABLE_TF_OPERATIONS=true の場合にワークスペースを作成します
update_workspaceENABLE_TF_OPERATIONS=true の場合にワークスペースの設定を更新します
delete_workspace_safelyENABLE_TF_OPERATIONS=true の場合にワークスペースの安全な削除アクションを使用します
create_runENABLE_TF_OPERATIONS=true の場合に実行をキューに追加します
action_runENABLE_TF_OPERATIONS=true の場合に実行を適用、破棄、キャンセル、強制キャンセル、または強制実行します
create_workspace_variableENABLE_TF_OPERATIONS=true の場合にワークスペース変数を作成します
update_workspace_variableENABLE_TF_OPERATIONS=true の場合にワークスペース変数を更新します
attach_policy_set_to_workspaceENABLE_TF_OPERATIONS=true の場合にポリシーセットをワークスペースに関連付けます
create_variable_setENABLE_TF_OPERATIONS=true の場合に変数セットを作成します
create_variable_in_variable_setENABLE_TF_OPERATIONS=true の場合に変数セット内に変数を作成します
delete_variable_in_variable_setENABLE_TF_OPERATIONS=true の場合に変数セットから変数を削除します
attach_variable_set_to_workspacesENABLE_TF_OPERATIONS=true の場合に変数セットをワークスペースに関連付けます
detach_variable_set_from_workspacesENABLE_TF_OPERATIONS=true の場合に変数セットとワークスペースの関連付けを解除します
create_workspace_tagsENABLE_TF_OPERATIONS=true の場合にワークスペースタグを作成または関連付けます
MCP リソース
URI説明
terraform://style-guide / /terraform/style-guideTerraform スタイルガイド
terraform://module-development / /terraform/module-developmentTerraform モジュール開発ガイド
terraform://best-practicestfmcp のセキュリティと運用に関するベストプラクティス
/terraform/providers/{namespace}/name/{name}/version/{version}HashiCorp 互換のプロバイダードキュメントテンプレート

ログとトラブルシューティング

tfmcp サーバーのログは次の場所で確認できます。

~/Library/Logs/Claude/mcp-server-tfmcp.log

よくある問題と解決策:

  • Claude がサーバーに接続できない:設定で tfmcp 実行ファイルへのパスが正しいことを確認してください
  • Terraform プロジェクトの問題:tfmcp は、Terraform プロジェクトが見つからない場合にサンプルプロジェクトを自動的に作成します
  • メソッドが見つからないエラー:tfmcp は tools/list、resources/list、resources/templates/list、resources/read をアドバタイズし、実装しています
  • Docker の問題:Docker を使用している場合は、コンテナーに適切なボリュームマウントと権限が設定されていることを確認してください

環境変数

コア設定
  • TERRAFORM_DIR:カスタムの Terraform プロジェクトディレクトリを指定するには、この値を設定します。設定されていない場合、tfmcp はコマンドライン引数または設定ファイルで指定されたディレクトリを使用し、それらがない場合は ~/terraform を使用します。set_terraform_directory ツールを使って、実行時にプロジェクトディレクトリを変更することもできます。
  • TFMCP_LOG_LEVEL:ログの詳細度を制御するには、debug、info、warn、error のいずれかを設定します。
  • TFMCP_DEMO_MODE:追加の安全機能を備えたデモモードを有効にするには、true を設定します。
  • TFMCP_COMMAND_TIMEOUT_SECONDS:init、plan、保存済みプランの apply、検証、実行準備のタイムアウトを秒単位で正の値に設定します(デフォルト:900)。タイムアウトした書き込みは一部完了している場合があります。再試行する前に状態を確認してください。
セキュリティ設定
  • ENABLE_TF_OPERATIONS:ゲート付きの HCP Terraform / Terraform Enterprise 書き込みツールを有効にするには、true を設定します(デフォルト:false)
  • TFMCP_ALLOW_DANGEROUS_OPS:apply/destroy 操作を有効にするには、true を設定します(デフォルト:false)
  • TFMCP_DELETE_ENABLED:保存済みの destroy プランを適用するには、true を設定します。apply の権限も両方必要です(デフォルト:false)
  • TFMCP_ALLOW_AUTO_APPROVE:危険な操作の自動承認を有効にするには、true を設定します(デフォルト:false)
  • TFMCP_MAX_RESOURCES:管理できるリソースの最大数を設定します(デフォルト:50)
  • TFMCP_AUDIT_ENABLED:監査ログを無効にするには、false を設定します(デフォルト:true)
  • TFMCP_AUDIT_LOG_FILE:監査ログファイルのカスタムパス(デフォルト:~/.tfmcp/audit.log)
  • TFMCP_AUDIT_LOG_SENSITIVE:監査ログに機密情報を含めるには、true を設定します(デフォルト:false)
HCP Terraform / Terraform Enterprise
  • TFE_ADDRESS:HCP Terraform または Terraform Enterprise のベース URL(デフォルト:https://app.terraform.io)
  • TFE_TOKEN:HCP Terraform / Terraform Enterprise ツール用の API トークン
  • TFE_SKIP_TLS_VERIFY:カスタム TLS を使用する信頼できるプライベート TFE インストール環境でのみ、true を設定します
  • TFE_MAX_RESPONSE_BYTES:切り詰める前に MCP クライアントへ返す HCP/TFE レスポンスの最大バイト数(デフォルト:65536)

HCP/TFE の書き込みツールはデフォルトで無効になっており、 ENABLE_TF_OPERATIONS=true を設定しない限り、フェイルクローズします。default ツールセットでは書き込みツールは非表示です。これらを公開するには、--toolsets operations または --toolsets all を使用します。

MCP トランスポート
  • TRANSPORT_MODE:MCP トランスポートモードです。ローカルのデスクトップクライアントでは stdio(デフォルト)、リモートまたは CI のクライアントでは streamable-http を使用します。
  • TRANSPORT_HOST:streamable HTTP モードの HTTP バインドホストです(デフォルト:127.0.0.1)。
  • TRANSPORT_PORT:streamable HTTP モードの HTTP バインドポートです(デフォルト:8080)。
  • MCP_ENDPOINT:Streamable HTTP MCP エンドポイントのパスです(デフォルト:/mcp)。
  • MCP_HEALTH_ENDPOINT:ヘルスエンドポイントのパスです(デフォルト:/health)。
  • MCP_METRICS_ENDPOINT:OTel 互換の JSON メトリクススナップショットエンドポイントのパスです(デフォルト:/metrics)。
  • MCP_SESSION_MODE:通常の MCP クライアントでは stateful、CI 形式の JSON 応答では stateless を指定します(デフォルト:stateful)。プロトコルバージョンとして 2026-07-28 より前のバージョンをネゴシエートするクライアントにのみ適用されます。この仕様ではセッションが削除されたため、それらのリクエストは常にステートレスで処理されます。
  • MCP_HEARTBEAT_INTERVAL:Streamable HTTP SSE のキープアライブ間隔を秒単位で指定します。0 に設定すると無効になります(デフォルト:15)。
  • MCP_CORS_MODE:レスポンスの CORS ポリシーです。strict、development、disabled のいずれかを指定します(デフォルト:strict)。すべてのモードで MCP リクエストの Origin 検証は有効です。
  • MCP_ALLOWED_ORIGINS:許可するブラウザーオリジンをカンマ区切りで指定します。デフォルトではループバックオリジンが使用されます。
  • MCP_ALLOWED_HOSTS:Streamable HTTP で許可する HTTP Host/authority の値をカンマ区切りで指定します。未設定の場合、rmcp のループバックのみを許可するデフォルトが適用されます。
  • MCP_ORGANIZATION_ALLOWLIST:リモートリクエストがアクセスできる HCP/TFE 組織名をカンマ区切りで指定します。
  • MCP_RATE_LIMIT_GLOBAL:サーバー全体での 1 分あたりの HTTP リクエスト最大数です(0 または未設定で無効)。
  • MCP_RATE_LIMIT_SESSION:Mcp-Session-Id ごとの 1 分あたりの HTTP リクエスト最大数です(0 または未設定で無効)。2026-07-28 をネゴシエートするクライアントはセッションヘッダーを送信しないため、それらのクライアントには MCP_RATE_LIMIT_GLOBAL のみが適用されます。
  • MCP_TLS_CERT_FILE:HTTPS Streamable HTTP 用の PEM 証明書ファイルです。
  • MCP_TLS_KEY_FILE:HTTPS Streamable HTTP 用の PEM 秘密鍵ファイルです。

HCP/TFE の認証情報とアドレスはサーバー設定です。tfmcp は、下流へのパススルー用にリクエスト単位の TFE_TOKEN、Authorization、または TFE_ADDRESS の上書きを意図的に受け付けません。組織の許可リストが有効な場合、所有する組織をローカルで検証できないため、アカウント全体を対象とするリクエストと ID のみを指定した HCP/TFE リクエストは安全側に倒して拒否されます。

streamable HTTP の起動例:

TRANSPORT_MODE=streamable-http \
TRANSPORT_HOST=127.0.0.1 \
TRANSPORT_PORT=8080 \
tfmcp mcp --toolsets default

MCP エンドポイントは http://127.0.0.1:8080/mcp、ヘルスエンドポイントは http://127.0.0.1:8080/health、メトリクスエンドポイントは http://127.0.0.1:8080/metrics です。

セキュリティに関する考慮事項

tfmcp には、本番環境での使用を想定した包括的なセキュリティ機能が備わっています。

🔒 組み込みのセキュリティ機能
  • アクセス制御:本番環境や機密情報に関するファイルパターンを自動的にブロックします
  • 操作制限:危険な操作(apply/destroy)はデフォルトで無効です
  • リソース制限:リソース数の設定可能な上限によって保護します
  • 監査ログ:タイムスタンプとユーザー識別情報を含む、すべての操作の記録です
  • ディレクトリ検証:プロジェクトディレクトリにセキュリティポリシーを適用します
🛡️ セキュリティのベストプラクティス
  • デフォルトの安全性:apply/destroy 操作はデフォルトで無効です。必要な場合にのみ明示的に有効にしてください
  • プランの確認:適用前に Terraform のプランを必ず確認してください。特に AI が生成したプランは注意が必要です
  • IAM の境界:クラウド環境では適切な IAM 権限とロール境界を使用してください
  • 監査の監視:~/.tfmcp/audit.log の監査ログを定期的に確認してください
  • ファイルパターン:prod*、production*、secret* パターンへのアクセスを組み込みで保護します
  • Docker のセキュリティ:コンテナーを使用する場合は、ボリュームマウントと公開データを慎重に検討してください
⚙️ 本番環境の設定
# Recommended production settings
export TFMCP_ALLOW_DANGEROUS_OPS=false    # Keep disabled for safety
export TFMCP_ALLOW_AUTO_APPROVE=false     # Require manual approval
export TFMCP_MAX_RESOURCES=10             # Limit resource scope
export TFMCP_AUDIT_ENABLED=true           # Enable audit logging
export TFMCP_AUDIT_LOG_SENSITIVE=false    # Don't log sensitive data

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。

  1. リポジトリをフォークします
  2. 機能ブランチを作成します(git checkout -b feature/amazing-feature)
  3. クローンごとに一度、リポジトリ管理の高速なコミット前チェックを有効にします:
    git config core.hooksPath .githooks
    
  4. プッシュする前に、すべての正確性チェックを実行します:
    cargo fmt --all -- --check
    cargo clippy --all-targets --all-features -- -D warnings
    cargo test --locked --all-targets --all-features
    
  5. 変更をコミットします(git commit -m 'Add some amazing feature')
  6. ブランチにプッシュします(git push origin feature/amazing-feature)
  7. プルリクエストを作成します

コミット前フックは、ステージされたファイルの空白文字を常にチェックし、影響を受けるファイルに対して条件に応じて cargo fmt、actionlint、レジストリのメタデータ検証、モジュール結合、重複コードのチェックを実行します。 オプションのアーキテクチャツールは引き続き Release.sh で必須です。開発中にも同様の高速なフィードバックを得るには、 cargo-coupling と similarity-rs をインストールしてください。

リリースプロセス

リリースは、ローカルのリリースゲートに合格した後、手動で行います。

  1. Cargo.toml、Cargo.lock、server.json、Dockerfile、README、CHANGELOG.md が対象のバージョンを使用していることを確認します。
  2. ローカルのリリースゲートを実行します:./Release.sh v0.2.4。
  3. CHANGELOG.md と生成されたパッケージを確認します。
  4. main をコミットしてプッシュし、そのコミットに対して CI が成功したことを確認します。
  5. クリーンなコミットから、./Release.sh v0.2.4 --publish を実行して公開します。

ロードマップ

tfmcp で予定されている改善と今後の機能を紹介します:

統合された v0.2.1 の対象範囲と今後の作業については、 docs/releases/v0.2-roadmap.md を参照してください。リリースの変更内容は CHANGELOG.md に記録されています。

ローカル開発の要件では、現在の実装を Terraform のドキュメントおよびローカルの Terraform in Depth / Terraform at Scale の資料と比較し、優先順位付けされた作業項目と今後の作業に向けた受け入れ基準を示しています。

実際にローカルの Web アプリで手動検証を行う場合は、 ローカルアプリケーションの例を参照してください。この例では、保存済みプランのデプロイ、HTTP レスポンス、実際の Terraform 引数、監査記録、ティアダウンを検証し、レポートとログを保持します。

完了
  • Terraform の基本的な統合 Terraform CLI と連携し、操作を分析および実行するための基本機能です。

  • MCP サーバーの実装 AI アシスタント向けの Model Context Protocol サーバーの初期実装です。

  • プロジェクトの自動作成 必要に応じて Terraform のサンプルプロジェクトを自動作成する機能を追加しました。

  • Claude Desktop との統合 Claude Desktop とシームレスに統合するためのサポートです。

  • MCP のコアメソッド tools/list、resources/list、resources/templates/list、resources/read など、必須の MCP メソッドを実装しました。

  • エラー処理の改善 安定した動作を実現するため、エラー処理と復旧メカニズムを改善しました。

  • プロジェクトディレクトリの動的切り替え サービスを再起動せずに、アクティブな Terraform プロジェクトディレクトリを変更できる機能を追加しました。

  • Crates.io への公開 Cargo で簡単にインストールできるよう、パッケージを Crates.io に公開しました。

  • Docker のサポート デプロイを容易にし、クロスプラットフォームの互換性を高めるため、コンテナ化のサポートを追加しました。

  • セキュリティの強化 設定可能なポリシー、監査ログ、アクセス制御、本番環境に対応した安全機能を備えた包括的なセキュリティシステムです。

  • モジュールの健全性分析(v0.1.6) 凝集度・結合度の指標、健全性スコア、リファクタリングの提案を備えた、IaC のホワイトボックスアプローチです。

  • リソース依存関係グラフ(v0.1.6) 明示的および暗黙的な依存関係を含む、リソース間の関係を可視化します。

  • モジュールレジストリとの統合(v0.1.6) レジストリから Terraform モジュールを検索して探索できます。

  • 包括的なテストフレームワーク 実際の Terraform 設定を使用した統合テストを含む、85 件以上のテストです。

  • RMCP SDK への移行(v0.1.8) MCP への準拠を高めるため、適切なツール注釈を備えた公式 RMCP SDK に移行しました。

  • Future Architect ガイドライン(v0.1.8) シークレットの検出や変数品質の検証を含む、Terraform コーディング標準への準拠チェックです。

進行中
  • マルチ環境のサポート 複数の Terraform 環境、ワークスペース、モジュールを管理するためのサポートを追加します。
計画中
  • MCP プロトコルのサポート拡大 AI アシスタントとの統合をさらに強化するため、MCP のメソッドと機能を追加で実装します。

  • パフォーマンスの最適化 大規模な Terraform プロジェクトでのリソース使用量と応答時間を最適化します。

  • コストの見積もり クラウドプロバイダーの料金 API と統合し、Terraform のプランのコストを見積もります。

  • インタラクティブな TUI ローカルでの利用とデバッグを容易にする、ターミナルベースのユーザーインターフェースを開発します。

  • その他の AI プラットフォームとの統合 Claude 以外の AI アシスタントやプラットフォームにも対応できるよう拡張します。

  • プラグインシステム コア機能を拡張できるプラグインアーキテクチャを開発します。

ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。詳細については、LICENSE ファイルをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。