mcp-server-kubernetes
Version:
MCP server for interacting with Kubernetes clusters via kubectl
77 lines (76 loc) • 2.58 kB
TypeScript
import * as k8s from "@kubernetes/client-node";
import { PortForwardTracker, WatchTracker } from "../types.js";
export declare class KubernetesManager {
private resources;
private portForwards;
private watches;
private kc;
private k8sApi;
private k8sAppsApi;
private k8sBatchApi;
constructor();
/**
* A very simple test to check if the application is running inside a Kubernetes cluster
*/
private isRunningInCluster;
/**
* Check if KUBECONFIG_YAML environment variable is available
*/
private hasEnvKubeconfigYaml;
/**
* Check if KUBECONFIG_JSON environment variable is available
*/
private hasEnvKubeconfigJson;
/**
* Check if minimal K8S_SERVER and K8S_TOKEN environment variables are available
*/
private hasEnvMinimalKubeconfig;
/**
* Load kubeconfig from KUBECONFIG_PATH environment variable (file path)
*/
private loadEnvKubeconfigPath;
/**
* Load kubeconfig from KUBECONFIG_YAML environment variable (YAML format)
*/
private loadEnvKubeconfigYaml;
/**
* Load kubeconfig from KUBECONFIG_JSON environment variable (JSON format)
*/
private loadEnvKubeconfigJson;
/**
* Load kubeconfig from minimal K8S_SERVER and K8S_TOKEN environment variables
*/
private loadEnvMinimalKubeconfig;
/**
* Check if KUBECONFIG_PATH environment variable is available
*/
private hasEnvKubeconfigPath;
private hasEnvKubeconfig;
/**
* Set the current context to the desired context name.
*
* @param contextName
*/
setCurrentContext(contextName: string): void;
cleanup(): Promise<void>;
trackResource(kind: string, name: string, namespace: string): void;
deleteResource(kind: string, name: string, namespace: string): Promise<void>;
trackPortForward(pf: PortForwardTracker): void;
getPortForward(id: string): PortForwardTracker | undefined;
removePortForward(id: string): void;
trackWatch(watch: WatchTracker): void;
getKubeConfig(): k8s.KubeConfig;
getCoreApi(): k8s.CoreV1Api;
getAppsApi(): k8s.AppsV1Api;
getBatchApi(): k8s.BatchV1Api;
/**
* Get the default namespace for operations
* Uses K8S_NAMESPACE environment variable if set, otherwise defaults to "default"
*/
getDefaultNamespace(): string;
/**
* Create temporary kubeconfig file from YAML content for kubectl commands
* @param kubeconfigYaml YAML content of the kubeconfig
*/
private createTempKubeconfigFromYaml;
}