Terraform Cloud MCP Server
# Terraform Cloud MCP Server
Model Context Protocol server providing Terraform Cloud API integration as tools for AI assistants.
## Features
This MCP server exposes four main tools for interacting with Terraform Cloud:
- **get_run_status**: Get current run status and recent runs for a workspace
- **list_workspaces**: List all workspaces in an organization
- **get_workspace_details**: Get detailed information about a specific workspace
- **get_run_details**: Get detailed information about a specific run by its ID
## Installation
```bash
npm install
npm run build
```
## Configuration
The server reads your Terraform Cloud token from `~/.terraform.d/credentials.tfrc.json`. Make sure this file exists with the following format:
```json
{
"credentials": {
"app.terraform.io": {
"token": "your-terraform-cloud-token"
}
}
}
```
## Usage
### With Claude Desktop
Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
```json
{
"mcpServers": {
"terraform-cloud": {
"command": "node",
"args": ["/absolute/path/to/tf-cloud-mcp-server/build/index.js"]
}
}
}
```
### With MCP Inspector
Test your server with the MCP Inspector:
```bash
npx @modelcontextprotocol/inspector node build/index.js
```
### With VS Code
Create a `.vscode/mcp.json` file in your project:
```json
{
"servers": {
"terraform-cloud": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/tf-cloud-mcp-server/build/index.js"]
}
}
}
```
## Available Tools
### get_run_status
Get the current run status for a Terraform Cloud workspace.
**Parameters:**
- `workspaceName` (string, required): Name of the workspace
- `organization` (string, optional): Organization name (default: "urbanmedia")
**Example:**
```
Get the run status for workspace "capivara-dpa-importer"
```
### list_workspaces
List all workspaces in a Terraform Cloud organization.
**Parameters:**
- `organization` (string, optional): Organization name (default: "urbanmedia")
**Example:**
```
List all workspaces in urbanmedia organization
```
### get_workspace_details
Get detailed information about a specific workspace.
**Parameters:**
- `workspaceName` (string, required): Name of the workspace
- `organization` (string, optional): Organization name (default: "urbanmedia")
**Example:**
```
Get details for workspace "capivara-dpa-importer"
```
### get_run_details
Get detailed information about a specific Terraform Cloud run by its ID.
**Parameters:**
- `runId` (string, required): Run ID (e.g., "run-abc123")
**Example:**
```
Get details for run "run-abc123"
```
## Development
### Project Structure
```
tf-cloud-mcp-server/
├── src/
│ └── index.ts # Main server implementation
├── build/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md
```
### Running in Development
```bash
npm run dev # Watch mode for TypeScript compilation
```
### Building
```bash
npm run build
```
## License
MIT
TDQS
Scored across 4 tools
The tools are mostly distinct, with clear separation between workspace operations (list_workspaces, get_workspace_details) and run operations (get_run_details, get_run_status). However, get_run_details and get_run_status could potentially be confused since both relate to run information, though their descriptions differentiate them as 'detailed information' versus 'current status'.
All tool names follow a consistent verb_noun pattern with snake_case (e.g., get_run_details, list_workspaces). The verbs 'get' and 'list' are used appropriately and predictably throughout the set.
With only 4 tools, the server feels thin for managing Terraform Cloud resources. While it covers basic read operations, the scope suggests more comprehensive management (e.g., create/update/delete operations) would be expected, making the count borderline for the domain.
The toolset is severely incomplete for Terraform Cloud management. It only provides read operations (get and list) with no ability to create, update, or delete workspaces, runs, or other resources. This will cause significant agent failures when attempting full lifecycle management.