# 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/@AzBuilder/mcp-server-terrakube">
<img width="380" height="200" src="https://glama.ai/mcp/servers/@AzBuilder/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>"
}
}
}
}
```