Skip to main content
Glama
OctopusDeploy

Octopus Deploy MCP Server

Official

get_kubernetes_live_status

Retrieve real-time Kubernetes resource status for Octopus Deploy projects and environments, including multi-tenant deployments.

Instructions

Get Kubernetes live status for a project and environment

This tool retrieves the live status of Kubernetes resources for a specific project and environment. Optionally include a tenant ID for multi-tenant deployments.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
spaceNameYesThe space name
projectIdYesThe ID of the project
environmentIdYesThe ID of the environment
tenantIdNoThe ID of the tenant (for multi-tenant deployments)
summaryOnlyNoReturn summary information only

Implementation Reference

  • The handler function that executes the tool logic: connects to Octopus Deploy, fetches Kubernetes live status via ObservabilityRepository, and returns formatted JSON.
    async ({ spaceName, projectId, environmentId, tenantId, summaryOnly = false }) => {
      const configuration = getClientConfigurationFromEnvironment();
      const client = await Client.create(configuration);
      const observabilityRepository = new ObservabilityRepository(client, spaceName);
    
      const liveStatus = await observabilityRepository.getLiveStatus(
        projectId,
        environmentId,
        tenantId,
        summaryOnly
      );
    
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify({
              projectId,
              environmentId,
              tenantId,
              summaryOnly: summaryOnly,
              liveStatus: {
                machineStatuses: liveStatus.MachineStatuses?.map((machine: KubernetesMachineLiveStatusResource) => ({
                  machineId: machine.MachineId,
                  status: machine.Status,
                  resources: machine.Resources?.map((resource: KubernetesLiveStatusResource) => ({
                    name: resource.Name,
                    namespace: resource.Namespace,
                    kind: resource.Kind,
                    healthStatus: resource.HealthStatus,
                    syncStatus: resource.SyncStatus,
                    machineId: resource.MachineId,
                    children: resource.Children,
                    desiredResourceId: resource.DesiredResourceId,
                    resourceId: resource.ResourceId
                  }))
                })),
                summary: liveStatus.Summary ? {
                  status: liveStatus.Summary.Status,
                  lastUpdated: liveStatus.Summary.LastUpdated
                } : undefined
              }
            }),
          },
        ],
      };
    }
  • Zod schema defining the input parameters for the tool.
      spaceName: z.string().describe("The space name"),
      projectId: z.string().describe("The ID of the project"),
      environmentId: z.string().describe("The ID of the environment"),
      tenantId: z.string().optional().describe("The ID of the tenant (for multi-tenant deployments)"),
      summaryOnly: z.boolean().optional().describe("Return summary information only")
    },
  • Function that registers the tool with the MCP server, including name, description, input schema, output metadata, and handler.
    export function registerGetKubernetesLiveStatusTool(server: McpServer) {
      server.tool(
        "get_kubernetes_live_status",
        `Get Kubernetes live status for a project and environment
      
      This tool retrieves the live status of Kubernetes resources for a specific project and environment. Optionally include a tenant ID for multi-tenant deployments.`,
        { 
          spaceName: z.string().describe("The space name"),
          projectId: z.string().describe("The ID of the project"),
          environmentId: z.string().describe("The ID of the environment"),
          tenantId: z.string().optional().describe("The ID of the tenant (for multi-tenant deployments)"),
          summaryOnly: z.boolean().optional().describe("Return summary information only")
        },
        {
          title: "Get Kubernetes live status from Octopus Deploy",
          readOnlyHint: true,
        },
        async ({ spaceName, projectId, environmentId, tenantId, summaryOnly = false }) => {
          const configuration = getClientConfigurationFromEnvironment();
          const client = await Client.create(configuration);
          const observabilityRepository = new ObservabilityRepository(client, spaceName);
    
          const liveStatus = await observabilityRepository.getLiveStatus(
            projectId,
            environmentId,
            tenantId,
            summaryOnly
          );
    
          return {
            content: [
              {
                type: "text",
                text: JSON.stringify({
                  projectId,
                  environmentId,
                  tenantId,
                  summaryOnly: summaryOnly,
                  liveStatus: {
                    machineStatuses: liveStatus.MachineStatuses?.map((machine: KubernetesMachineLiveStatusResource) => ({
                      machineId: machine.MachineId,
                      status: machine.Status,
                      resources: machine.Resources?.map((resource: KubernetesLiveStatusResource) => ({
                        name: resource.Name,
                        namespace: resource.Namespace,
                        kind: resource.Kind,
                        healthStatus: resource.HealthStatus,
                        syncStatus: resource.SyncStatus,
                        machineId: resource.MachineId,
                        children: resource.Children,
                        desiredResourceId: resource.DesiredResourceId,
                        resourceId: resource.ResourceId
                      }))
                    })),
                    summary: liveStatus.Summary ? {
                      status: liveStatus.Summary.Status,
                      lastUpdated: liveStatus.Summary.LastUpdated
                    } : undefined
                  }
                }),
              },
            ],
          };
        }
      );
    }
  • Registers the tool in the global TOOL_REGISTRY for conditional enabling based on config.
    registerToolDefinition({
      toolName: "get_kubernetes_live_status",
      config: { toolset: "kubernetes", readOnly: true },
      registerFn: registerGetKubernetesLiveStatusTool,
      minimumOctopusVersion: "2025.3",
    });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OctopusDeploy/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server