Terraform MCP Server 1.0: теперь AI пишет конфиги по свежим провайдерам — но в prod без поводка нельзя
Любой, кто просил ChatGPT или Claude накидать конфиг Terraform, знает этот жанр: модель уверенно пишет HCL, который был актуален год назад. acl = «private» прямо внутри aws_s3_bucket, аргументы, которые провайдер депрекейтнул ещё в четвёртой мажорной версии, ссылки на ресурсы, переименованные пару релизов назад. Причина простая — у модели знания на момент обучения, а реестр провайдеров живёт своей жизнью и меняется каждую неделю.
11 июня 2026 HashiCorp (теперь уже под крылом IBM) перевела в GA свой ответ на эту боль — Terraform MCP Server 1.0. Это официальный MCP-сервер, который даёт AI-ассистенту прямой доступ к Terraform Registry: актуальная документация провайдеров, модули, политики — в момент запроса, а не из training data.
Разберём, что он реально умеет, как поднять стенд за пять минут и где категорически нельзя пускать агента к инфраструктуре без поводка.
Зачем вообще прокладка между LLM и реестром
MCP (Model Context Protocol) — открытый стандарт от Anthropic, по которому модель ходит во внешние инструменты. Тут теории достаточно: есть хост (Claude Desktop, Cursor, VS Code), есть MCP-клиент внутри него, и есть сервер, который отдаёт инструменты. Всё.
Важно другое — что именно сервер кладёт модели в контекст. Terraform MCP Server не «применяет Terraform за вас». Он отдаёт модели набор tools, которыми та сама пользуется, когда вы просите написать или поправить конфиг:
-
search_providers — найти провайдера в реестре;
-
get_provider_details — вытащить актуальную документацию по ресурсам и аргументам;
-
get_latest_provider_version — проверить свежую версию;
-
search_modules / get_module_details — модули с их inputs/outputs и примерами;
-
поиск Sentinel-политик для governance и compliance.
Инструменты сгруппированы в три toolset’а — registry, registry-private и terraform — и включаются/отключаются флагом —toolsets. Это удобно: для локальной разработки достаточно публичного registry, а terraform (операции над workspace в HCP/TFE) можно вообще не поднимать.
Без MCP против с MCP
Самый честный способ показать ценность — один и тот же промпт на свежий ресурс.
Классический пример — S3-бакет. Модель без доступа к реестру с большой вероятностью выдаст старый стиль:
# то, что напишет LLM по памяти — стиль, депрекейтнутый в AWS provider v4 resource «aws_s3_bucket» «data» { bucket = «my-data» acl = «private» versioning { enabled = true } } 
Тут двойная беда. Во-первых, acl и versioning внутри aws_s3_bucket депрекейтнуты и вынесены в отдельные ресурсы ещё в четвёртой версии провайдера. Во-вторых, и это любят забывать: с 2023 года S3 по умолчанию отключает ACL (Bucket Owner Enforced), приватность — это и так дефолт, а отдельный aws_s3_bucket_acl с private на свежем бакете просто упадёт.
Модель, сходив через MCP в search_providers и get_provider_details за актуальной документацией, ACL для приватного бакета не пишет вообще. Корректный современный конфиг — без ACL-ресурса, с вынесенным версионированием и явным блоком публичного доступа:
resource «aws_s3_bucket» «data» { bucket = «my-data» } resource «aws_s3_bucket_versioning» «data» { bucket = aws_s3_bucket.data.id versioning_configuration { status = «Enabled» } } resource «aws_s3_bucket_public_access_block» «data» { bucket = aws_s3_bucket.data.id block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true } 
Разница не в том, что модель «поумнела». Она перестала угадывать и сходила за фактами. Для редких провайдеров и свежих мажорных версий, где обучающих данных мало, эффект заметнее всего.
Стенд за пять минут
Сервер ездит в Docker-контейнере и поддерживает два транспорта: stdio (локально) и streamable-http (удалённо). Для публичного реестра токен не нужен вообще.
Локальный запуск под stdio:
docker run -i —rm hashicorp/terraform-mcp-server 
Подключение в хост (пример для конфигов на базе MCP — Claude Desktop, Cursor, VS Code agent mode):
{ «mcpServers»: { «terraform»: { «command»: «docker», «args»: [«run», «-i», «—rm», «hashicorp/terraform-mcp-server»] } } } 
Всё — дальше модель сама находит и вызывает нужные tools, когда вы просите HCL.

