README.md•3.11 kB
# 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