A Model Context Protocol (MCP) server for Terrakube operations, enabling workspace management, variable handling, module operations, and organization management.
- 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
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
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
Delete a workspace.
-
Inputs:
-
name
(string): Name of the workspace -
organization
(string): Organization name
-
- Returns: Success status
Get details of a specific workspace.
-
Inputs:
-
name
(string): Name of the workspace -
organization
(string): Organization name
-
- Returns: Workspace details
List all workspaces in an organization.
-
Inputs:
-
organization
(string): Organization name
-
- Returns: Array of workspace details
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
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
Delete a variable.
-
Inputs:
-
name
(string): Name of the variable -
organization
(string): Organization name -
workspace
(string): Workspace name
-
- Returns: Success status
Get details of a specific variable.
-
Inputs:
-
name
(string): Name of the variable -
organization
(string): Organization name -
workspace
(string): Workspace name
-
- Returns: Variable details
List all variables in a workspace.
-
Inputs:
-
organization
(string): Organization name -
workspace
(string): Workspace name
-
- Returns: Array of variable details
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
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
Delete a module.
-
Inputs:
-
name
(string): Name of the module -
organization
(string): Organization name -
provider
(string): Module provider
-
- Returns: Success status
Get details of a specific module.
-
Inputs:
-
name
(string): Name of the module -
organization
(string): Organization name -
provider
(string): Module provider
-
- Returns: Module details
List all modules in an organization.
-
Inputs:
-
organization
(string): Organization name
-
- Returns: Array of module details
Create a new organization.
-
Inputs:
-
name
(string): Name of the organization -
description
(optional string): Organization description
-
- Returns: Created organization details
Update an existing organization.
-
Inputs:
-
name
(string): Name of the organization -
description
(optional string): New organization description
-
- Returns: Updated organization details
Delete an organization.
-
Inputs:
-
name
(string): Name of the organization
-
- Returns: Success status
Get details of a specific organization.
-
Inputs:
-
name
(string): Name of the organization
-
- Returns: Organization details
List all organizations.
- Returns: Array of organization details
Create a .env
file in the root directory with the following variables:
TERRAKUBE_API_URL=<your-terrakube-api-url>
TERRAKUBE_PAT_TOKEN=<your-personal-access-token>
-
Clone the repository:
git clone https://github.com/azbuilder/terrakube-mcp-server.git cd terrakube-mcp-server
-
Install dependencies:
npm install
-
Build the project:
npm run build
To use this with Claude Desktop, add the following to your claude_desktop_config.json
:
{
"mcpServers": {
"terrakube": {
"command": "npx",
"args": [
"-y",
"@terrakube/mcp-server"
],
"env": {
"TERRAKUBE_API_URL": "<YOUR_API_URL>",
"TERRAKUBE_PAT_TOKEN": "<YOUR_PAT_TOKEN>"
}
}
}
}