Terrakube MCP Server
[](https://mseep.ai/app/azbuilder-mcp-server-terrakube)
# Terrakube MCP Server
[](https://smithery.ai/server/@AzBuilder/mcp-server-terrakube)
<br/>
A Model Context Protocol (MCP) server for Terrakube operations, enabling workspace management, variable handling, module operations, and organization management.
<a href="https://glama.ai/mcp/servers/@terrakube-io/mcp-server-terrakube">
<img width="380" height="200" src="https://glama.ai/mcp/servers/@terrakube-io/mcp-server-terrakube/badge" alt="Terrakube Server MCP server" />
</a>
## Features
- **Comprehensive API Integration**: Full integration with Terrakube's API for seamless operations
- **Type Safety**: Built with TypeScript for enhanced type safety and developer experience
- **Error Handling**: Robust error handling with clear error messages
- **Environment Configuration**: Flexible configuration through environment variables
- **Modular Design**: Organized code structure for easy maintenance and extension
## Tools
### Workspaces
#### `createWorkspace`
Create a new workspace in Terrakube.
- **Inputs**:
- `name` (string): Name of the workspace
- `organization` (string): Organization name
- `description` (optional string): Workspace description
- `vcsProviderId` (optional string): VCS provider ID
- `vcsRepository` (optional string): VCS repository name
- `vcsBranch` (optional string): VCS branch name
- **Returns**: Created workspace details
#### `updateWorkspace`
Update an existing workspace.
- **Inputs**:
- `name` (string): Name of the workspace
- `organization` (string): Organization name
- `description` (optional string): New workspace description
- `vcsProviderId` (optional string): New VCS provider ID
- `vcsRepository` (optional string): New VCS repository name
- `vcsBranch` (optional string): New VCS branch name
- **Returns**: Updated workspace details
#### `deleteWorkspace`
Delete a workspace.
- **Inputs**:
- `name` (string): Name of the workspace
- `organization` (string): Organization name
- **Returns**: Success status
#### `getWorkspace`
Get details of a specific workspace.
- **Inputs**:
- `name` (string): Name of the workspace
- `organization` (string): Organization name
- **Returns**: Workspace details
#### `listWorkspaces`
List all workspaces in an organization.
- **Inputs**:
- `organization` (string): Organization name
- **Returns**: Array of workspace details
### Variables
#### `createVariable`
Create a new variable in a workspace.
- **Inputs**:
- `name` (string): Name of the variable
- `organization` (string): Organization name
- `workspace` (string): Workspace name
- `value` (string): Variable value
- `description` (optional string): Variable description
- `category` (optional string): Variable category
- `hcl` (optional boolean): Whether the variable is HCL
- `sensitive` (optional boolean): Whether the variable is sensitive
- **Returns**: Created variable details
#### `updateVariable`
Update an existing variable.
- **Inputs**:
- `name` (string): Name of the variable
- `organization` (string): Organization name
- `workspace` (string): Workspace name
- `value` (string): New variable value
- `description` (optional string): New variable description
- `category` (optional string): New variable category
- `hcl` (optional boolean): Whether the variable is HCL
- `sensitive` (optional boolean): Whether the variable is sensitive
- **Returns**: Updated variable details
#### `deleteVariable`
Delete a variable.
- **Inputs**:
- `name` (string): Name of the variable
- `organization` (string): Organization name
- `workspace` (string): Workspace name
- **Returns**: Success status
#### `getVariable`
Get details of a specific variable.
- **Inputs**:
- `name` (string): Name of the variable
- `organization` (string): Organization name
- `workspace` (string): Workspace name
- **Returns**: Variable details
#### `listVariables`
List all variables in a workspace.
- **Inputs**:
- `organization` (string): Organization name
- `workspace` (string): Workspace name
- **Returns**: Array of variable details
### Modules
#### `createModule`
Create a new module.
- **Inputs**:
- `name` (string): Name of the module
- `organization` (string): Organization name
- `provider` (string): Module provider
- `description` (optional string): Module description
- **Returns**: Created module details
#### `updateModule`
Update an existing module.
- **Inputs**:
- `name` (string): Name of the module
- `organization` (string): Organization name
- `provider` (string): Module provider
- `description` (optional string): New module description
- **Returns**: Updated module details
#### `deleteModule`
Delete a module.
- **Inputs**:
- `name` (string): Name of the module
- `organization` (string): Organization name
- `provider` (string): Module provider
- **Returns**: Success status
#### `getModule`
Get details of a specific module.
- **Inputs**:
- `name` (string): Name of the module
- `organization` (string): Organization name
- `provider` (string): Module provider
- **Returns**: Module details
#### `listModules`
List all modules in an organization.
- **Inputs**:
- `organization` (string): Organization name
- **Returns**: Array of module details
### Organizations
#### `createOrganization`
Create a new organization.
- **Inputs**:
- `name` (string): Name of the organization
- `description` (optional string): Organization description
- **Returns**: Created organization details
#### `updateOrganization`
Update an existing organization.
- **Inputs**:
- `name` (string): Name of the organization
- `description` (optional string): New organization description
- **Returns**: Updated organization details
#### `deleteOrganization`
Delete an organization.
- **Inputs**:
- `name` (string): Name of the organization
- **Returns**: Success status
#### `getOrganization`
Get details of a specific organization.
- **Inputs**:
- `name` (string): Name of the organization
- **Returns**: Organization details
#### `listOrganizations`
List all organizations.
- **Returns**: Array of organization details
## Setup
### Environment Variables
Create a `.env` file in the root directory with the following variables:
```env
TERRAKUBE_API_URL=<your-terrakube-api-url>
TERRAKUBE_PAT_TOKEN=<your-personal-access-token>
```
### Installing via Smithery
To install Terrakube MCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@AzBuilder/mcp-server-terrakube):
```bash
npx -y @smithery/cli install @AzBuilder/mcp-server-terrakube --client claude
```
### Development
1. Clone the repository:
```bash
git clone https://github.com/azbuilder/terrakube-mcp-server.git
cd terrakube-mcp-server
```
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
### Usage with Claude Desktop
To use this with Claude Desktop, add the following to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"terrakube": {
"command": "npx",
"args": [
"-y",
"@terrakube/mcp-server"
],
"env": {
"TERRAKUBE_API_URL": "<YOUR_API_URL>",
"TERRAKUBE_PAT_TOKEN": "<YOUR_PAT_TOKEN>"
}
}
}
}
```
TDQS
Scored across 16 tools
Every tool has a clearly distinct purpose with no ambiguity, as each combines a specific action (create, edit, get, list) with a specific resource type (module, organization, variable, workspace). The descriptions reinforce this clarity, making misselection unlikely.
Tool names follow a perfectly consistent verb-noun pattern throughout, using hyphen-separated lowercase (e.g., create-module, edit-organization). All tools adhere to this convention without any deviations or mixed styles.
With 16 tools, the count is well-scoped for managing Terraform-like resources (modules, organizations, variables, workspaces). Each tool earns its place by covering CRUD operations across four resource types, avoiding bloat or thinness.
The tool set provides complete CRUD/lifecycle coverage for the inferred domain of infrastructure management, with create, edit, get, and list operations for all four resource types. There are no obvious gaps or dead ends in the surface.