@bldg-7/proxmox-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1033 -0
  3. package/dist/client/proxmox.d.ts +14 -0
  4. package/dist/client/proxmox.d.ts.map +1 -0
  5. package/dist/client/proxmox.js +82 -0
  6. package/dist/client/proxmox.js.map +1 -0
  7. package/dist/config/index.d.ts +4 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +24 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/schema.d.ts +31 -0
  12. package/dist/config/schema.d.ts.map +1 -0
  13. package/dist/config/schema.js +32 -0
  14. package/dist/config/schema.js.map +1 -0
  15. package/dist/formatters/index.d.ts +42 -0
  16. package/dist/formatters/index.d.ts.map +1 -0
  17. package/dist/formatters/index.js +85 -0
  18. package/dist/formatters/index.js.map +1 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +40 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/middleware/index.d.ts +41 -0
  24. package/dist/middleware/index.d.ts.map +1 -0
  25. package/dist/middleware/index.js +69 -0
  26. package/dist/middleware/index.js.map +1 -0
  27. package/dist/prompts/index.d.ts +2 -0
  28. package/dist/prompts/index.d.ts.map +1 -0
  29. package/dist/prompts/index.js +2 -0
  30. package/dist/prompts/index.js.map +1 -0
  31. package/dist/resources/index.d.ts +2 -0
  32. package/dist/resources/index.d.ts.map +1 -0
  33. package/dist/resources/index.js +2 -0
  34. package/dist/resources/index.js.map +1 -0
  35. package/dist/schemas/backup.d.ts +101 -0
  36. package/dist/schemas/backup.d.ts.map +1 -0
  37. package/dist/schemas/backup.js +43 -0
  38. package/dist/schemas/backup.js.map +1 -0
  39. package/dist/schemas/disk.d.ts +144 -0
  40. package/dist/schemas/disk.d.ts.map +1 -0
  41. package/dist/schemas/disk.js +60 -0
  42. package/dist/schemas/disk.js.map +1 -0
  43. package/dist/schemas/index.d.ts +7 -0
  44. package/dist/schemas/index.d.ts.map +1 -0
  45. package/dist/schemas/index.js +7 -0
  46. package/dist/schemas/index.js.map +1 -0
  47. package/dist/schemas/network.d.ts +140 -0
  48. package/dist/schemas/network.d.ts.map +1 -0
  49. package/dist/schemas/network.js +56 -0
  50. package/dist/schemas/network.js.map +1 -0
  51. package/dist/schemas/node.d.ts +16 -0
  52. package/dist/schemas/node.d.ts.map +1 -0
  53. package/dist/schemas/node.js +12 -0
  54. package/dist/schemas/node.js.map +1 -0
  55. package/dist/schemas/snapshot.d.ts +116 -0
  56. package/dist/schemas/snapshot.d.ts.map +1 -0
  57. package/dist/schemas/snapshot.js +34 -0
  58. package/dist/schemas/snapshot.js.map +1 -0
  59. package/dist/schemas/vm.d.ts +330 -0
  60. package/dist/schemas/vm.d.ts.map +1 -0
  61. package/dist/schemas/vm.js +111 -0
  62. package/dist/schemas/vm.js.map +1 -0
  63. package/dist/server.d.ts +5 -0
  64. package/dist/server.d.ts.map +1 -0
  65. package/dist/server.js +142 -0
  66. package/dist/server.js.map +1 -0
  67. package/dist/tools/backup.d.ts +35 -0
  68. package/dist/tools/backup.d.ts.map +1 -0
  69. package/dist/tools/backup.js +210 -0
  70. package/dist/tools/backup.js.map +1 -0
  71. package/dist/tools/cluster.d.ts +15 -0
  72. package/dist/tools/cluster.d.ts.map +1 -0
  73. package/dist/tools/cluster.js +82 -0
  74. package/dist/tools/cluster.js.map +1 -0
  75. package/dist/tools/command.d.ts +6 -0
  76. package/dist/tools/command.d.ts.map +1 -0
  77. package/dist/tools/command.js +26 -0
  78. package/dist/tools/command.js.map +1 -0
  79. package/dist/tools/disk.d.ts +45 -0
  80. package/dist/tools/disk.d.ts.map +1 -0
  81. package/dist/tools/disk.js +243 -0
  82. package/dist/tools/disk.js.map +1 -0
  83. package/dist/tools/index.d.ts +12 -0
  84. package/dist/tools/index.d.ts.map +1 -0
  85. package/dist/tools/index.js +20 -0
  86. package/dist/tools/index.js.map +1 -0
  87. package/dist/tools/network.d.ts +35 -0
  88. package/dist/tools/network.d.ts.map +1 -0
  89. package/dist/tools/network.js +270 -0
  90. package/dist/tools/network.js.map +1 -0
  91. package/dist/tools/node.d.ts +15 -0
  92. package/dist/tools/node.d.ts.map +1 -0
  93. package/dist/tools/node.js +73 -0
  94. package/dist/tools/node.js.map +1 -0
  95. package/dist/tools/registry.d.ts +12 -0
  96. package/dist/tools/registry.d.ts.map +1 -0
  97. package/dist/tools/registry.js +87 -0
  98. package/dist/tools/registry.js.map +1 -0
  99. package/dist/tools/snapshot.d.ts +45 -0
  100. package/dist/tools/snapshot.d.ts.map +1 -0
  101. package/dist/tools/snapshot.js +249 -0
  102. package/dist/tools/snapshot.js.map +1 -0
  103. package/dist/tools/vm-create.d.ts +8 -0
  104. package/dist/tools/vm-create.d.ts.map +1 -0
  105. package/dist/tools/vm-create.js +129 -0
  106. package/dist/tools/vm-create.js.map +1 -0
  107. package/dist/tools/vm-lifecycle.d.ts +67 -0
  108. package/dist/tools/vm-lifecycle.d.ts.map +1 -0
  109. package/dist/tools/vm-lifecycle.js +319 -0
  110. package/dist/tools/vm-lifecycle.js.map +1 -0
  111. package/dist/tools/vm-modify.d.ts +25 -0
  112. package/dist/tools/vm-modify.d.ts.map +1 -0
  113. package/dist/tools/vm-modify.js +155 -0
  114. package/dist/tools/vm-modify.js.map +1 -0
  115. package/dist/tools/vm-query.d.ts +20 -0
  116. package/dist/tools/vm-query.d.ts.map +1 -0
  117. package/dist/tools/vm-query.js +166 -0
  118. package/dist/tools/vm-query.js.map +1 -0
  119. package/dist/types/index.d.ts +5 -0
  120. package/dist/types/index.d.ts.map +1 -0
  121. package/dist/types/index.js +2 -0
  122. package/dist/types/index.js.map +1 -0
  123. package/dist/types/proxmox.d.ts +166 -0
  124. package/dist/types/proxmox.d.ts.map +1 -0
  125. package/dist/types/proxmox.js +2 -0
  126. package/dist/types/proxmox.js.map +1 -0
  127. package/dist/types/tools.d.ts +12 -0
  128. package/dist/types/tools.d.ts.map +1 -0
  129. package/dist/types/tools.js +64 -0
  130. package/dist/types/tools.js.map +1 -0
  131. package/dist/utils/index.d.ts +3 -0
  132. package/dist/utils/index.d.ts.map +1 -0
  133. package/dist/utils/index.js +8 -0
  134. package/dist/utils/index.js.map +1 -0
  135. package/dist/validators/index.d.ts +75 -0
  136. package/dist/validators/index.d.ts.map +1 -0
  137. package/dist/validators/index.js +185 -0
  138. package/dist/validators/index.js.map +1 -0
  139. package/package.json +51 -0