HCP Terraform и Enterprise: приватный registry в контексте модели
Публичный реестр — это приятно, но настоящая ценность для команд в приватной части. Подключив TFE_TOKEN и TFE_ADDRESS, вы пробрасываете в контекст модели свой приватный registry: внутренние модули с их документацией, провайдеры, организации и workspace.
docker run -i —rm -e TFE_ADDRESS=https://app.terraform.io -e TFE_TOKEN=*** hashicorp/terraform-mcp-server 
В режиме HCP/TFE доступны операции над workspace, переменными, тегами и run’ами. И вот тут принципиальный момент: деструктивные операции по умолчанию выключены. Apply, destroy, auto-approve и часть run-операций спрятаны за флагом ENABLE_TF_OPERATIONS — по дефолту он false, и это правильный дефолт. Но не обманывайтесь: что агент в принципе может читать и менять, определяется правами самого TFE_TOKEN, а не только этим флагом. Так что least privilege на токене — не опция.
Безопасность: где поводок обязателен
HashiCorp в документации честно перечисляет модель угроз, и её стоит прочитать до того, как подключать сервер к боевому токену. Помимо обычных галлюцинаций, там: prompt injection, tool poisoning, rug pull (инструмент меняет поведение после доверия) и tool shadowing. То есть это не «безопасно by design», а инструмент, который надо ограничивать.
Практический чеклист, если не хочется однажды объяснять, почему агент снёс staging:
-
Минимальные права токена. TFE_TOKEN должен видеть ровно то, что нужно ассистенту, и ничего сверх. Никакого «дам админский, потом разберусь».
-
ENABLE_TF_OPERATIONS=false, пока вы осознанно не решите иначе. Деструктивные операции — отдельный разговор и отдельный токен.
-
Не светить приватный registry в общий агент. Внутренние модули — это карта вашей инфраструктуры.
-
Никогда TFE_SKIP_TLS_VERIFY=true в проде.
-
Remote — только streamable-http с обвязкой: TLS (MCP_TLS_CERT_FILE / MCP_TLS_KEY_FILE), строгий CORS, IP allowlist, встроенные rate limit’ы (MCP_RATE_LIMIT_GLOBAL по умолчанию 10:20, MCP_RATE_LIMIT_SESSION — 5:10). Локально же хватает stdio или 127.0.0.1.
Отдельно про наблюдаемость: в streamable-http режиме сервер умеет отдавать OTel-метрики (OTEL_METRICS_ENABLED) — объём вызовов tools, latency, ошибки. Для прод-разворота это не опция, а гигиена.
Подводные камни
-
Контекст пухнет. Документация жирных провайдеров вроде AWS — это много токенов. Агент, который активно ходит в реестр, ест контекст и деньги быстрее, чем кажется.
-
Rate limit самого Registry. Зациклившийся в поиске агент упрётся в лимиты API реестра.
-
Привязка к экосистеме HashiCorp. Сервер официально заточен под Terraform Registry и HCP/TFE. OpenTofu как поддерживаемый сценарий не заявлен — хотя provider/module-документация из реестра по-прежнему полезна и для HCL-совместимых конфигов.
Итог
Terraform MCP Server не «отдаёт инфраструктуру ИИ» и не «лечит галлюцинации» — так формулировать неправильно. Он делает одну важную вещь: убирает устаревание контекста, чтобы модель писала HCL по актуальной схеме провайдера, а не по памяти годичной давности. Code review при этом никто не отменял.
Для девопса это редкий случай, когда AI-инструмент попадает ровно в рабочий процесс, а не в демо. Поднять стенд — пять минут и один docker run. Главное — держать агента на коротком поводке: минимальные права, выключенные по умолчанию деструктивные операции и threat model, прочитанная заранее, а не после инцидента.
А вы бы пустили агента в свой приватный registry — и на каких правах?
Источник: habr.com
Оцените материал:
Похожие записи
Как датские медики XIX века победили оспу
04.02.2026
Ученые разработали новый метод, позволяющий обнаружить жизнь на других планетах
07.02.2025
Зевание оказывает неожиданное влияние на жидкость внутри головного мозга.
30.01.2026Присоединяйтесь и подпишитесь на рассылку самых свежих новостей по Email
Получайте свежие новости и идеи на почту. Без спама — только самое интересное.
Нажимая «Подписаться», вы соглашаетесь с политикой конфиденциальности.
