@takashito/linode-mcp-server
Version:
MCP server for Linode API
131 lines • 5.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createKubernetesClient = createKubernetesClient;
/**
* Creates a Kubernetes (LKE) client for interfacing with the Linode Kubernetes Engine API
*/
function createKubernetesClient(axios) {
return {
// Cluster operations
getClusters: async (params) => {
const response = await axios.get('/lke/clusters', { params });
return response.data;
},
getCluster: async (id) => {
const response = await axios.get(`/lke/clusters/${id}`);
return response.data;
},
createCluster: async (data) => {
const response = await axios.post('/lke/clusters', data);
return response.data;
},
updateCluster: async (id, data) => {
const response = await axios.put(`/lke/clusters/${id}`, data);
return response.data;
},
deleteCluster: async (id) => {
await axios.delete(`/lke/clusters/${id}`);
},
recycleCluster: async (id) => {
await axios.post(`/lke/clusters/${id}/recycle`);
},
// Node pool operations
getNodePools: async (clusterId) => {
const response = await axios.get(`/lke/clusters/${clusterId}/pools`);
// Linode API returns node pools as a paginated response, so extract the data array
return response.data.data;
},
getNodePool: async (clusterId, poolId) => {
const response = await axios.get(`/lke/clusters/${clusterId}/pools/${poolId}`);
return response.data;
},
createNodePool: async (clusterId, data) => {
const response = await axios.post(`/lke/clusters/${clusterId}/pools`, data);
return response.data;
},
updateNodePool: async (clusterId, poolId, data) => {
const response = await axios.put(`/lke/clusters/${clusterId}/pools/${poolId}`, data);
return response.data;
},
deleteNodePool: async (clusterId, poolId) => {
await axios.delete(`/lke/clusters/${clusterId}/pools/${poolId}`);
},
recycleNodes: async (clusterId, poolId, data) => {
await axios.post(`/lke/clusters/${clusterId}/pools/${poolId}/recycle`, data);
},
// Node operations
deleteNode: async (clusterId, nodeId) => {
await axios.delete(`/lke/clusters/${clusterId}/nodes/${nodeId}`);
},
recycleNode: async (clusterId, nodeId) => {
await axios.post(`/lke/clusters/${clusterId}/nodes/${nodeId}/recycle`);
},
// Cluster access
getKubeconfig: async (id) => {
const response = await axios.get(`/lke/clusters/${id}/kubeconfig`);
return response.data;
},
getAPIEndpoints: async (id) => {
const response = await axios.get(`/lke/clusters/${id}/api-endpoints`);
// Linode API returns endpoints as a paginated response, so extract the data array
return response.data.data;
},
getDashboardURL: async (id) => {
const response = await axios.get(`/lke/clusters/${id}/dashboard`);
return response.data;
},
deleteServiceToken: async (id) => {
await axios.delete(`/lke/clusters/${id}/servicetoken`);
},
// Control Plane ACL operations
getControlPlaneACL: async (clusterId) => {
const response = await axios.get(`/lke/clusters/${clusterId}/control_plane_acl`);
return response.data;
},
updateControlPlaneACL: async (clusterId, data) => {
const response = await axios.put(`/lke/clusters/${clusterId}/control_plane_acl`, data);
return response.data;
},
deleteControlPlaneACL: async (clusterId) => {
await axios.delete(`/lke/clusters/${clusterId}/control_plane_acl`);
},
// Kubeconfig operations
deleteKubeconfig: async (clusterId) => {
await axios.delete(`/lke/clusters/${clusterId}/kubeconfig`);
},
// Cluster regeneration
regenerateCluster: async (clusterId) => {
await axios.post(`/lke/clusters/${clusterId}/regenerate`);
},
// Node operations (get)
getNode: async (clusterId, nodeId) => {
const response = await axios.get(`/lke/clusters/${clusterId}/nodes/${nodeId}`);
return response.data;
},
// Tier version operations
getTierVersions: async (tier) => {
const response = await axios.get(`https://api.linode.com/v4beta/lke/tiers/${tier}/versions`);
return response.data.data;
},
getTierVersion: async (tier, version) => {
const response = await axios.get(`https://api.linode.com/v4beta/lke/tiers/${tier}/versions/${version}`);
return response.data;
},
// Version and type information
getVersions: async () => {
const response = await axios.get('/lke/versions');
// Linode API returns versions as a paginated response, so extract the data array
return response.data.data;
},
getVersion: async (version) => {
const response = await axios.get(`/lke/versions/${version}`);
return response.data;
},
getTypes: async () => {
const response = await axios.get('/lke/types');
// Linode API returns types as a paginated response, so extract the data array
return response.data.data;
}
};
}
//# sourceMappingURL=kubernetes.js.map