@@ -0,0 +1,155 @@
1
+ import { formatToolResponse, formatErrorResponse, } from '../formatters/index.js';
2
+ import { requireElevated } from '../middleware/index.js';
3
+ import { validateNodeName, validateVMID } from '../validators/index.js';
4
+ import { cloneLxcSchema, cloneVmSchema, resizeLxcSchema, resizeVmSchema, } from '../schemas/vm.js';
5
+ /**
6
+ * Clone an LXC container
7
+ * Requires elevated permissions
8
+ */
9
+ export async function cloneLxc(client, config, input) {
10
+ try {
11
+ // Check elevated permissions
12
+ requireElevated(config, 'clone LXC container');
13
+ // Validate input
14
+ const validated = cloneLxcSchema.parse(input);
15
+ const safeNode = validateNodeName(validated.node);
16
+ const safeVmid = validateVMID(validated.vmid);
17
+ const safeNewid = validateVMID(validated.newid);
18
+ // Call Proxmox API
19
+ const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/clone`, 'POST', {
20
+ newid: safeNewid,
21
+ hostname: validated.hostname,
22
+ });
23
+ // Format success response
24
+ const output = `📋 **Container Clone Initiated**\n\n` +
25
+ `• **Original ID**: ${safeVmid}\n` +
26
+ `• **New ID**: ${safeNewid}\n` +
27
+ `• **Hostname**: ${validated.hostname || `clone-${safeNewid}`}\n` +
28
+ `• **Node**: ${safeNode}\n` +
29
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
30
+ `Use \`get_vm_status\` to check the new container.`;
31
+ return formatToolResponse(output);
32
+ }
33
+ catch (error) {
34
+ return formatErrorResponse(error, 'Clone LXC Container');
35
+ }
36
+ }
37
+ /**
38
+ * Clone a QEMU VM
39
+ * Requires elevated permissions
40
+ */
41
+ export async function cloneVM(client, config, input) {
42
+ try {
43
+ // Check elevated permissions
44
+ requireElevated(config, 'clone QEMU VM');
45
+ // Validate input
46
+ const validated = cloneVmSchema.parse(input);
47
+ const safeNode = validateNodeName(validated.node);
48
+ const safeVmid = validateVMID(validated.vmid);
49
+ const safeNewid = validateVMID(validated.newid);
50
+ // Call Proxmox API
51
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/clone`, 'POST', {
52
+ newid: safeNewid,
53
+ name: validated.name,
54
+ });
55
+ // Format success response
56
+ const output = `📋 **VM Clone Initiated**\n\n` +
57
+ `• **Original ID**: ${safeVmid}\n` +
58
+ `• **New ID**: ${safeNewid}\n` +
59
+ `• **Name**: ${validated.name || `clone-${safeNewid}`}\n` +
60
+ `• **Node**: ${safeNode}\n` +
61
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
62
+ `Use \`get_vm_status\` to check the new VM.`;
63
+ return formatToolResponse(output);
64
+ }
65
+ catch (error) {
66
+ return formatErrorResponse(error, 'Clone QEMU VM');
67
+ }
68
+ }
69
+ /**
70
+ * Resize an LXC container (memory and/or CPU cores)
71
+ * Requires elevated permissions
72
+ */
73
+ export async function resizeLxc(client, config, input) {
74
+ try {
75
+ // Check elevated permissions
76
+ requireElevated(config, 'resize LXC container');
77
+ // Validate input
78
+ const validated = resizeLxcSchema.parse(input);
79
+ const safeNode = validateNodeName(validated.node);
80
+ const safeVmid = validateVMID(validated.vmid);
81
+ // Build config object with provided values
82
+ const configUpdate = {};
83
+ if (validated.memory !== undefined) {
84
+ configUpdate.memory = validated.memory;
85
+ }
86
+ if (validated.cores !== undefined) {
87
+ configUpdate.cores = validated.cores;
88
+ }
89
+ // Ensure at least one parameter is provided
90
+ if (Object.keys(configUpdate).length === 0) {
91
+ return formatErrorResponse(new Error('At least one of memory or cores must be specified'), 'Resize LXC Container');
92
+ }
93
+ // Call Proxmox API
94
+ await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/config`, 'PUT', configUpdate);
95
+ // Format success response
96
+ let output = `📏 **Container Resize Initiated**\n\n` +
97
+ `• **Container ID**: ${safeVmid}\n` +
98
+ `• **Node**: ${safeNode}\n`;
99
+ if (validated.memory !== undefined) {
100
+ output += `• **New Memory**: ${validated.memory} MB\n`;
101
+ }
102
+ if (validated.cores !== undefined) {
103
+ output += `• **New Cores**: ${validated.cores}\n`;
104
+ }
105
+ output += `\n**Note**: Changes will take effect after container restart.`;
106
+ return formatToolResponse(output);
107
+ }
108
+ catch (error) {
109
+ return formatErrorResponse(error, 'Resize LXC Container');
110
+ }
111
+ }
112
+ /**
113
+ * Resize a QEMU VM (memory and/or CPU cores)
114
+ * Requires elevated permissions
115
+ */
116
+ export async function resizeVM(client, config, input) {
117
+ try {
118
+ // Check elevated permissions
119
+ requireElevated(config, 'resize QEMU VM');
120
+ // Validate input
121
+ const validated = resizeVmSchema.parse(input);
122
+ const safeNode = validateNodeName(validated.node);
123
+ const safeVmid = validateVMID(validated.vmid);
124
+ // Build config object with provided values
125
+ const configUpdate = {};
126
+ if (validated.memory !== undefined) {
127
+ configUpdate.memory = validated.memory;
128
+ }
129
+ if (validated.cores !== undefined) {
130
+ configUpdate.cores = validated.cores;
131
+ }
132
+ // Ensure at least one parameter is provided
133
+ if (Object.keys(configUpdate).length === 0) {
134
+ return formatErrorResponse(new Error('At least one of memory or cores must be specified'), 'Resize QEMU VM');
135
+ }
136
+ // Call Proxmox API
137
+ await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/config`, 'PUT', configUpdate);
138
+ // Format success response
139
+ let output = `📏 **VM Resize Initiated**\n\n` +
140
+ `• **VM ID**: ${safeVmid}\n` +
141
+ `• **Node**: ${safeNode}\n`;
142
+ if (validated.memory !== undefined) {
143
+ output += `• **New Memory**: ${validated.memory} MB\n`;
144
+ }
145
+ if (validated.cores !== undefined) {
146
+ output += `• **New Cores**: ${validated.cores}\n`;
147
+ }
148
+ output += `\n**Note**: Changes will take effect after VM restart.`;
149
+ return formatToolResponse(output);
150
+ }
151
+ catch (error) {
152
+ return formatErrorResponse(error, 'Resize QEMU VM');
153
+ }
154
+ }
155
+ //# sourceMappingURL=vm-modify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-modify.js","sourceRoot":"","sources":["../../src/tools/vm-modify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ProxmoxApiClient } from '../client/proxmox.js';
2
+ import type { Config } from '../config/index.js';
3
+ import type { ToolResponse } from '../types/index.js';
4
+ import type { GetVmsInput, GetVmStatusInput, GetStorageInput } from '../schemas/vm.js';
5
+ /**
6
+ * List all VMs/LXCs across cluster with status.
7
+ * No elevated permissions required.
8
+ */
9
+ export declare function getVMs(client: ProxmoxApiClient, _config: Config, input: GetVmsInput): Promise<ToolResponse>;
10
+ /**
11
+ * Get detailed status for a specific VM/LXC.
12
+ * No elevated permissions required.
13
+ */
14
+ export declare function getVMStatus(client: ProxmoxApiClient, _config: Config, input: GetVmStatusInput): Promise<ToolResponse>;
15
+ /**
16
+ * List all storage pools and their usage.
17
+ * No elevated permissions required.
18
+ */
19
+ export declare function getStorage(client: ProxmoxApiClient, _config: Config, input: GetStorageInput): Promise<ToolResponse>;
20
+ //# sourceMappingURL=vm-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-query.d.ts","sourceRoot":"","sources":["../../src/tools/vm-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAWtD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOvF;;;GAGG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,YAAY,CAAC,CAsEvB;AAeD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,YAAY,CAAC,CAqCvB;AAMD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,YAAY,CAAC,CA+DvB"}
@@ -0,0 +1,166 @@
1
+ import { formatToolResponse, formatErrorResponse, formatBytes, formatUptime, formatCpuPercent, } from '../formatters/index.js';
2
+ import { validateNodeName, validateVMID } from '../validators/index.js';
3
+ import { getVmsSchema, getVmStatusSchema, getStorageSchema } from '../schemas/vm.js';
4
+ /**
5
+ * List all VMs/LXCs across cluster with status.
6
+ * No elevated permissions required.
7
+ */
8
+ export async function getVMs(client, _config, input) {
9
+ try {
10
+ const validated = getVmsSchema.parse(input);
11
+ const nodeFilter = validated.node;
12
+ const typeFilter = validated.type || 'all';
13
+ let vms = [];
14
+ if (nodeFilter) {
15
+ // Single node logic
16
+ const safeNode = validateNodeName(nodeFilter);
17
+ if (typeFilter === 'all' || typeFilter === 'qemu') {
18
+ const nodeVMs = (await client.request(`/nodes/${safeNode}/qemu`));
19
+ vms.push(...nodeVMs.map((vm) => ({ ...vm, type: 'qemu', node: safeNode })));
20
+ }
21
+ if (typeFilter === 'all' || typeFilter === 'lxc') {
22
+ const nodeLXCs = (await client.request(`/nodes/${safeNode}/lxc`));
23
+ vms.push(...nodeLXCs.map((vm) => ({ ...vm, type: 'lxc', node: safeNode })));
24
+ }
25
+ }
26
+ else {
27
+ // All nodes logic
28
+ const nodes = (await client.request('/nodes'));
29
+ for (const node of nodes) {
30
+ if (typeFilter === 'all' || typeFilter === 'qemu') {
31
+ const nodeVMs = (await client.request(`/nodes/${node.node}/qemu`));
32
+ vms.push(...nodeVMs.map((vm) => ({ ...vm, type: 'qemu', node: node.node })));
33
+ }
34
+ if (typeFilter === 'all' || typeFilter === 'lxc') {
35
+ const nodeLXCs = (await client.request(`/nodes/${node.node}/lxc`));
36
+ vms.push(...nodeLXCs.map((vm) => ({ ...vm, type: 'lxc', node: node.node })));
37
+ }
38
+ }
39
+ }
40
+ // Sort by vmid (ascending)
41
+ vms.sort((a, b) => parseInt(String(a.vmid)) - parseInt(String(b.vmid)));
42
+ // Format output
43
+ let output = '💻 **Virtual Machines**\n\n';
44
+ if (vms.length === 0) {
45
+ output += 'No virtual machines found.\n';
46
+ }
47
+ else {
48
+ for (const vm of vms) {
49
+ const status = vm.status === 'running' ? '🟢' : vm.status === 'stopped' ? '🔴' : '🟡';
50
+ const typeIcon = vm.type === 'qemu' ? '🖥️' : '📦';
51
+ const uptime = vm.uptime ? formatUptime(vm.uptime) : 'N/A';
52
+ const cpuUsage = vm.mem && vm.maxmem ? formatCpuPercent(vm.mem / vm.maxmem) : 'N/A';
53
+ const memUsage = vm.mem && vm.maxmem ? `${formatBytes(vm.mem)} / ${formatBytes(vm.maxmem)}` : 'N/A';
54
+ output += `${status} ${typeIcon} **${vm.name || `VM-${vm.vmid}`}** (ID: ${vm.vmid})\n`;
55
+ output += ` • Node: ${vm.node}\n`;
56
+ output += ` • Status: ${vm.status}\n`;
57
+ output += ` • Type: ${vm.type.toUpperCase()}\n`;
58
+ if (vm.status === 'running') {
59
+ output += ` • Uptime: ${uptime}\n`;
60
+ output += ` • CPU: ${cpuUsage}\n`;
61
+ output += ` • Memory: ${memUsage}\n`;
62
+ }
63
+ output += '\n';
64
+ }
65
+ }
66
+ return formatToolResponse(output);
67
+ }
68
+ catch (error) {
69
+ return formatErrorResponse(error, 'Get VMs');
70
+ }
71
+ }
72
+ /**
73
+ * Get detailed status for a specific VM/LXC.
74
+ * No elevated permissions required.
75
+ */
76
+ export async function getVMStatus(client, _config, input) {
77
+ try {
78
+ const validated = getVmStatusSchema.parse(input);
79
+ const safeNode = validateNodeName(validated.node);
80
+ const safeVMID = validateVMID(validated.vmid);
81
+ const type = validated.type || 'qemu';
82
+ const vmStatus = (await client.request(`/nodes/${safeNode}/${type}/${safeVMID}/status/current`));
83
+ const status = vmStatus.status === 'running' ? '🟢' : vmStatus.status === 'stopped' ? '🔴' : '🟡';
84
+ const typeIcon = type === 'qemu' ? '🖥️' : '📦';
85
+ let output = `${status} ${typeIcon} **${vmStatus.name || `VM-${safeVMID}`}** (ID: ${safeVMID})\n\n`;
86
+ output += `• **Node**: ${safeNode}\n`;
87
+ output += `• **Status**: ${vmStatus.status}\n`;
88
+ output += `• **Type**: ${type.toUpperCase()}\n`;
89
+ if (vmStatus.status === 'running') {
90
+ output += `• **Uptime**: ${vmStatus.uptime ? formatUptime(vmStatus.uptime) : 'N/A'}\n`;
91
+ output += `• **CPU Usage**: ${vmStatus.cpu ? formatCpuPercent(vmStatus.cpu) : 'N/A'}\n`;
92
+ output += `• **Memory**: ${vmStatus.mem && vmStatus.maxmem
93
+ ? `${formatBytes(vmStatus.mem)} / ${formatBytes(vmStatus.maxmem)} (${((vmStatus.mem / vmStatus.maxmem) * 100).toFixed(1)}%)`
94
+ : 'N/A'}\n`;
95
+ output += `• **Disk Read**: ${vmStatus.diskread ? formatBytes(vmStatus.diskread) : 'N/A'}\n`;
96
+ output += `• **Disk Write**: ${vmStatus.diskwrite ? formatBytes(vmStatus.diskwrite) : 'N/A'}\n`;
97
+ output += `• **Network In**: ${vmStatus.netin ? formatBytes(vmStatus.netin) : 'N/A'}\n`;
98
+ output += `• **Network Out**: ${vmStatus.netout ? formatBytes(vmStatus.netout) : 'N/A'}\n`;
99
+ }
100
+ return formatToolResponse(output);
101
+ }
102
+ catch (error) {
103
+ return formatErrorResponse(error, 'Get VM Status');
104
+ }
105
+ }
106
+ /**
107
+ * List all storage pools and their usage.
108
+ * No elevated permissions required.
109
+ */
110
+ export async function getStorage(client, _config, input) {
111
+ try {
112
+ const validated = getStorageSchema.parse(input);
113
+ const nodeFilter = validated.node;
114
+ let storages = [];
115
+ if (nodeFilter) {
116
+ // Single node logic
117
+ const safeNode = validateNodeName(nodeFilter);
118
+ const nodeStorages = (await client.request(`/nodes/${safeNode}/storage`));
119
+ storages.push(...nodeStorages.map((storage) => ({ ...storage, node: safeNode })));
120
+ }
121
+ else {
122
+ // All nodes logic
123
+ const nodes = (await client.request('/nodes'));
124
+ for (const node of nodes) {
125
+ const nodeStorages = (await client.request(`/nodes/${node.node}/storage`));
126
+ storages.push(...nodeStorages.map((storage) => ({ ...storage, node: node.node })));
127
+ }
128
+ }
129
+ // Deduplicate by storage ID (keep first occurrence)
130
+ const uniqueStorages = [];
131
+ const seen = new Set();
132
+ for (const storage of storages) {
133
+ const key = storage.storage;
134
+ if (!seen.has(key)) {
135
+ seen.add(key);
136
+ uniqueStorages.push(storage);
137
+ }
138
+ }
139
+ // Sort by storage name
140
+ uniqueStorages.sort((a, b) => a.storage.localeCompare(b.storage));
141
+ // Format output
142
+ let output = '💾 **Storage Pools**\n\n';
143
+ if (uniqueStorages.length === 0) {
144
+ output += 'No storage found.\n';
145
+ }
146
+ else {
147
+ for (const storage of uniqueStorages) {
148
+ const status = storage.enabled ? '🟢' : '🔴';
149
+ const usagePercent = storage.total && storage.used ? ((storage.used / storage.total) * 100).toFixed(1) : 'N/A';
150
+ output += `${status} **${storage.storage}**\n`;
151
+ output += ` • Type: ${storage.type || 'N/A'}\n`;
152
+ output += ` • Node: ${storage.node}\n`;
153
+ output += ` • Content: ${storage.content || 'N/A'}\n`;
154
+ if (storage.total && storage.used) {
155
+ output += ` • Usage: ${formatBytes(storage.used)} / ${formatBytes(storage.total)} (${usagePercent}%)\n`;
156
+ }
157
+ output += ` • Status: ${storage.enabled ? 'Enabled' : 'Disabled'}\n\n`;
158
+ }
159
+ }
160
+ return formatToolResponse(output);
161
+ }
162
+ catch (error) {
163
+ return formatErrorResponse(error, 'Get Storage');
164
+ }
165
+ }
166
+ //# sourceMappingURL=vm-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-query.js","sourceRoot":"","sources":["../../src/tools/vm-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type { Config } from '../config/schema.js';
2
+ export type { ProxmoxAPIResponse, ProxmoxNode, ProxmoxVM, ProxmoxStorage, ProxmoxSnapshot, ProxmoxBackup, ProxmoxClusterStatus, ProxmoxTask, ProxmoxTemplate, ProxmoxNetwork, ProxmoxPool, ProxmoxPoolMember, ProxmoxFirewallRule, ProxmoxCertificate, ProxmoxDNS, VMType, PermissionLevel, } from './proxmox.js';
3
+ export { TOOL_NAMES, createToolResponse, } from './tools.js';
4
+ export type { ToolName, ToolResponse, } from './tools.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,MAAM,EACN,eAAe,GAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,UAAU,EACV,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,QAAQ,EACR,YAAY,GACb,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { TOOL_NAMES, createToolResponse, } from './tools.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,UAAU,EACV,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,166 @@
1
+ export type VMType = 'qemu' | 'lxc';
2
+ export type PermissionLevel = 'basic' | 'elevated';
3
+ export interface ProxmoxNode {
4
+ node: string;
5
+ status: string;
6
+ uptime: number;
7
+ cpu: number;
8
+ maxcpu: number;
9
+ mem: number;
10
+ maxmem: number;
11
+ disk: number;
12
+ maxdisk: number;
13
+ level: string;
14
+ id: string;
15
+ type: string;
16
+ ssl_fingerprint?: string;
17
+ loadavg?: number[];
18
+ }
19
+ export interface ProxmoxVM {
20
+ vmid: number;
21
+ name: string;
22
+ status: string;
23
+ node?: string;
24
+ type?: VMType;
25
+ cpus: number;
26
+ maxmem: number;
27
+ maxdisk: number;
28
+ uptime: number;
29
+ pid?: number;
30
+ mem?: number;
31
+ disk?: number;
32
+ netin?: number;
33
+ netout?: number;
34
+ diskread?: number;
35
+ diskwrite?: number;
36
+ template?: number;
37
+ lock?: string;
38
+ tags?: string;
39
+ }
40
+ export interface ProxmoxStorage {
41
+ storage: string;
42
+ type: string;
43
+ content: string;
44
+ active: number;
45
+ enabled: number;
46
+ total: number;
47
+ used: number;
48
+ avail: number;
49
+ shared: number;
50
+ used_fraction?: number;
51
+ }
52
+ export interface ProxmoxSnapshot {
53
+ name: string;
54
+ description: string;
55
+ snaptime?: number;
56
+ vmstate?: number;
57
+ parent?: string;
58
+ }
59
+ export interface ProxmoxBackup {
60
+ volid: string;
61
+ format: string;
62
+ size: number;
63
+ ctime: number;
64
+ content?: string;
65
+ notes?: string;
66
+ subtype?: string;
67
+ vmid?: number;
68
+ }
69
+ export interface ProxmoxTemplate {
70
+ volid: string;
71
+ format: string;
72
+ size: number;
73
+ content?: string;
74
+ }
75
+ export interface ProxmoxTask {
76
+ upid: string;
77
+ node: string;
78
+ pid: number;
79
+ pstart: number;
80
+ starttime: number;
81
+ type: string;
82
+ id: string;
83
+ user: string;
84
+ status?: string;
85
+ exitstatus?: string;
86
+ endtime?: number;
87
+ }
88
+ export interface ProxmoxNetwork {
89
+ iface: string;
90
+ type: string;
91
+ active: number;
92
+ autostart?: number;
93
+ method?: string;
94
+ address?: string;
95
+ netmask?: string;
96
+ gateway?: string;
97
+ cidr?: string;
98
+ bridge_ports?: string;
99
+ bridge_stp?: string;
100
+ bridge_fd?: string;
101
+ families?: string[];
102
+ priority?: number;
103
+ }
104
+ export interface ProxmoxPool {
105
+ poolid: string;
106
+ comment?: string;
107
+ members?: ProxmoxPoolMember[];
108
+ }
109
+ export interface ProxmoxPoolMember {
110
+ id: string;
111
+ node: string;
112
+ type: string;
113
+ vmid?: number;
114
+ storage?: string;
115
+ status?: string;
116
+ }
117
+ export interface ProxmoxClusterStatus {
118
+ id: string;
119
+ name: string;
120
+ type: string;
121
+ nodeid?: number;
122
+ ip?: string;
123
+ level?: string;
124
+ local?: number;
125
+ online?: number;
126
+ quorate?: number;
127
+ version?: number;
128
+ nodes?: number;
129
+ }
130
+ export interface ProxmoxFirewallRule {
131
+ pos: number;
132
+ type: string;
133
+ action: string;
134
+ enable?: number;
135
+ comment?: string;
136
+ source?: string;
137
+ dest?: string;
138
+ sport?: string;
139
+ dport?: string;
140
+ proto?: string;
141
+ macro?: string;
142
+ iface?: string;
143
+ log?: string;
144
+ }
145
+ export interface ProxmoxCertificate {
146
+ filename: string;
147
+ fingerprint: string;
148
+ issuer: string;
149
+ subject: string;
150
+ notbefore: number;
151
+ notafter: number;
152
+ san?: string[];
153
+ pem?: string;
154
+ 'public-key-bits'?: number;
155
+ 'public-key-type'?: string;
156
+ }
157
+ export interface ProxmoxDNS {
158
+ search: string;
159
+ dns1?: string;
160
+ dns2?: string;
161
+ dns3?: string;
162
+ }
163
+ export interface ProxmoxAPIResponse<T> {
164
+ data: T;
165
+ }
166
+ //# sourceMappingURL=proxmox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxmox.d.ts","sourceRoot":"","sources":["../../src/types/proxmox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=proxmox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxmox.js","sourceRoot":"","sources":["../../src/types/proxmox.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ export declare const TOOL_NAMES: readonly ["proxmox_get_nodes", "proxmox_get_node_status", "proxmox_get_vms", "proxmox_get_vm_status", "proxmox_execute_vm_command", "proxmox_get_storage", "proxmox_get_cluster_status", "proxmox_list_templates", "proxmox_create_lxc", "proxmox_create_vm", "proxmox_get_next_vmid", "proxmox_start_lxc", "proxmox_start_vm", "proxmox_stop_lxc", "proxmox_stop_vm", "proxmox_delete_lxc", "proxmox_delete_vm", "proxmox_reboot_lxc", "proxmox_reboot_vm", "proxmox_shutdown_lxc", "proxmox_shutdown_vm", "proxmox_pause_vm", "proxmox_resume_vm", "proxmox_clone_lxc", "proxmox_clone_vm", "proxmox_resize_lxc", "proxmox_resize_vm", "proxmox_create_snapshot_lxc", "proxmox_create_snapshot_vm", "proxmox_list_snapshots_lxc", "proxmox_list_snapshots_vm", "proxmox_rollback_snapshot_lxc", "proxmox_rollback_snapshot_vm", "proxmox_delete_snapshot_lxc", "proxmox_delete_snapshot_vm", "proxmox_create_backup_lxc", "proxmox_create_backup_vm", "proxmox_list_backups", "proxmox_restore_backup_lxc", "proxmox_restore_backup_vm", "proxmox_delete_backup", "proxmox_add_disk_vm", "proxmox_add_mountpoint_lxc", "proxmox_resize_disk_vm", "proxmox_resize_disk_lxc", "proxmox_remove_disk_vm", "proxmox_remove_mountpoint_lxc", "proxmox_move_disk_vm", "proxmox_move_disk_lxc", "proxmox_add_network_vm", "proxmox_add_network_lxc", "proxmox_update_network_vm", "proxmox_update_network_lxc", "proxmox_remove_network_vm", "proxmox_remove_network_lxc"];
2
+ export type ToolName = (typeof TOOL_NAMES)[number];
3
+ export type PermissionLevel = 'basic' | 'elevated';
4
+ export interface ToolResponse {
5
+ content: Array<{
6
+ type: 'text';
7
+ text: string;
8
+ }>;
9
+ isError?: boolean;
10
+ }
11
+ export declare function createToolResponse(text: string, isError?: boolean): ToolResponse;
12
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,s4CAwDb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,YAAY,CAK9E"}
@@ -0,0 +1,64 @@
1
+ export const TOOL_NAMES = [
2
+ 'proxmox_get_nodes',
3
+ 'proxmox_get_node_status',
4
+ 'proxmox_get_vms',
5
+ 'proxmox_get_vm_status',
6
+ 'proxmox_execute_vm_command',
7
+ 'proxmox_get_storage',
8
+ 'proxmox_get_cluster_status',
9
+ 'proxmox_list_templates',
10
+ 'proxmox_create_lxc',
11
+ 'proxmox_create_vm',
12
+ 'proxmox_get_next_vmid',
13
+ 'proxmox_start_lxc',
14
+ 'proxmox_start_vm',
15
+ 'proxmox_stop_lxc',
16
+ 'proxmox_stop_vm',
17
+ 'proxmox_delete_lxc',
18
+ 'proxmox_delete_vm',
19
+ 'proxmox_reboot_lxc',
20
+ 'proxmox_reboot_vm',
21
+ 'proxmox_shutdown_lxc',
22
+ 'proxmox_shutdown_vm',
23
+ 'proxmox_pause_vm',
24
+ 'proxmox_resume_vm',
25
+ 'proxmox_clone_lxc',
26
+ 'proxmox_clone_vm',
27
+ 'proxmox_resize_lxc',
28
+ 'proxmox_resize_vm',
29
+ 'proxmox_create_snapshot_lxc',
30
+ 'proxmox_create_snapshot_vm',
31
+ 'proxmox_list_snapshots_lxc',
32
+ 'proxmox_list_snapshots_vm',
33
+ 'proxmox_rollback_snapshot_lxc',
34
+ 'proxmox_rollback_snapshot_vm',
35
+ 'proxmox_delete_snapshot_lxc',
36
+ 'proxmox_delete_snapshot_vm',
37
+ 'proxmox_create_backup_lxc',
38
+ 'proxmox_create_backup_vm',
39
+ 'proxmox_list_backups',
40
+ 'proxmox_restore_backup_lxc',
41
+ 'proxmox_restore_backup_vm',
42
+ 'proxmox_delete_backup',
43
+ 'proxmox_add_disk_vm',
44
+ 'proxmox_add_mountpoint_lxc',
45
+ 'proxmox_resize_disk_vm',
46
+ 'proxmox_resize_disk_lxc',
47
+ 'proxmox_remove_disk_vm',
48
+ 'proxmox_remove_mountpoint_lxc',
49
+ 'proxmox_move_disk_vm',
50
+ 'proxmox_move_disk_lxc',
51
+ 'proxmox_add_network_vm',
52
+ 'proxmox_add_network_lxc',
53
+ 'proxmox_update_network_vm',
54
+ 'proxmox_update_network_lxc',
55
+ 'proxmox_remove_network_vm',
56
+ 'proxmox_remove_network_lxc',
57
+ ];
58
+ export function createToolResponse(text, isError = false) {
59
+ return {
60
+ content: [{ type: 'text', text }],
61
+ isError,
62
+ };
63
+ }
64
+ //# sourceMappingURL=tools.js.map