AWS Terraform MCP ServerをClaude Desktopから利用してみた

# AWS Terraform MCP Serverとは

公式から引用すると、「**AWSのベストプラクティス、Infrastructure as Codeパターン、CheckovによるセキュリティコンプライアンスのためのTerraform用MCPサーバー**」とのこと。

引用：https://awslabs.github.io/mcp/servers/terraform-mcp-server/

## 何ができるか？

主に次のような特徴があります。
**Terraformのベストプラクティスに基づいてより良いAWS環境の構築に役立ちそう**です。ドキュメントだけではなく、実際にTerraformコマンドを実行することもできそうです。他にも特徴が公式ドキュメントに記載されているので是非ご一読ください。

- Terraform のベストプラクティス- AWS 上でアプリケーションを構築するための Terraform の具体的なアドバイスを入手
- Terraform 構成に関する AWS Well-Architected ガイダンス
- セキュリティとコンプライアンスに関する推奨事項
- セキュリティファースト開発ワークフロー- 安全なコードを作成するための構造化されたプロセスに従う
- AWS プロバイダードキュメント- AWS および AWSCC プロバイダーのリソースを検索
- Terraform ワークフロー実行- Terraform コマンドを直接実行します

# AWS Terraform MCP ServerをClaude Desktopから利用する方法

Claude DesktopでAWS Terraform MCP Serverを利用する方法、セットアップ方法を記載します。併せてAWS Documentation MCP Serverも同時に設定します。

## 前提条件

### インストール要件

手順1. [Astral](https://docs.astral.sh/uv/getting-started/installation/)または[GitHubのREADME](https://github.com/astral-sh/uv#installation)から`uv`をインストールする

```
PS C:\> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Downloading uv 0.6.14 (x86_64-pc-windows-msvc)
Installing to C:\Users\UserName\.local\bin
  uv.exe
  uvx.exe
everything's installed!

To add C:\Users\UserName\.local\bin to your PATH, either restart your shell or run:

    set Path=C:\Users\UserName\.local\bin;%Path%   (cmd)
    $env:Path = "C:\Users\UserName\.local\bin;$env:Path"   (powershell)
```

手順2. パスを追加する

```
PS C:\> $env:Path = "C:\Users\UserName\.local\bin;$env:Path"
PS C:\> uv --version
uv 0.6.14 (a4cec56dc 2025-04-09)
```

手順3. `uv python install 3.10`を使ってPythonをインストールする。（またはより新しいバージョン）をインストールします。

```
PS C:\> uv python install 3.10
Installed Python 3.10.17 in 6.43s
 + cpython-3.10.17-windows-x86_64-none
```

## Claude Desktopでの設定

AWS Documentation MCP Serverの手順に記載のとおり、Claudeの設定ファイルにMCP設定用のコードを追加します。

> このMCPサーバーをAmazon QまたはClaudeに追加するには、MCP設定ファイルに以下の行を追加してください。Amazon Qの場合は、`.amazonq/mcp.json`を実行しているディレクトリと同じディレクトリにという名前のファイルを作成します（まだ存在しない場合） `q chat`。そして、以下の設定行を追加してください。
https://awslabs.github.io/mcp/servers/aws-documentation-mcp-server/
> 

### Claudeの場合

左上の三 > ファイル > 設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2743663/d9e72eb9-6194-4fa6-b406-b319a19c6507.png)

開発者タブ > 設定を編集
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2743663/c20d07c4-df0f-45db-9942-7a3182f525be.png)




claude_desktop_config.jsonを開き（C:\Users\UserName\AppData\Roaming\Claude）以下を記入します。

```jsx
{
  "mcpServers": {
		"awslabs.aws-documentation-mcp-server": {
			"command": "/Users/UserName/.local/bin/uvx",
			"args": [
				"--from",
				"awslabs-aws-documentation-mcp-server",
				"awslabs.aws-documentation-mcp-server.exe"
			],
			"env": {
				"FASTMCP_LOG_LEVEL": "ERROR"
			},
			"disabled": false,
			"autoApprove": []
		},
		"awslabs.terraform-mcp-server": {
			"command": "/Users/UserName/.local/bin/uvx",
			"args": [
				"--from",
				"awslabs-terraform-mcp-server",
				"awslabs.terraform-mcp-server.exe"
			],
			"env": {
				"FASTMCP_LOG_LEVEL": "ERROR",
				"PYTHONUTF8": "1"
			},
			"disabled": false,
			"autoApprove": []
		}
  }
}
```


:::note warn

terraform-mcp-serverについて、環境変数に`"PYTHONUTF8": "1”`を追加しないと正常に使用できない。

エラーログをClaudeに調査してもらったところ、以下のエラーが発生していた。

```jsx
エラータイプ: UnicodeDecodeError
詳細内容: 'cp932' codec can't decode byte 0xef in position 566: illegal multibyte sequence

このエラーは、文字エンコーディングの問題を示しています。cp932（日本語Windows環境でよく使われるエンコーディング）が、ファイル内のバイトシーケンスを正しくデコードできていません。
```

Claude Desktopでのエラー内容

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2743663/33bb6dad-e8db-45f9-8972-2c6fb7b18eeb.png)

:::

:::note info
AWS Documentation MCP Server やAWS Terraform MCP Serverのドキュメントでは `args` に `"awslabs.terraform-mcp-server@latest”` と指定していますが、Windows 環境では書き方が異なるらしいです。

その点に触れられている記事はこちらです。
https://qiita.com/revsystem/items/1e4c738ecaeacb7f133d

:::


左上の三 > ファイル > 終了からClaudeを終了し、再度開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2743663/269e7b95-0b54-4edc-a444-2945fc331618.png)

これで設定は完了です。次はきちんと設定ができているか確認し、実際に使ってみます。

## 実際に使ってみる

### 使用前確認
使用前にきちんと設定ができているか確認します。

awslabs.terraform-mcp-serverとの接続確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2743663/c97fc82a-70c4-45ae-ac34-db007a01237f.png)


awslabs.aws-documentation-mcp-serverとの接続も確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2743663/012e37ba-0a1f-458d-83c7-1574eecbdca2.png)


### 使用してみる

「“awslabs.terraform-mcp-server”からのツールを許可しますか？」との表示がでており、正常に利用できる状態となっていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2743663/eec54642-9c71-4a9c-8f9f-10e3534becb9.png)


## 感想

Terraformを使用してAWS環境を構築する場合はとても役立ちそうだと思いました。AWS Terraform MCP ServerとAWS Documentation MCP Serverを組み合わせて利用することで、AWS・Terraformどちらのベストプラクティスも踏まえたTerraformコード、AWS環境が構築できそうです。

今回は実際にTerraformコマンドを実行してもらってはいないですが、次はTerraformコマンドを実行してもらうところまでやってみようと思います。

## 参考URL

### AWS Terraform MCP Server

- https://awslabs.github.io/mcp/servers/terraform-mcp-server/
- https://github.com/awslabs/mcp/blob/main/src/terraform-mcp-server/README.md
- https://github.com/awslabs/mcp?tab=readme-ov-file#aws-terraform-mcp-server

### AWS Documentation MCP Server

- https://awslabs.github.io/mcp/servers/aws-documentation-mcp-server/
- https://github.com/awslabs/mcp?tab=readme-ov-file