@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,15 @@
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 { GetNodesInput, GetNodeStatusInput } from '../schemas/node.js';
5
+ /**
6
+ * List all Proxmox cluster nodes with their status and resource usage.
7
+ * No elevated permissions required.
8
+ */
9
+ export declare function getNodes(client: ProxmoxApiClient, _config: Config, input: GetNodesInput): Promise<ToolResponse>;
10
+ /**
11
+ * Get detailed status for a specific node.
12
+ * Requires elevated permissions.
13
+ */
14
+ export declare function getNodeStatus(client: ProxmoxApiClient, config: Config, input: GetNodeStatusInput): Promise<ToolResponse>;
15
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/tools/node.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;AAatD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5E;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CAiCvB;AAUD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,YAAY,CAAC,CAqCvB"}
@@ -0,0 +1,73 @@
1
+ import { formatToolResponse, formatErrorResponse, formatPermissionDenied, formatBytes, formatUptime, formatCpuPercent, } from '../formatters/index.js';
2
+ import { requireElevated } from '../middleware/index.js';
3
+ import { validateNodeName } from '../validators/index.js';
4
+ import { getNodesSchema, getNodeStatusSchema } from '../schemas/node.js';
5
+ /**
6
+ * List all Proxmox cluster nodes with their status and resource usage.
7
+ * No elevated permissions required.
8
+ */
9
+ export async function getNodes(client, _config, input) {
10
+ try {
11
+ // Validate input (empty schema)
12
+ getNodesSchema.parse(input);
13
+ // Call Proxmox API
14
+ const nodes = (await client.request('/nodes'));
15
+ // Format response
16
+ let output = '🖥️ **Proxmox Cluster Nodes**\n\n';
17
+ for (const node of nodes) {
18
+ const status = node.status === 'online' ? '🟢' : '🔴';
19
+ const uptime = node.uptime ? formatUptime(node.uptime) : 'N/A';
20
+ const cpuUsage = node.cpu ? formatCpuPercent(node.cpu) : 'N/A';
21
+ const memUsage = node.mem && node.maxmem
22
+ ? `${formatBytes(node.mem)} / ${formatBytes(node.maxmem)} (${((node.mem / node.maxmem) * 100).toFixed(1)}%)`
23
+ : 'N/A';
24
+ const loadAvg = node.loadavg ? node.loadavg[0]?.toFixed(2) : 'N/A';
25
+ output += `${status} **${node.node}**\n`;
26
+ output += ` • Status: ${node.status}\n`;
27
+ output += ` • Uptime: ${uptime}\n`;
28
+ output += ` • CPU: ${cpuUsage}\n`;
29
+ output += ` • Memory: ${memUsage}\n`;
30
+ output += ` • Load: ${loadAvg}\n\n`;
31
+ }
32
+ return formatToolResponse(output);
33
+ }
34
+ catch (error) {
35
+ return formatErrorResponse(error, 'Get Nodes');
36
+ }
37
+ }
38
+ /**
39
+ * Get detailed status for a specific node.
40
+ * Requires elevated permissions.
41
+ */
42
+ export async function getNodeStatus(client, config, input) {
43
+ try {
44
+ // Check permissions
45
+ requireElevated(config, 'get node status');
46
+ // Validate input
47
+ const validated = getNodeStatusSchema.parse(input);
48
+ const safeNode = validateNodeName(validated.node);
49
+ // Call Proxmox API
50
+ const status = (await client.request(`/nodes/${safeNode}/status`));
51
+ // Format response
52
+ let output = `🖥️ **Node ${safeNode} Status**\n\n`;
53
+ output += `• **Status**: ${status.uptime ? '🟢 Online' : '🔴 Offline'}\n`;
54
+ output += `• **Uptime**: ${status.uptime ? formatUptime(status.uptime) : 'N/A'}\n`;
55
+ output += `• **Load Average**: ${status.loadavg ? status.loadavg.join(', ') : 'N/A'}\n`;
56
+ output += `• **CPU Usage**: ${status.cpu ? formatCpuPercent(status.cpu) : 'N/A'}\n`;
57
+ output += `• **Memory**: ${status.memory
58
+ ? `${formatBytes(status.memory.used)} / ${formatBytes(status.memory.total)} (${((status.memory.used / status.memory.total) * 100).toFixed(1)}%)`
59
+ : 'N/A'}\n`;
60
+ output += `• **Root Disk**: ${status.rootfs
61
+ ? `${formatBytes(status.rootfs.used)} / ${formatBytes(status.rootfs.total)} (${((status.rootfs.used / status.rootfs.total) * 100).toFixed(1)}%)`
62
+ : 'N/A'}\n`;
63
+ return formatToolResponse(output);
64
+ }
65
+ catch (error) {
66
+ const err = error;
67
+ if (err.message.includes('Permission denied')) {
68
+ return formatPermissionDenied('get node status');
69
+ }
70
+ return formatErrorResponse(err, 'Get Node Status');
71
+ }
72
+ }
73
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/tools/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ProxmoxApiClient } from '../client/proxmox.js';
2
+ import type { Config } from '../config/index.js';
3
+ import type { ToolResponse, ToolName } from '../types/index.js';
4
+ import type { z } from 'zod';
5
+ export type ToolHandler = (client: ProxmoxApiClient, config: Config, input: any) => Promise<ToolResponse>;
6
+ export interface ToolRegistryEntry {
7
+ handler: ToolHandler;
8
+ schema: z.ZodSchema;
9
+ }
10
+ export declare const toolRegistry: Record<ToolName, ToolRegistryEntry>;
11
+ export declare function getToolHandler(toolName: ToolName): ToolRegistryEntry | undefined;
12
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.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,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmI7B,MAAM,MAAM,WAAW,GAAG,CACxB,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,GAAG,KACP,OAAO,CAAC,YAAY,CAAC,CAAC;AAG3B,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;CACrB;AAGD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CA2E5D,CAAC;AAGF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAEhF"}
@@ -0,0 +1,87 @@
1
+ // Import all tool handlers
2
+ import { getNodes, getNodeStatus, getClusterStatus, getNextVMID, getVMs, getVMStatus, getStorage, startLxc, startVM, stopLxc, stopVM, deleteLxc, deleteVM, rebootLxc, rebootVM, shutdownLxc, shutdownVM, pauseVM, resumeVM, cloneLxc, cloneVM, resizeLxc, resizeVM, createSnapshotLxc, createSnapshotVM, listSnapshotsLxc, listSnapshotsVM, rollbackSnapshotLxc, rollbackSnapshotVM, deleteSnapshotLxc, deleteSnapshotVM, createBackupLxc, createBackupVM, listBackups, restoreBackupLxc, restoreBackupVM, deleteBackup, addDiskVM, addMountpointLxc, resizeDiskVM, resizeDiskLxc, removeDiskVM, removeMountpointLxc, moveDiskVM, moveDiskLxc, addNetworkVm, addNetworkLxc, updateNetworkVm, updateNetworkLxc, removeNetworkVm, removeNetworkLxc, executeVMCommand, listTemplates, createLxc, createVM, } from './index.js';
3
+ // Import all schemas
4
+ import { getNodesSchema, getNodeStatusSchema, getClusterStatusSchema, getNextVmidSchema, } from '../schemas/node.js';
5
+ import { getVmsSchema, getVmStatusSchema, getStorageSchema, startLxcSchema, startVmSchema, stopLxcSchema, stopVmSchema, deleteLxcSchema, deleteVmSchema, rebootLxcSchema, rebootVmSchema, shutdownLxcSchema, shutdownVmSchema, pauseVmSchema, resumeVmSchema, cloneLxcSchema, cloneVmSchema, resizeLxcSchema, resizeVmSchema, executeVmCommandSchema, listTemplatesSchema, createLxcSchema, createVmSchema, } from '../schemas/vm.js';
6
+ import { createSnapshotLxcSchema, createSnapshotVmSchema, listSnapshotsLxcSchema, listSnapshotsVmSchema, rollbackSnapshotLxcSchema, rollbackSnapshotVmSchema, deleteSnapshotLxcSchema, deleteSnapshotVmSchema, } from '../schemas/snapshot.js';
7
+ import { createBackupLxcSchema, createBackupVmSchema, listBackupsSchema, restoreBackupLxcSchema, restoreBackupVmSchema, deleteBackupSchema, } from '../schemas/backup.js';
8
+ import { addDiskVmSchema, addMountpointLxcSchema, resizeDiskVmSchema, resizeDiskLxcSchema, removeDiskVmSchema, removeMountpointLxcSchema, moveDiskVmSchema, moveDiskLxcSchema, } from '../schemas/disk.js';
9
+ import { addNetworkVmSchema, addNetworkLxcSchema, updateNetworkVmSchema, updateNetworkLxcSchema, removeNetworkVmSchema, removeNetworkLxcSchema, } from '../schemas/network.js';
10
+ // Tool registry mapping tool names to handlers and schemas
11
+ export const toolRegistry = {
12
+ // Node & Cluster
13
+ proxmox_get_nodes: { handler: getNodes, schema: getNodesSchema },
14
+ proxmox_get_node_status: { handler: getNodeStatus, schema: getNodeStatusSchema },
15
+ proxmox_get_cluster_status: { handler: getClusterStatus, schema: getClusterStatusSchema },
16
+ proxmox_get_next_vmid: { handler: getNextVMID, schema: getNextVmidSchema },
17
+ // VM Query
18
+ proxmox_get_vms: { handler: getVMs, schema: getVmsSchema },
19
+ proxmox_get_vm_status: { handler: getVMStatus, schema: getVmStatusSchema },
20
+ proxmox_get_storage: { handler: getStorage, schema: getStorageSchema },
21
+ // VM Lifecycle
22
+ proxmox_start_lxc: { handler: startLxc, schema: startLxcSchema },
23
+ proxmox_start_vm: { handler: startVM, schema: startVmSchema },
24
+ proxmox_stop_lxc: { handler: stopLxc, schema: stopLxcSchema },
25
+ proxmox_stop_vm: { handler: stopVM, schema: stopVmSchema },
26
+ proxmox_delete_lxc: { handler: deleteLxc, schema: deleteLxcSchema },
27
+ proxmox_delete_vm: { handler: deleteVM, schema: deleteVmSchema },
28
+ proxmox_reboot_lxc: { handler: rebootLxc, schema: rebootLxcSchema },
29
+ proxmox_reboot_vm: { handler: rebootVM, schema: rebootVmSchema },
30
+ proxmox_shutdown_lxc: { handler: shutdownLxc, schema: shutdownLxcSchema },
31
+ proxmox_shutdown_vm: { handler: shutdownVM, schema: shutdownVmSchema },
32
+ proxmox_pause_vm: { handler: pauseVM, schema: pauseVmSchema },
33
+ proxmox_resume_vm: { handler: resumeVM, schema: resumeVmSchema },
34
+ // VM Modify
35
+ proxmox_clone_lxc: { handler: cloneLxc, schema: cloneLxcSchema },
36
+ proxmox_clone_vm: { handler: cloneVM, schema: cloneVmSchema },
37
+ proxmox_resize_lxc: { handler: resizeLxc, schema: resizeLxcSchema },
38
+ proxmox_resize_vm: { handler: resizeVM, schema: resizeVmSchema },
39
+ // Snapshots
40
+ proxmox_create_snapshot_lxc: { handler: createSnapshotLxc, schema: createSnapshotLxcSchema },
41
+ proxmox_create_snapshot_vm: { handler: createSnapshotVM, schema: createSnapshotVmSchema },
42
+ proxmox_list_snapshots_lxc: { handler: listSnapshotsLxc, schema: listSnapshotsLxcSchema },
43
+ proxmox_list_snapshots_vm: { handler: listSnapshotsVM, schema: listSnapshotsVmSchema },
44
+ proxmox_rollback_snapshot_lxc: { handler: rollbackSnapshotLxc, schema: rollbackSnapshotLxcSchema },
45
+ proxmox_rollback_snapshot_vm: { handler: rollbackSnapshotVM, schema: rollbackSnapshotVmSchema },
46
+ proxmox_delete_snapshot_lxc: { handler: deleteSnapshotLxc, schema: deleteSnapshotLxcSchema },
47
+ proxmox_delete_snapshot_vm: { handler: deleteSnapshotVM, schema: deleteSnapshotVmSchema },
48
+ // Backups
49
+ proxmox_create_backup_lxc: { handler: createBackupLxc, schema: createBackupLxcSchema },
50
+ proxmox_create_backup_vm: { handler: createBackupVM, schema: createBackupVmSchema },
51
+ proxmox_list_backups: { handler: listBackups, schema: listBackupsSchema },
52
+ proxmox_restore_backup_lxc: { handler: restoreBackupLxc, schema: restoreBackupLxcSchema },
53
+ proxmox_restore_backup_vm: { handler: restoreBackupVM, schema: restoreBackupVmSchema },
54
+ proxmox_delete_backup: { handler: deleteBackup, schema: deleteBackupSchema },
55
+ // Disks
56
+ proxmox_add_disk_vm: { handler: addDiskVM, schema: addDiskVmSchema },
57
+ proxmox_add_mountpoint_lxc: { handler: addMountpointLxc, schema: addMountpointLxcSchema },
58
+ proxmox_resize_disk_vm: { handler: resizeDiskVM, schema: resizeDiskVmSchema },
59
+ proxmox_resize_disk_lxc: { handler: resizeDiskLxc, schema: resizeDiskLxcSchema },
60
+ proxmox_remove_disk_vm: { handler: removeDiskVM, schema: removeDiskVmSchema },
61
+ proxmox_remove_mountpoint_lxc: { handler: removeMountpointLxc, schema: removeMountpointLxcSchema },
62
+ proxmox_move_disk_vm: { handler: moveDiskVM, schema: moveDiskVmSchema },
63
+ proxmox_move_disk_lxc: { handler: moveDiskLxc, schema: moveDiskLxcSchema },
64
+ // Network
65
+ proxmox_add_network_vm: { handler: addNetworkVm, schema: addNetworkVmSchema },
66
+ proxmox_add_network_lxc: { handler: addNetworkLxc, schema: addNetworkLxcSchema },
67
+ proxmox_update_network_vm: { handler: updateNetworkVm, schema: updateNetworkVmSchema },
68
+ proxmox_update_network_lxc: { handler: updateNetworkLxc, schema: updateNetworkLxcSchema },
69
+ proxmox_remove_network_vm: { handler: removeNetworkVm, schema: removeNetworkVmSchema },
70
+ proxmox_remove_network_lxc: { handler: removeNetworkLxc, schema: removeNetworkLxcSchema },
71
+ // Command
72
+ proxmox_execute_vm_command: { handler: executeVMCommand, schema: executeVmCommandSchema },
73
+ // Creation
74
+ proxmox_list_templates: { handler: listTemplates, schema: listTemplatesSchema },
75
+ proxmox_create_lxc: { handler: createLxc, schema: createLxcSchema },
76
+ proxmox_create_vm: { handler: createVM, schema: createVmSchema },
77
+ };
78
+ // Helper to get tool handler
79
+ export function getToolHandler(toolName) {
80
+ return toolRegistry[toolName];
81
+ }
82
+ // Validate all 55 tools are registered
83
+ const registeredCount = Object.keys(toolRegistry).length;
84
+ if (registeredCount !== 55) {
85
+ throw new Error(`Tool registry incomplete: expected 55 tools, got ${registeredCount}`);
86
+ }
87
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
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 { CreateSnapshotLxcInput, CreateSnapshotVmInput, ListSnapshotsLxcInput, ListSnapshotsVmInput, RollbackSnapshotLxcInput, RollbackSnapshotVmInput, DeleteSnapshotLxcInput, DeleteSnapshotVmInput } from '../schemas/snapshot.js';
5
+ /**
6
+ * Create a snapshot of an LXC container
7
+ * Requires elevated permissions
8
+ */
9
+ export declare function createSnapshotLxc(client: ProxmoxApiClient, config: Config, input: CreateSnapshotLxcInput): Promise<ToolResponse>;
10
+ /**
11
+ * Create a snapshot of a QEMU VM
12
+ * Requires elevated permissions
13
+ */
14
+ export declare function createSnapshotVM(client: ProxmoxApiClient, config: Config, input: CreateSnapshotVmInput): Promise<ToolResponse>;
15
+ /**
16
+ * List all snapshots of an LXC container
17
+ * No permission check required (read operation)
18
+ */
19
+ export declare function listSnapshotsLxc(client: ProxmoxApiClient, _config: Config, input: ListSnapshotsLxcInput): Promise<ToolResponse>;
20
+ /**
21
+ * List all snapshots of a QEMU VM
22
+ * No permission check required (read operation)
23
+ */
24
+ export declare function listSnapshotsVM(client: ProxmoxApiClient, _config: Config, input: ListSnapshotsVmInput): Promise<ToolResponse>;
25
+ /**
26
+ * Rollback an LXC container to a snapshot
27
+ * Requires elevated permissions
28
+ */
29
+ export declare function rollbackSnapshotLxc(client: ProxmoxApiClient, config: Config, input: RollbackSnapshotLxcInput): Promise<ToolResponse>;
30
+ /**
31
+ * Rollback a QEMU VM to a snapshot
32
+ * Requires elevated permissions
33
+ */
34
+ export declare function rollbackSnapshotVM(client: ProxmoxApiClient, config: Config, input: RollbackSnapshotVmInput): Promise<ToolResponse>;
35
+ /**
36
+ * Delete a snapshot of an LXC container
37
+ * Requires elevated permissions
38
+ */
39
+ export declare function deleteSnapshotLxc(client: ProxmoxApiClient, config: Config, input: DeleteSnapshotLxcInput): Promise<ToolResponse>;
40
+ /**
41
+ * Delete a snapshot of a QEMU VM
42
+ * Requires elevated permissions
43
+ */
44
+ export declare function deleteSnapshotVM(client: ProxmoxApiClient, config: Config, input: DeleteSnapshotVmInput): Promise<ToolResponse>;
45
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/tools/snapshot.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;AAiBtD,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAkCvB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAkCvB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAiDvB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAiDvB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,YAAY,CAAC,CA0BvB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,YAAY,CAAC,CA0BvB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAwBvB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAwBvB"}
@@ -0,0 +1,249 @@
1
+ import { formatToolResponse, formatErrorResponse, } from '../formatters/index.js';
2
+ import { requireElevated } from '../middleware/index.js';
3
+ import { validateNodeName, validateVMID, validateSnapshotName } from '../validators/index.js';
4
+ import { createSnapshotLxcSchema, createSnapshotVmSchema, listSnapshotsLxcSchema, listSnapshotsVmSchema, rollbackSnapshotLxcSchema, rollbackSnapshotVmSchema, deleteSnapshotLxcSchema, deleteSnapshotVmSchema, } from '../schemas/snapshot.js';
5
+ /**
6
+ * Create a snapshot of an LXC container
7
+ * Requires elevated permissions
8
+ */
9
+ export async function createSnapshotLxc(client, config, input) {
10
+ try {
11
+ requireElevated(config, 'create LXC snapshot');
12
+ const validated = createSnapshotLxcSchema.parse(input);
13
+ const safeNode = validateNodeName(validated.node);
14
+ const safeVmid = validateVMID(validated.vmid);
15
+ const safeSnapname = validateSnapshotName(validated.snapname);
16
+ const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/snapshot`, 'POST', {
17
+ snapname: safeSnapname,
18
+ description: validated.description || '',
19
+ });
20
+ let output = `📸 **Snapshot Created**\n\n` +
21
+ `• **Container ID**: ${safeVmid}\n` +
22
+ `• **Snapshot Name**: ${safeSnapname}\n`;
23
+ if (validated.description) {
24
+ output += `• **Description**: ${validated.description}\n`;
25
+ }
26
+ output += `• **Node**: ${safeNode}\n` +
27
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
28
+ `Use \`list_snapshots_lxc\` to view all snapshots.`;
29
+ return formatToolResponse(output);
30
+ }
31
+ catch (error) {
32
+ return formatErrorResponse(error, 'Create LXC Snapshot');
33
+ }
34
+ }
35
+ /**
36
+ * Create a snapshot of a QEMU VM
37
+ * Requires elevated permissions
38
+ */
39
+ export async function createSnapshotVM(client, config, input) {
40
+ try {
41
+ requireElevated(config, 'create VM snapshot');
42
+ const validated = createSnapshotVmSchema.parse(input);
43
+ const safeNode = validateNodeName(validated.node);
44
+ const safeVmid = validateVMID(validated.vmid);
45
+ const safeSnapname = validateSnapshotName(validated.snapname);
46
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/snapshot`, 'POST', {
47
+ snapname: safeSnapname,
48
+ description: validated.description || '',
49
+ });
50
+ let output = `📸 **Snapshot Created**\n\n` +
51
+ `• **VM ID**: ${safeVmid}\n` +
52
+ `• **Snapshot Name**: ${safeSnapname}\n`;
53
+ if (validated.description) {
54
+ output += `• **Description**: ${validated.description}\n`;
55
+ }
56
+ output += `• **Node**: ${safeNode}\n` +
57
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
58
+ `Use \`list_snapshots_vm\` to view all snapshots.`;
59
+ return formatToolResponse(output);
60
+ }
61
+ catch (error) {
62
+ return formatErrorResponse(error, 'Create VM Snapshot');
63
+ }
64
+ }
65
+ /**
66
+ * List all snapshots of an LXC container
67
+ * No permission check required (read operation)
68
+ */
69
+ export async function listSnapshotsLxc(client, _config, input) {
70
+ try {
71
+ const validated = listSnapshotsLxcSchema.parse(input);
72
+ const safeNode = validateNodeName(validated.node);
73
+ const safeVmid = validateVMID(validated.vmid);
74
+ const snapshots = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/snapshot`);
75
+ let output = `📸 **Snapshots for Container ${safeVmid}**\n\n`;
76
+ if (!snapshots || snapshots.length === 0) {
77
+ output += 'No snapshots found.\n';
78
+ }
79
+ else {
80
+ // Filter out 'current' pseudo-snapshot and sort by snaptime (newest first)
81
+ const realSnapshots = snapshots
82
+ .filter(snap => snap.name !== 'current')
83
+ .sort((a, b) => (b.snaptime || 0) - (a.snaptime || 0));
84
+ if (realSnapshots.length === 0) {
85
+ output += 'No snapshots found.\n';
86
+ }
87
+ else {
88
+ for (const snap of realSnapshots) {
89
+ output += `**${snap.name}**\n`;
90
+ if (snap.description) {
91
+ output += ` • Description: ${snap.description}\n`;
92
+ }
93
+ if (snap.snaptime) {
94
+ const date = new Date(snap.snaptime * 1000);
95
+ output += ` • Date: ${date.toLocaleString()}\n`;
96
+ }
97
+ if (snap.parent) {
98
+ output += ` • Parent: ${snap.parent}\n`;
99
+ }
100
+ output += '\n';
101
+ }
102
+ }
103
+ }
104
+ return formatToolResponse(output);
105
+ }
106
+ catch (error) {
107
+ return formatErrorResponse(error, 'List LXC Snapshots');
108
+ }
109
+ }
110
+ /**
111
+ * List all snapshots of a QEMU VM
112
+ * No permission check required (read operation)
113
+ */
114
+ export async function listSnapshotsVM(client, _config, input) {
115
+ try {
116
+ const validated = listSnapshotsVmSchema.parse(input);
117
+ const safeNode = validateNodeName(validated.node);
118
+ const safeVmid = validateVMID(validated.vmid);
119
+ const snapshots = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/snapshot`);
120
+ let output = `📸 **Snapshots for VM ${safeVmid}**\n\n`;
121
+ if (!snapshots || snapshots.length === 0) {
122
+ output += 'No snapshots found.\n';
123
+ }
124
+ else {
125
+ // Filter out 'current' pseudo-snapshot and sort by snaptime (newest first)
126
+ const realSnapshots = snapshots
127
+ .filter(snap => snap.name !== 'current')
128
+ .sort((a, b) => (b.snaptime || 0) - (a.snaptime || 0));
129
+ if (realSnapshots.length === 0) {
130
+ output += 'No snapshots found.\n';
131
+ }
132
+ else {
133
+ for (const snap of realSnapshots) {
134
+ output += `**${snap.name}**\n`;
135
+ if (snap.description) {
136
+ output += ` • Description: ${snap.description}\n`;
137
+ }
138
+ if (snap.snaptime) {
139
+ const date = new Date(snap.snaptime * 1000);
140
+ output += ` • Date: ${date.toLocaleString()}\n`;
141
+ }
142
+ if (snap.parent) {
143
+ output += ` • Parent: ${snap.parent}\n`;
144
+ }
145
+ output += '\n';
146
+ }
147
+ }
148
+ }
149
+ return formatToolResponse(output);
150
+ }
151
+ catch (error) {
152
+ return formatErrorResponse(error, 'List VM Snapshots');
153
+ }
154
+ }
155
+ /**
156
+ * Rollback an LXC container to a snapshot
157
+ * Requires elevated permissions
158
+ */
159
+ export async function rollbackSnapshotLxc(client, config, input) {
160
+ try {
161
+ requireElevated(config, 'rollback LXC snapshot');
162
+ const validated = rollbackSnapshotLxcSchema.parse(input);
163
+ const safeNode = validateNodeName(validated.node);
164
+ const safeVmid = validateVMID(validated.vmid);
165
+ const safeSnapname = validateSnapshotName(validated.snapname);
166
+ const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/snapshot/${safeSnapname}/rollback`, 'POST', {});
167
+ const output = `⏮️ **Snapshot Rollback Initiated**\n\n` +
168
+ `• **Container ID**: ${safeVmid}\n` +
169
+ `• **Snapshot Name**: ${safeSnapname}\n` +
170
+ `• **Node**: ${safeNode}\n` +
171
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
172
+ `**Warning**: This will revert the container to the snapshot state. Current state will be lost.`;
173
+ return formatToolResponse(output);
174
+ }
175
+ catch (error) {
176
+ return formatErrorResponse(error, 'Rollback LXC Snapshot');
177
+ }
178
+ }
179
+ /**
180
+ * Rollback a QEMU VM to a snapshot
181
+ * Requires elevated permissions
182
+ */
183
+ export async function rollbackSnapshotVM(client, config, input) {
184
+ try {
185
+ requireElevated(config, 'rollback VM snapshot');
186
+ const validated = rollbackSnapshotVmSchema.parse(input);
187
+ const safeNode = validateNodeName(validated.node);
188
+ const safeVmid = validateVMID(validated.vmid);
189
+ const safeSnapname = validateSnapshotName(validated.snapname);
190
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/snapshot/${safeSnapname}/rollback`, 'POST', {});
191
+ const output = `⏮️ **Snapshot Rollback Initiated**\n\n` +
192
+ `• **VM ID**: ${safeVmid}\n` +
193
+ `• **Snapshot Name**: ${safeSnapname}\n` +
194
+ `• **Node**: ${safeNode}\n` +
195
+ `• **Task ID**: ${result || 'N/A'}\n\n` +
196
+ `**Warning**: This will revert the VM to the snapshot state. Current state will be lost.`;
197
+ return formatToolResponse(output);
198
+ }
199
+ catch (error) {
200
+ return formatErrorResponse(error, 'Rollback VM Snapshot');
201
+ }
202
+ }
203
+ /**
204
+ * Delete a snapshot of an LXC container
205
+ * Requires elevated permissions
206
+ */
207
+ export async function deleteSnapshotLxc(client, config, input) {
208
+ try {
209
+ requireElevated(config, 'delete LXC snapshot');
210
+ const validated = deleteSnapshotLxcSchema.parse(input);
211
+ const safeNode = validateNodeName(validated.node);
212
+ const safeVmid = validateVMID(validated.vmid);
213
+ const safeSnapname = validateSnapshotName(validated.snapname);
214
+ const result = await client.request(`/nodes/${safeNode}/lxc/${safeVmid}/snapshot/${safeSnapname}`, 'DELETE');
215
+ const output = `🗑️ **Snapshot Deleted**\n\n` +
216
+ `• **Container ID**: ${safeVmid}\n` +
217
+ `• **Snapshot Name**: ${safeSnapname}\n` +
218
+ `• **Node**: ${safeNode}\n` +
219
+ `• **Task ID**: ${result || 'N/A'}`;
220
+ return formatToolResponse(output);
221
+ }
222
+ catch (error) {
223
+ return formatErrorResponse(error, 'Delete LXC Snapshot');
224
+ }
225
+ }
226
+ /**
227
+ * Delete a snapshot of a QEMU VM
228
+ * Requires elevated permissions
229
+ */
230
+ export async function deleteSnapshotVM(client, config, input) {
231
+ try {
232
+ requireElevated(config, 'delete VM snapshot');
233
+ const validated = deleteSnapshotVmSchema.parse(input);
234
+ const safeNode = validateNodeName(validated.node);
235
+ const safeVmid = validateVMID(validated.vmid);
236
+ const safeSnapname = validateSnapshotName(validated.snapname);
237
+ const result = await client.request(`/nodes/${safeNode}/qemu/${safeVmid}/snapshot/${safeSnapname}`, 'DELETE');
238
+ const output = `🗑️ **Snapshot Deleted**\n\n` +
239
+ `• **VM ID**: ${safeVmid}\n` +
240
+ `• **Snapshot Name**: ${safeSnapname}\n` +
241
+ `• **Node**: ${safeNode}\n` +
242
+ `• **Task ID**: ${result || 'N/A'}`;
243
+ return formatToolResponse(output);
244
+ }
245
+ catch (error) {
246
+ return formatErrorResponse(error, 'Delete VM Snapshot');
247
+ }
248
+ }
249
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/tools/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
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 { ListTemplatesInput, CreateLxcInput, CreateVmInput } from '../schemas/vm.js';
5
+ export declare function listTemplates(client: ProxmoxApiClient, _config: Config, input: ListTemplatesInput): Promise<ToolResponse>;
6
+ export declare function createLxc(client: ProxmoxApiClient, config: Config, input: CreateLxcInput): Promise<ToolResponse>;
7
+ export declare function createVM(client: ProxmoxApiClient, config: Config, input: CreateVmInput): Promise<ToolResponse>;
8
+ //# sourceMappingURL=vm-create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-create.d.ts","sourceRoot":"","sources":["../../src/tools/vm-create.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;AAiBtD,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,YAAY,CAAC,CAiCvB;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,YAAY,CAAC,CAoDvB;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,YAAY,CAAC,CA0DvB"}