Terraform Cloud MCP 서버
AI 어시스턴트를 Terraform Cloud API와 통합하는 모델 컨텍스트 프로토콜(MCP) 서버로, 자연스러운 대화를 통해 인프라를 관리할 수 있습니다. Pydantic 모델을 기반으로 구축되고 도메인별 모듈을 기반으로 구성된 이 서버는 Claude, Claude Code CLI, Claude Desktop, Cursor, Copilot Studio 등 모든 MCP 지원 플랫폼과 호환됩니다.
특징
계정 관리 : 인증된 사용자 또는 서비스 계정에 대한 계정 세부 정보를 가져옵니다.
작업 공간 관리 : 작업 공간을 만들고, 읽고, 업데이트하고, 삭제하고, 잠금/잠금 해제합니다.
프로젝트 관리 : 프로젝트를 생성, 나열, 업데이트, 삭제합니다. 프로젝트 태그 바인딩을 관리하고 프로젝트 간에 작업 공간을 이동합니다.
실행 관리 : 실행 생성, 실행 목록 작성, 실행 세부 정보 가져오기, 실행 적용/삭제/취소.
계획 관리 : 고급 HTTP 리디렉션 처리를 통해 계획 세부 정보와 JSON 실행 출력을 검색합니다.
적용 관리 : 적용 세부 정보를 받고 실패한 상태 업로드에서 복구합니다.
조직 관리 : 조직을 나열, 생성, 업데이트, 삭제하고 조직 권한을 확인합니다.
향후 기능 : 변수 관리, 상태 버전 등.
Related MCP server: tfmcp
빠른 시작
필수 조건
파이썬 3.12+
MCP(FastMCP 및 개발 도구 포함)
uv패키지 관리자(권장) 또는pipTerraform Cloud API 토큰
설치
지엑스피1
Claude Environments에 추가
Claude Code CLI에 추가
# Add to Claude Code with your Terraform Cloud token
claude mcp add -e TFC_TOKEN=YOUR_TF_TOKEN -s user terraform-cloud-mcp -- "terraform-cloud-mcp"Claude Desktop에 추가
claude_desktop_config.json 구성 파일을 만듭니다.
맥: ~/라이브러리/애플리케이션 지원/클로드/클로드_데스크탑_config.json
승리: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"terraform-cloud-mcp": {
"command": "/path/to/uv", # Get this by running: `which uv`
"args": [
"--directory",
"/path/to/your/terraform-cloud-mcp", # Full path to this project
"run",
"terraform-cloud-mcp"
],
"env": {
"TFC_TOKEN": "my token..." # replace with actual token
}
}
}
}your_terraform_cloud_token 실제 Terraform Cloud API 토큰으로 바꾸세요.
기타 MCP 호환 플랫폼
Cursor, Copilot Studio, Glama 등 다른 플랫폼의 경우, 각 플랫폼별 MCP 서버 추가 지침을 따르세요. 대부분의 플랫폼에는 다음이 필요합니다.
서버를 시작하기 위한 서버 경로 또는 명령입니다.
Terraform Cloud API 토큰에 대한 환경 변수입니다.
필요할 때 서버를 자동으로 시작하도록 구성합니다.
사용 가능한 도구
계정 도구
get_account_details(): 인증된 사용자 또는 서비스 계정에 대한 계정 정보를 가져옵니다.
작업 공간 관리 도구
목록 및 검색
list_workspaces(organization, page_number, page_size, search): 작업 공간을 나열하고 필터링합니다.get_workspace_details(workspace_id, organization, workspace_name): 특정 작업 공간에 대한 자세한 정보를 가져옵니다.
생성 및 업데이트
create_workspace(organization, name, params): 선택적 매개변수를 사용하여 새 작업 공간을 만듭니다.update_workspace(organization, workspace_name, params): 기존 작업 공간의 구성을 업데이트합니다.
삭제
delete_workspace(organization, workspace_name): 작업공간과 모든 콘텐츠를 삭제합니다.safe_delete_workspace(organization, workspace_name): 작업 공간이 리소스를 관리하지 않는 경우에만 삭제합니다.
잠금 및 잠금 해제
lock_workspace(workspace_id, reason): 실행을 방지하기 위해 작업 공간을 잠급니다.unlock_workspace(workspace_id): 실행을 허용하기 위해 작업 공간의 잠금을 해제합니다.force_unlock_workspace(workspace_id): 다른 사용자가 잠근 작업 공간을 강제로 잠금 해제합니다.
실행 관리 도구
create_run(workspace_id, params): ID를 사용하여 작업 공간에 Terraform 실행을 만들고 대기열에 추가합니다.list_runs_in_workspace(workspace_id, ...): ID를 사용하여 특정 작업 공간에서 실행을 나열하고 필터링합니다.list_runs_in_organization(organization, ...): 조직 전체에서 실행을 나열하고 필터링합니다.get_run_details(run_id): 특정 실행에 대한 자세한 정보를 가져옵니다.apply_run(run_id, comment): 확인을 기다리며 실행을 적용합니다.discard_run(run_id, comment): 확인을 기다리는 실행을 취소합니다.cancel_run(run_id, comment): 현재 계획 중이거나 적용 중인 실행을 취소합니다.force_cancel_run(run_id, comment): 실행을 즉시 강제로 취소합니다.force_execute_run(run_id): 이전 실행을 취소하여 보류 중인 실행을 강제로 실행합니다.
계획 관리 도구
get_plan_details(plan_id): 특정 계획에 대한 자세한 정보를 가져옵니다.get_plan_json_output(plan_id): 적절한 리디렉션 처리를 통해 특정 플랜에 대한 JSON 실행 플랜을 검색합니다.get_run_plan_json_output(run_id): 적절한 리디렉션 처리를 통해 실행에서 JSON 실행 계획을 검색합니다.
관리 도구 적용
get_apply_details(apply_id): 특정 지원에 대한 자세한 정보를 가져옵니다.get_errored_state(apply_id): 복구를 위해 실패한 적용에서 오류 상태를 검색합니다.
프로젝트 관리 도구
create_project(organization, name, params): 선택적 매개변수를 사용하여 새 프로젝트를 만듭니다.update_project(project_id, params): 기존 프로젝트의 구성을 업데이트합니다.list_projects(organization, ...): 조직의 프로젝트를 나열하고 필터링합니다.get_project_details(project_id): 특정 프로젝트에 대한 자세한 정보를 가져옵니다.delete_project(project_id): 프로젝트를 삭제합니다(작업 공간이 포함되어 있으면 실패합니다).list_project_tag_bindings(project_id): 프로젝트에 바인딩된 태그를 나열합니다.add_update_project_tag_bindings(project_id, tag_bindings): 프로젝트에 태그 바인딩을 추가하거나 업데이트합니다.move_workspaces_to_project(project_id, workspace_ids): 작업 공간을 프로젝트로 이동합니다.
조직 관리 도구
get_organization_details(organization): 특정 조직에 대한 자세한 정보를 가져옵니다.get_organization_entitlements(organization): 조직 기능에 대한 자격 집합을 표시합니다.list_organizations(page_number, page_size, query, query_email, query_name): 조직을 나열하고 필터링합니다.create_organization(name, email, params): 선택적 매개변수를 사용하여 새로운 조직을 만듭니다.update_organization(organization, params): 기존 조직의 설정을 업데이트합니다.delete_organization(organization): 조직과 모든 내용을 삭제합니다.
개발 가이드
코드 표준, Pydantic 패턴, 기여 워크플로를 포함한 자세한 개발 지침은 개발 문서를 참조하세요.
빠른 개발 설정
# Clone the repository
git clone https://github.com/severity1/terraform-cloud-mcp.git
cd terraform-cloud-mcp
# Create virtual environment and activate it
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install in development mode with development dependencies
uv pip install -e .
uv pip install black mypy pydantic ruff기본 개발 명령
# Run the server in development mode
mcp dev terraform_cloud_mcp/server.py
# Run tests and quality checks
uv run -m mypy .
uv run -m ruff check .
uv run -m black .코드 구성, 아키텍처, 개발 워크플로, 코드 품질 지침에 대한 자세한 내용은 docs/DEVELOPMENT.md 를 참조하세요.
선적 서류 비치
코드베이스에는 포괄적인 문서가 포함되어 있습니다.
코드 주석 : 구현 결정의 "이유"를 설명하는 데 중점을 둡니다.
Docstring : 모든 공개 함수와 클래스에는 자세한 docstring이 포함됩니다.
예제 파일 :
docs/디렉토리에는 각 도메인에 대한 자세한 예제가 포함되어 있습니다.docs/DEVELOPMENT.md: 개발 표준 및 코딩 가이드라인docs/CONTRIBUTING.md: 프로젝트 참여를 위한 지침docs/models/: 모든 모델 유형에 대한 사용 예docs/tools/: 각 도구에 대한 자세한 사용 예docs/conversations/: API를 사용한 샘플 대화 흐름
문제 해결
서버 로그 확인(디버그 로깅은 기본적으로 활성화되어 있음)
디버깅을 위해 MCP Inspector( http://localhost:5173 )를 사용하세요.
디버그 로깅은 이미
server.py에서 활성화되어 있습니다.import logging logging.basicConfig(level=logging.DEBUG)
기여하다
기여를 환영합니다! 이 프로젝트에 참여하고 싶으시다면 이슈를 개설하거나 풀 리퀘스트를 보내주세요.
시작하는 방법, 코드 품질 기준, 풀 리퀘스트 프로세스에 대한 자세한 지침은 기여 가이드를 참조하세요.