Skip to main content
Glama
matchs

Terraform Cloud MCP Server

by matchs
README.md
# 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

B3.2/5.0

Scored across 4 tools

Disambiguation4/5

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'.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness2/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues