概要
インストール
ツールリスト
コンテンツ詳細
代替品
Terry-Form MCPサーバーとは?
Terry-Form MCPは、モデル制御プロトコル(MCP)サーバーで、ClaudeなどのAIアシスタントが安全なコンテナ環境でTerraformコマンドを実行できるようにします。HashiCorp公式のTerraformイメージを使用して隔離実行を実現し、言語サーバープロトコル(LSP)を統合してインテリジェントな開発機能を提供します。Terry-Form MCPサーバーの使い方は?
Dockerコンテナで実行し、ローカルのTerraform設定をコンテナにマウントします。AIアシスタントはMCPプロトコルを介してサーバーと通信し、Terraformコマンドを実行したり、LSPのインテリジェントなヒントを取得したりできます。初期化、検証、整形、プランなどの操作をサポートしています。適用シナリオ
AIアシスタントがTerraform開発を支援する必要があるシナリオ、たとえばインフラストラクチャコードの作成、構文検証、インテリジェントな補完、ドキュメントの検索などに適しています。安全な環境でクラウドリソースを管理したい開発者に特に適しています。主な機能
使い方
使用例
よくある質問
関連リソース
インストール
{
"mcpServers": {
"terry": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/path/to/your/workspace:/mnt/workspace",
"terry-form-mcp"
]
}
}
}
{
"mcpServers": {
"terry": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "C:\\Users\\YourUsername\\terraform-projects:/mnt/workspace",
"terry-form-mcp"
]
}
}
}
{
"mcpServers": {
"terry": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/Users/YourUsername/terraform-projects:/mnt/workspace",
"terry-form-mcp"
]
}
}
}
{
"mcpServers": {
"terry": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "/home/YourUsername/terraform-projects:/mnt/workspace",
"terry-form-mcp"
]
}
}
}🚀 Terry-Form MCP with LSP Integration
Terry-Form MCPは、AIアシスタントがHashiCorpの公式Terraformイメージを使用した安全なコンテナ化環境を通じて、Terraformコマンドをローカルで実行できるようにするModel Control Protocol (MCP)サーバーです。現在、Language Server Protocol (LSP)が統合され、Terraformの開発機能が強化されています。
🚀 クイックスタート
前提条件
- Dockerがインストールされ、実行中であること
- Python 3.8以上(開発/テスト用)
- ワークスペースにTerraform設定へのアクセスがあること
1. Dockerイメージのビルド
# 提供されているスクリプトを使用してビルドする(Linux/macOS)
./build.sh
# またはWindowsユーザーの場合
build.bat
# あるいは、直接Dockerでビルドする
docker build -t terry-form-mcp .
2. MCPサーバーとして実行
# MCPサーバーとして実行
docker run -it --rm \
-v "$(pwd)":/mnt/workspace \
terry-form-mcp
3. サンプルデータでテスト
# テスト用のワークスペースを作成
docker run -i --rm \
-v "$(pwd)":/mnt/workspace \
terry-form-mcp python3 -c "import json; print(json.dumps({'tool': 'terry_workspace_setup', 'arguments': {'path': 'test-project', 'project_name': 'test'}}))" | \
docker run -i --rm \
-v "$(pwd)":/mnt/workspace \
terry-form-mcp
# プロジェクトを初期化
echo '{
"tool": "terry",
"arguments": {
"actions": ["init"],
"path": "test-project"
}
}' | docker run -i --rm \
-v "$(pwd)":/mnt/workspace \
terry-form-mcp
4. 環境チェックを実行
# TerraformとLSPの準備状況を確認する
docker run -i --rm terry-form-mcp python3 -c "import json; import sys; sys.path.append('/app'); from server_enhanced_with_lsp import terry_environment_check; print(json.dumps(terry_environment_check(), indent=2))"
✨ 主な機能
コアTerraform実行(元の機能)
init- Terraform作業ディレクトリを初期化するvalidate- Terraform設定構文を検証するfmt- Terraformコードの書式をチェックするplan- 実行計画を生成して表示する(変数サポート付き)
インテリジェントLSP機能(新機能)
- コード補完:Terraformのリソース、属性、値に対するコンテキスト認識型の提案を提供します。
- ホバードキュメント:カーソル位置のTerraform要素の即時ドキュメントを表示します。
- 高度な検証:正確なエラー位置と説明を含む詳細な診断情報を提供します。
- LSPベースの書式設定:特定の編集提案を伴うプロフェッショナルなコード書式設定を行います。
- ワークスペース認識:プロジェクト構造に基づくインテリジェントなコンテキストを提供します。
診断ツール(新機能)
- 環境診断:TerraformとLSPのセットアップに関する包括的なチェックを行います。
- LSPデバッグ:Language Serverの詳細なステータス情報を提供します。
- ワークスペース分析:Terraformプロジェクトの構造と準備状況を評価します。
- LSP初期化:LSPクライアントのセットアップを手動で制御します。
- ファイル検証:Terraformファイルの構文と構造をチェックします。
- ワークスペースセットアップ:適切に構造化されたTerraformプロジェクトを自動的に作成します。
セキュリティ機能
- コンテナ化された実行:すべてのTerraformコマンドは分離されたDockerコンテナ内で実行されます。
- ワークスペース分離:操作は
/mnt/workspaceマウントポイントに制限されます。 - 状態変更なし:読み取り専用の操作(plan、validate、fmt)のみが許可されます。
- 変数注入:動的な構成のための安全なパラメーター渡しをサポートします。
AI統合
- 構造化された出力:AI処理用のJSON形式の結果を返します。
- エラーハンドリング:詳細なエラーメッセージと戻りコードを提供します。
- バッチ操作:複数のTerraformアクションを順番に実行できます。
- FastMCP統合:AIアシスタントとの互換性のための標準MCPプロトコルをサポートします。
📦 インストール
上述の「クイックスタート」セクションを参照して、Dockerイメージのビルドとサーバーの実行を行ってください。
💻 使用例
基本的な使用法
// Terraformプロジェクトを初期化して検証する
terry(
path="infrastructure/aws",
actions=["init", "validate"]
)
高度な使用法
変数を使用したインフラストラクチャ計画
// 変数を使用して計画する
terry(
path="environments/production",
actions=["plan"],
vars={
"instance_count": "3",
"environment": "prod",
"region": "us-east-1"
}
)
LSPを活用したインテリジェントな開発
// ワークスペースのLSPクライアントを初期化する
terry_lsp_init(
workspace_path="modules/vpc"
)
// リソースのドキュメントを取得する
terraform_hover(
file_path="modules/vpc/main.tf",
line=15,
character=12
)
// コード補完提案を取得する
terraform_complete(
file_path="modules/vpc/variables.tf",
line=8,
character=0
)
// 詳細な診断情報でファイルを検証する
terraform_validate_lsp(
file_path="modules/vpc/outputs.tf"
)
// ファイルを整形する
terraform_format_lsp(
file_path="modules/vpc/main.tf"
)
環境とワークスペースのセットアップ
// 環境の準備状況を確認する
terry_environment_check()
// 新しいTerraformワークスペースを作成する
terry_workspace_setup(
path="new-project",
project_name="aws-vpc-module"
)
// ワークスペースの構造を分析する
terry_workspace_info(
path="existing-project"
)
// 特定のファイルをチェックする
terry_file_check(
file_path="existing-project/main.tf"
)
包括的な開発ワークフロー
// ステップ1: ワークスペースを作成する
terry_workspace_setup(path="new-aws-project", project_name="aws-infra")
// ステップ2: ワークスペースの構造を確認する
terry_workspace_info(path="new-aws-project")
// ステップ3: Terraformを初期化する
terry(path="new-aws-project", actions=["init"])
// ステップ4: LSPを初期化する
terry_lsp_init(workspace_path="new-aws-project")
// ステップ5: 開発中にコード補完を取得する
terraform_complete(file_path="new-aws-project/main.tf", line=10, character=0)
// ステップ6: ファイルを整形する
terraform_format_lsp(file_path="new-aws-project/main.tf")
// ステップ7: 詳細な診断情報で検証する
terraform_validate_lsp(file_path="new-aws-project/main.tf")
// ステップ8: インフラストラクチャを計画する
terry(path="new-aws-project", actions=["plan"])
📚 ドキュメント
コアTerraformツール
terry
コンテナ化された環境でTerraformコマンドを実行します。
terry(
path: string, // 必須: Terraform設定ディレクトリへのパス
actions: string[], // オプション: 実行するアクションのリスト ["init", "validate", "fmt", "plan"]
vars: object // オプション: Terraform変数のキーバリューペア
)
戻り値: 各アクションの結果を含むJSONオブジェクト
{
"terry-results": [
{
"success": true,
"action": "plan",
"stdout": "Terraform will perform the following actions...",
"stderr": "",
"returncode": 0
}
]
}
LSPインテリジェンスツール
terraform_validate_lsp
LSPを使用してTerraformファイルを検証し、詳細な診断情報を提供します。
terraform_validate_lsp(
file_path: string, // 必須: ワークスペースに対するTerraformファイルの相対パス
workspace_path: string // オプション: ワークスペースディレクトリ(デフォルトはファイルの親ディレクトリ)
)
戻り値: 診断情報を含む検証結果
{
"terraform-ls-validation": {
"file_path": "main.tf",
"workspace_path": "/mnt/workspace/project",
"success": true,
"uri": "file:///mnt/workspace/project/main.tf",
"diagnostics": [
{
"range": {
"start": {"line": 15, "character": 10},
"end": {"line": 15, "character": 20}
},
"severity": 1,
"message": "Resource type not found: aws_instance"
}
]
}
}
terraform_hover
カーソル位置のTerraform要素のドキュメントを取得します。
terraform_hover(
file_path: string, // 必須: ワークスペースに対するTerraformファイルの相対パス
line: number, // 必須: 行番号(0から始まる)
character: number, // 必須: 文字位置(0から始まる)
workspace_path: string // オプション: ワークスペースディレクトリ
)
戻り値: カーソル位置の要素のドキュメント
{
"terraform-hover": {
"file_path": "main.tf",
"position": {"line": 14, "character": 15},
"success": true,
"hover": {
"kind": "markdown",
"value": "**resource** _Block_\n\nA resource block declares a resource of a given type..."
}
}
}
terraform_complete
インテリジェントなコード補完提案を提供します。
terraform_complete(
file_path: string, // 必須: ワークスペースに対するTerraformファイルの相対パス
line: number, // 必須: 行番号(0から始まる)
character: number, // 必須: 文字位置(0から始まる)
workspace_path: string // オプション: ワークスペースディレクトリ
)
戻り値: カーソル位置の補完提案
{
"terraform-completions": {
"file_path": "main.tf",
"position": {"line": 20, "character": 0},
"success": true,
"completions": [
{
"label": "\"key\" = string",
"kind": 10,
"detail": "string",
"insertTextFormat": 2,
"textEdit": {
"range": {
"start": {"line": 20, "character": 0},
"end": {"line": 20, "character": 0}
},
"newText": "\"${1:key}\" = "
}
}
]
}
}
terraform_format_lsp
LSPを使用してTerraformファイルを整形します。
terraform_format_lsp(
file_path: string, // 必須: ワークスペースに対するTerraformファイルの相対パス
workspace_path: string // オプション: ワークスペースディレクトリ
)
戻り値: 適用する整形編集内容
{
"terraform-format": {
"file_path": "main.tf",
"success": true,
"edits": [
{
"range": {
"start": {"line": 17, "character": 0},
"end": {"line": 18, "character": 0}
},
"newText": "\n"
}
]
}
}
terraform_lsp_status
terraform-ls Language Serverのステータスをチェックします。
terraform_lsp_status()
戻り値: LSPクライアントの現在のステータス
{
"terraform-ls-status": {
"status": "active",
"initialized": true,
"capabilities": {
"textDocumentSync": { /* LSP capabilities */ },
"completionProvider": { /* ... */ },
"hoverProvider": true,
/* more capabilities */
},
"workspace_root": "/mnt/workspace"
}
}
診断ツール
terry_environment_check
TerraformとLSPの環境の準備状況をチェックします。
terry_environment_check()
戻り値: 包括的な環境情報
{
"terry-environment": {
"environment": {
"working_directory": "/app",
"user": "unknown",
"path": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"workspace_mount": true
},
"terraform": {
"available": true,
"path": "/bin/terraform",
"version": "Terraform v1.12.1\non linux_amd64"
},
"terraform_ls": {
"available": true,
"path": "/usr/local/bin/terraform-ls",
"version": "0.33.2\nplatform: linux/amd64\ngo: go1.22.4\ncompiler: gc"
},
"container": {
"is_docker": true,
"hostname": "ff057bf241c4"
}
}
}
terry_lsp_debug
LSP統合の詳細なデバッグ情報を提供します。
terry_lsp_debug()
戻り値: LSPデバッグ情報
{
"terry-lsp-debug": {
"terraform_ls_binary": {
"available": true,
"version": "0.33.2\nplatform: linux/amd64\ngo: go1.22.4\ncompiler: gc",
"error": null
},
"lsp_client": {
"exists": true,
"initialized": true,
"workspace_root": "/mnt/workspace/project",
"process_active": true
},
"terraform_ls_help": {
"available": true,
"output": "Usage: terraform-ls serve [options]..."
}
}
}
terry_workspace_info
Terraformワークスペースの構造と準備状況を分析します。
terry_workspace_info(
path: string = "." // オプション: 分析するパス(デフォルトは現在のディレクトリ)
)
戻り値: ワークスペース分析結果
{
"terry-workspace": {
"path_info": {
"full_path": "/mnt/workspace/project",
"relative_path": "project",
"exists": true,
"is_directory": true
},
"terraform_files": ["main.tf", "variables.tf", "outputs.tf"],
"terraform_state": {
"initialized": true,
"terraform_dir_exists": true,
"state_file_exists": true
},
"common_files": {
"main.tf": true,
"variables.tf": true,
"outputs.tf": true,
"providers.tf": false,
"terraform.tf": false,
"versions.tf": false
},
"lsp_readiness": {
"has_terraform_files": true,
"has_main_tf": true,
"is_initialized": true,
"recommended_actions": []
}
}
}
terry_lsp_init
ワークスペースのLSPクライアントを手動で初期化します。
terry_lsp_init(
workspace_path: string // 必須: ワークスペースディレクトリへのパス
)
戻り値: LSP初期化結果
{
"terry-lsp-init": {
"success": true,
"workspace": "/mnt/workspace/project",
"capabilities": { /* LSP capabilities */ },
"message": "LSP client initialized successfully"
}
}
terry_file_check
Terraformファイルの構文と構造の問題をチェックします。
terry_file_check(
file_path: string // 必須: Terraformファイルへのパス
)
戻り値: ファイル分析結果
{
"terry-file-check": {
"file_path": "main.tf",
"full_path": "/mnt/workspace/project/main.tf",
"exists": true,
"is_file": true,
"readable": true,
"size": 450,
"syntax_check": {
"has_content": true,
"has_terraform_block": true,
"has_resource_block": true,
"has_data_block": false,
"line_count": 25
}
}
}
terry_workspace_setup
適切に構造化されたTerraformワークスペースを作成します。
terry_workspace_setup(
path: string, // 必須: ワークスペースを作成するパス
project_name: string = "terraform-project" // オプション: プロジェクト名
)
戻り値: セットアップ結果
{
"terry-workspace-setup": {
"success": true,
"workspace_path": "/mnt/workspace/project",
"project_name": "my-terraform-project",
"created_files": ["main.tf", "variables.tf", "outputs.tf"],
"message": "Workspace setup complete. Created 3 files."
}
}
🔧 技術詳細
コンポーネントアーキテクチャ
flowchart LR
%% Define nodes with improved styling
Claude["AI Assistant\n(Claude)"]:::claude
MCP["Terry-Form MCP\nServer"]:::server
Container["Terraform Docker\nContainer"]:::container
TF["Terraform CLI"]:::terraform
TFLS["Terraform-LS\nLanguage Server"]:::lsp
LocalTF[("Local Terraform\nConfigurations")]:::files
%% Define connections
Claude <---> MCP
MCP <---> Container
Container --> TF
Container --> TFLS
TF --- LocalTF
TFLS --- LocalTF
%% Define styles
classDef claude fill:#9C27B0,stroke:#6A1B9A,color:#FFFFFF,stroke-width:2px
classDef server fill:#2196F3,stroke:#0D47A1,color:#FFFFFF,stroke-width:2px
classDef container fill:#F5F5F5,stroke:#333333,stroke-width:2px
classDef terraform fill:#844FBA,stroke:#4C2889,color:#FFFFFF,stroke-width:2px
classDef lsp fill:#4CAF50,stroke:#2E7D32,color:#FFFFFF,stroke-width:2px
classDef files fill:#FFE0B2,stroke:#FB8C00,stroke-width:2px
%% Add a title
subgraph Terry-Form Component Architecture
end
データフローとセキュリティアーキテクチャ
flowchart LR
%% Main components
Claude["AI Assistant\n(Claude)"]:::claude
%% Docker container with components
subgraph Container["Docker Container"]
MCP["Terry-Form MCP Server"]:::mcp
TF["Terraform Engine"]:::terraform
%% Operations subgraph
subgraph Operations["Operations"]
direction TB
%% Allowed operations
subgraph Allowed["✅ Allowed"]
Init("init"):::safe
Validate("validate"):::safe
Format("fmt"):::safe
Plan("plan"):::safe
LSP("LSP"):::safe
end
%% Blocked operations
subgraph Blocked["❌ Blocked"]
Apply("apply"):::blocked
Destroy("destroy"):::blocked
end
end
end
%% External components
Files[("Local Files\n(/mnt/workspace)")]:::files
External["Remote Services\n(State/Cloud APIs)"]:::external
%% Connections
Claude <--> MCP
MCP --> TF
TF --> Operations
Files <--> Container
Blocked -.- |"NO ACCESS"| External
%% Styling
classDef claude fill:#9C27B0,color:#FFFFFF,stroke-width:2px,font-weight:bold
classDef mcp fill:#2196F3,color:#FFFFFF,stroke-width:2px,font-weight:bold
classDef terraform fill:#844FBA,color:#FFFFFF,stroke-width:2px,font-weight:bold
classDef files fill:#FF9800,color:#000000,stroke-width:2px,font-weight:bold
classDef safe fill:#8BC34A,color:#000000,stroke-width:1px,font-weight:bold
classDef blocked fill:#F44336,color:#FFFFFF,stroke-width:1px,font-weight:bold
classDef external fill:#9E9E9E,color:#FFFFFF,stroke-width:1px,font-weight:bold
style Container fill:#F5F5F5,stroke:#333333,stroke-width:3px
style Operations fill:#FAFAFA,stroke:#616161,stroke-width:1px
style Allowed fill:#E8F5E9,stroke:#2E7D32,stroke-width:2px
style Blocked fill:#FFEBEE,stroke:#C62828,stroke-width:2px
コンポーネント
- server_enhanced_with_lsp.py:
terryとLSPツールの両方を公開するFastMCPベースのサーバー - terry-form-mcp.py:コアTerraform実行ロジックとサブプロセスの処理
- terraform_lsp_client.py:terraform-ls統合のためのLSPクライアント実装
- Dockerfile_enhanced_lsp:Python、FastMCP、およびterraform-lsが統合されたHashiCorp Terraformイメージ
- Docker Container:Terraformとterraform-lsが事前にインストールされた分離された実行環境
📄 ライセンス
MITライセンス - 詳細についてはLICENSEファイルを参照してください。
変更履歴
v2.0.0
- 包括的なLanguage Server Protocol (LSP)統合を追加しました。
- インテリジェントなコード補完、ドキュメント、および検証を実装しました。
- 環境とワークスペース分析のための6つの新しい診断ツールを追加しました。
- terraform-lsを含むDockerイメージを強化しました。
- エラーハンドリングとワークスペース管理を改善しました。
v1.0.0
- 基本的なTerraform操作を備えた初期リリースです。
- FastMCP統合を行いました。
- Dockerコンテナ化をサポートしました。
- init、validate、fmt、およびplanアクションをサポートしました。
セキュリティに関する考慮事項
セキュリティアーキテクチャ
Terry-Form MCPは、複数の保護層を持つ堅牢なセキュリティモデルを実装しています。
flowchart TB
%% Define external nodes
Requests["AI Assistant\nTool Requests"]:::external
Execution["Secure Terraform\nExecution"]:::execution
%% Security Layers Group
subgraph SecurityLayers["Security Architecture"]
direction TB
%% Layer 1
subgraph L1["Layer 1: Physical Isolation"]
direction LR
Docker["Docker Containerization"]:::layer1
end
%% Layer 2
subgraph L2["Layer 2: Access Control"]
direction LR
ReadOnly["Read-Only File System Mount"]:::layer2
NoNetwork["No External Network Access"]:::layer2
end
%% Layer 3
subgraph L3["Layer 3: Operation Restrictions"]
direction LR
SafeOpsOnly["Safe Operations Only\n(init, validate, fmt, plan)"]:::layer3
NoStateModification["No State Modification"]:::layer3
end
%% Layer 4
subgraph L4["Layer 4: Input Validation"]
direction LR
PathValidation["Path Validation\n& Sanitization"]:::layer4
VariableSanitization["Variable Input Sanitization"]:::layer4
end
%% Define internal connections
L1 --> L2
L2 --> L3
L3 --> L4
end
%% Define external connections
Requests --> SecurityLayers
SecurityLayers --> Execution
%% Define styles
classDef external fill:#9C27B0,stroke:#6A1B9A,color:#FFFFFF,stroke-width:2px
classDef execution fill:#4CAF50,stroke:#2E7D32,color:#FFFFFF,stroke-width:2px
classDef layer1 fill:#E8F4FF,stroke:#1976D2,stroke-width:2px
classDef layer2 fill:#E5FFE8,stroke:#43A047,stroke-width:2px
classDef layer3 fill:#FFF4E8,stroke:#FB8C00,stroke-width:2px
classDef layer4 fill:#F8E8FF,stroke:#7B1FA2,stroke-width:2px
%% Group styles
style SecurityLayers fill:#F5F5F5,stroke:#333333,stroke-width:2px
style L1 fill:#E8F4FF,stroke:#1976D2,stroke-width:1px
style L2 fill:#E5FFE8,stroke:#43A047,stroke-width:1px
style L3 fill:#FFF4E8,stroke:#FB8C00,stroke-width:1px
style L4 fill:#F8E8FF,stroke:#7B1FA2,stroke-width:1px
安全な操作のみ
- Apply/Destroy不可:読み取り専用の操作のみがサポートされています。
- 状態アクセス不可:Terraformの状態ファイルを変更することはできません。
- コンテナ分離:すべての実行は一時的なコンテナ内で行われます。
セキュリティ対策
- Dockerコンテナ化
- ホストシステムから完全に分離されています。
- 永続的な状態を持たない一時的なコンテナです。
- 特権アクセスや機能はありません。
- 読み取り専用のファイルシステムマウント
- ローカルのTerraformファイルは読み取り専用でマウントされます。
- コンテナはホストファイルを変更することができません。
- ワークスペースは
/mnt/workspaceにのみ分離されます。
- 操作制限
- 安全な操作(init、validate、fmt、plan)のみが許可されます。
- 状態を変更する操作(apply、destroy)は許可されません。
- リモートの状態アクセスや変更はできません。
- ネットワーク分離
- 外部ネットワークへの接続はありません。
- クラウドプロバイダーのAPIにアクセスすることはできません。
- リモートのTerraform状態にアクセスすることはできません。
- 入力検証
- パス検証によりパストラバーサルを防止します。
- 変数のサニタイズによりインジェクション攻撃を防止します。
- JSONリクエストの検証とスキーマの強制を行います。
- 安全な実行パターン
- タイムアウト付きのサブプロセス実行を行います。
- エラーハンドリングとリソースのクリーンアップを行います。
- 構造化された出力の検証を行います。
ベストプラクティス
- 計画する前に常に構成を検証してください。
- 敏感なデフォルト値ではなく、特定の変数値を使用してください。
- 本番環境ではコンテナのリソース使用量を監視してください。
- HashiCorp Terraformのベースイメージを定期的に更新してください。
- LSP検証ツールを使用して早期に問題を検出してください。
トラブルシューティング
一般的な問題
- LSPが初期化されない場合
terry_environment_check()でコンテナ内にterraform-lsが利用可能か確認してください。- ワークスペースに有効なTerraformファイルがあることを確認してください。
terry_lsp_init(workspace_path="your-project")で手動で初期化してください。
- Dockerマウントの問題
- Dockerマウント構成のパスを確認してください。
- ホストマシン上にワークスペースディレクトリが存在することを確認してください。
- ホストディレクトリのファイルパーミッションを確認してください。
- LSP機能が機能しない場合
terraform_lsp_status()でLSPのステータスを確認してください。- 拡張されたイメージ(terry-form-mcp-lsp-enhanced)を使用していることを確認してください。
- ファイルパスがワークスペースに対して正しく指定されていることを確認してください。
- Terraform実行エラー
- まず
terry(path="your-project", actions=["init"])でワークスペースを初期化してください。 terraform_validate_lsp(file_path="main.tf")で構文エラーをチェックしてください。- プロバイダー構成と必要な変数を確認してください。
- まず
デバッグモード
トラブルシューティングのために詳細な出力を有効にするには、以下のコマンドを実行します。
docker run -it --rm \
-v "$(pwd)":/mnt/workspace \
-e TF_LOG=DEBUG \
-e PYTHONUNBUFFERED=1 \
terry-form-mcp
開発
ローカル開発環境のセットアップ
- リポジトリをクローンします。
- 依存関係をインストールします。
pip install fastmcp asyncio
- 拡張されたサーバーをローカルで実行します。
python3 server_enhanced_with_lsp.py
カスタムイメージのビルド
Dockerfileを変更してコンテナをカスタマイズします。
# カスタム変更を加えてビルドする
docker build -t terry-form-mcp-custom .
テスト
LSP機能をテストします。
# LSPクライアントの初期化をテストする
python3 -c "import terraform_lsp_client; import asyncio; asyncio.run(terraform_lsp_client.get_lsp_client('/path/to/workspace'))"
# Dockerでテストする
docker run -i --rm \
-v "$(pwd):/mnt/workspace" \
terry-form-mcp \
python3 -c "import json; print(json.dumps({'tool': 'terraform_lsp_status'}))"
プロジェクト構造
terry-form-mcp/
├── server_enhanced_with_lsp.py # 包括的なLSP統合を備えた拡張FastMCPサーバー
├── terry-form-mcp.py # コアTerraform実行ロジック
├── terraform_lsp_client.py # LSPクライアント実装
├── Dockerfile # LSPサポート付きのコンテナビルド構成
├── build.sh # ビルドスクリプト(Linux/macOS)
├── build.bat # ビルドスクリプト(Windows)
├── examples/ # 使用例とドキュメント
│ ├── LSP_INTEGRATION.md # 詳細なLSP統合ドキュメント
│ ├── claude-desktop-config.json # サンプルClaude Desktop構成
│ └── claude-desktop-lsp-config.json # サンプルClaude Desktop LSP構成
├── test-terraform-project/ # テスト用のサンプルTerraformプロジェクト
│ └── main.tf # サンプルTerraform構成
├── README.md # ドキュメント
├── CHANGELOG.md # バージョン履歴
├── CONTRIBUTING.md # コントリビューションガイドライン
└── LICENSE # MITライセンス
制限事項
- 読み取り専用操作:
applyまたはdestroyコマンドを実行することはできません。 - 状態管理なし:Terraformの状態にアクセスしたり変更したりすることはできません。
- ローカル実行のみ:ローカル開発ワークフローを対象としています。
- 変数タイプ:コマンドラインを介して文字列変数のみがサポートされています。
- LSP初期化:最初のLSP操作の初期化に数秒かかる場合があります。
サポート
問題、質問、またはコントリビューションについては、以下の手順に従ってください。
- GitHubリポジトリに問題を作成してください。
- コントリビューションガイドラインに従ってください。
- 同様の問題について既存の問題を確認してください。
注意事項
このツールは開発とテストのワークフローを対象としています。本番環境のTerraform操作については、適切なセキュリティ制御と状態管理を備えた適切なCI/CDパイプラインを使用してください。
代替品








