@bldg-7/proxmox-mcp 0.3.0 → 0.4.1

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 (129) hide show
  1. package/README.md +25 -931
  2. package/dist/client/proxmox.d.ts.map +1 -1
  3. package/dist/client/proxmox.js +55 -4
  4. package/dist/client/proxmox.js.map +1 -1
  5. package/dist/schemas/access-control.d.ts +354 -0
  6. package/dist/schemas/access-control.d.ts.map +1 -0
  7. package/dist/schemas/access-control.js +147 -0
  8. package/dist/schemas/access-control.js.map +1 -0
  9. package/dist/schemas/backup.d.ts +10 -10
  10. package/dist/schemas/ceph.d.ts +224 -0
  11. package/dist/schemas/ceph.d.ts.map +1 -0
  12. package/dist/schemas/ceph.js +101 -0
  13. package/dist/schemas/ceph.js.map +1 -0
  14. package/dist/schemas/cluster-management.d.ts +662 -0
  15. package/dist/schemas/cluster-management.d.ts.map +1 -0
  16. package/dist/schemas/cluster-management.js +276 -0
  17. package/dist/schemas/cluster-management.js.map +1 -0
  18. package/dist/schemas/console-access.d.ts +57 -0
  19. package/dist/schemas/console-access.d.ts.map +1 -0
  20. package/dist/schemas/console-access.js +16 -0
  21. package/dist/schemas/console-access.js.map +1 -0
  22. package/dist/schemas/disk.d.ts +16 -16
  23. package/dist/schemas/index.d.ts +10 -0
  24. package/dist/schemas/index.d.ts.map +1 -1
  25. package/dist/schemas/index.js +10 -0
  26. package/dist/schemas/index.js.map +1 -1
  27. package/dist/schemas/network.d.ts +12 -12
  28. package/dist/schemas/node-network.d.ts +169 -0
  29. package/dist/schemas/node-network.d.ts.map +1 -0
  30. package/dist/schemas/node-network.js +69 -0
  31. package/dist/schemas/node-network.js.map +1 -0
  32. package/dist/schemas/node.d.ts +73 -0
  33. package/dist/schemas/node.d.ts.map +1 -1
  34. package/dist/schemas/node.js +35 -0
  35. package/dist/schemas/node.js.map +1 -1
  36. package/dist/schemas/pool-management.d.ts +48 -0
  37. package/dist/schemas/pool-management.d.ts.map +1 -0
  38. package/dist/schemas/pool-management.js +24 -0
  39. package/dist/schemas/pool-management.js.map +1 -0
  40. package/dist/schemas/sdn.d.ts +366 -0
  41. package/dist/schemas/sdn.d.ts.map +1 -0
  42. package/dist/schemas/sdn.js +166 -0
  43. package/dist/schemas/sdn.js.map +1 -0
  44. package/dist/schemas/storage-management.d.ts +341 -0
  45. package/dist/schemas/storage-management.d.ts.map +1 -0
  46. package/dist/schemas/storage-management.js +151 -0
  47. package/dist/schemas/storage-management.js.map +1 -0
  48. package/dist/schemas/system-operations.d.ts +162 -0
  49. package/dist/schemas/system-operations.d.ts.map +1 -0
  50. package/dist/schemas/system-operations.js +81 -0
  51. package/dist/schemas/system-operations.js.map +1 -0
  52. package/dist/schemas/vm-advanced.d.ts +558 -0
  53. package/dist/schemas/vm-advanced.d.ts.map +1 -0
  54. package/dist/schemas/vm-advanced.js +170 -0
  55. package/dist/schemas/vm-advanced.js.map +1 -0
  56. package/dist/schemas/vm.d.ts +8 -8
  57. package/dist/server.d.ts.map +1 -1
  58. package/dist/server.js +176 -1
  59. package/dist/server.js.map +1 -1
  60. package/dist/tools/access-control.d.ts +85 -0
  61. package/dist/tools/access-control.d.ts.map +1 -0
  62. package/dist/tools/access-control.js +603 -0
  63. package/dist/tools/access-control.js.map +1 -0
  64. package/dist/tools/ceph.d.ts +69 -0
  65. package/dist/tools/ceph.d.ts.map +1 -0
  66. package/dist/tools/ceph.js +487 -0
  67. package/dist/tools/ceph.js.map +1 -0
  68. package/dist/tools/cluster-management.d.ts +137 -0
  69. package/dist/tools/cluster-management.d.ts.map +1 -0
  70. package/dist/tools/cluster-management.js +1055 -0
  71. package/dist/tools/cluster-management.js.map +1 -0
  72. package/dist/tools/command.d.ts.map +1 -1
  73. package/dist/tools/command.js +14 -0
  74. package/dist/tools/command.js.map +1 -1
  75. package/dist/tools/console-access.d.ts +25 -0
  76. package/dist/tools/console-access.d.ts.map +1 -0
  77. package/dist/tools/console-access.js +108 -0
  78. package/dist/tools/console-access.js.map +1 -0
  79. package/dist/tools/index.d.ts +11 -1
  80. package/dist/tools/index.d.ts.map +1 -1
  81. package/dist/tools/index.js +21 -1
  82. package/dist/tools/index.js.map +1 -1
  83. package/dist/tools/node-network.d.ts +25 -0
  84. package/dist/tools/node-network.d.ts.map +1 -0
  85. package/dist/tools/node-network.js +184 -0
  86. package/dist/tools/node-network.js.map +1 -0
  87. package/dist/tools/node.d.ts +41 -1
  88. package/dist/tools/node.d.ts.map +1 -1
  89. package/dist/tools/node.js +241 -2
  90. package/dist/tools/node.js.map +1 -1
  91. package/dist/tools/pool-management.d.ts +25 -0
  92. package/dist/tools/pool-management.d.ts.map +1 -0
  93. package/dist/tools/pool-management.js +137 -0
  94. package/dist/tools/pool-management.js.map +1 -0
  95. package/dist/tools/registry.d.ts.map +1 -1
  96. package/dist/tools/registry.js +345 -5
  97. package/dist/tools/registry.js.map +1 -1
  98. package/dist/tools/sdn.d.ts +97 -0
  99. package/dist/tools/sdn.d.ts.map +1 -0
  100. package/dist/tools/sdn.js +429 -0
  101. package/dist/tools/sdn.js.map +1 -0
  102. package/dist/tools/storage-management.d.ts +53 -0
  103. package/dist/tools/storage-management.d.ts.map +1 -0
  104. package/dist/tools/storage-management.js +459 -0
  105. package/dist/tools/storage-management.js.map +1 -0
  106. package/dist/tools/system-operations.d.ts +75 -0
  107. package/dist/tools/system-operations.d.ts.map +1 -0
  108. package/dist/tools/system-operations.js +370 -0
  109. package/dist/tools/system-operations.js.map +1 -0
  110. package/dist/tools/vm-advanced.d.ts +109 -0
  111. package/dist/tools/vm-advanced.d.ts.map +1 -0
  112. package/dist/tools/vm-advanced.js +766 -0
  113. package/dist/tools/vm-advanced.js.map +1 -0
  114. package/dist/tools/vm-query.js +2 -2
  115. package/dist/tools/vm-query.js.map +1 -1
  116. package/dist/types/index.d.ts +1 -1
  117. package/dist/types/index.d.ts.map +1 -1
  118. package/dist/types/index.js.map +1 -1
  119. package/dist/types/proxmox.d.ts +78 -0
  120. package/dist/types/proxmox.d.ts.map +1 -1
  121. package/dist/types/tools.d.ts +1 -1
  122. package/dist/types/tools.d.ts.map +1 -1
  123. package/dist/types/tools.js +166 -3
  124. package/dist/types/tools.js.map +1 -1
  125. package/dist/validators/index.d.ts +52 -0
  126. package/dist/validators/index.d.ts.map +1 -1
  127. package/dist/validators/index.js +135 -0
  128. package/dist/validators/index.js.map +1 -1
  129. package/package.json +1 -1
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.6-blue.svg)](https://www.typescriptlang.org/)
9
9
  [![Node.js](https://img.shields.io/badge/Node.js-18+-green.svg)](https://nodejs.org/)
10
10
 
11
- A comprehensive MCP server providing 64 tools for managing Proxmox Virtual Environment, including QEMU VMs and LXC containers.
11
+ A comprehensive MCP server providing 143 tools for managing Proxmox Virtual Environment, including QEMU VMs and LXC containers.
12
12
 
13
13
  ## Credits & Background
14
14
 
@@ -30,13 +30,13 @@ This project is a TypeScript rewrite of [mcp-proxmox-server](https://github.com/
30
30
 
31
31
  **Developer Experience**:
32
32
  - `npx @bldg-7/proxmox-mcp` just works
33
- - All 64 tool descriptions exposed via MCP `ListTools`
33
+ - All 143 tool descriptions exposed via MCP `ListTools`
34
34
  - Rate limiter middleware included
35
35
  - Pino structured logging instead of `console.log`
36
36
 
37
37
  ## Features
38
38
 
39
- - **64 comprehensive tools** for Proxmox management
39
+ - **143 comprehensive tools** for Proxmox management
40
40
  - **Full TypeScript implementation** with strict type safety
41
41
  - **Support for both QEMU VMs and LXC containers**
42
42
  - **Secure authentication** (API token)
@@ -125,934 +125,28 @@ Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/
125
125
 
126
126
  ## Available Tools
127
127
 
128
- ### Node & Cluster Management (4 tools)
129
-
130
- #### `proxmox_get_nodes`
131
- List all Proxmox cluster nodes with their status and resources.
132
-
133
- **Parameters**: None
134
-
135
- **Example**:
136
- ```json
137
- {}
138
- ```
139
-
140
- #### `proxmox_get_node_status` 🔒
141
- Get detailed status information for a specific Proxmox node.
142
-
143
- **Parameters**:
144
- - `node` (string): Node name
145
-
146
- **Example**:
147
- ```json
148
- {
149
- "node": "pve1"
150
- }
151
- ```
152
-
153
- #### `proxmox_get_cluster_status`
154
- Get overall cluster status including nodes and resource usage.
155
-
156
- **Parameters**: None
157
-
158
- **Example**:
159
- ```json
160
- {}
161
- ```
162
-
163
- #### `proxmox_get_next_vmid`
164
- Get the next available VM/Container ID number.
165
-
166
- **Parameters**: None
167
-
168
- **Example**:
169
- ```json
170
- {}
171
- ```
172
-
173
- ---
174
-
175
- ### VM Query (3 tools)
176
-
177
- #### `proxmox_get_vms`
178
- List all virtual machines across the cluster with their status.
179
-
180
- **Parameters**:
181
- - `node` (string, optional): Filter by specific node
182
- - `type` (string, optional): Filter by type (`qemu` or `lxc`)
183
-
184
- **Example**:
185
- ```json
186
- {
187
- "node": "pve1",
188
- "type": "qemu"
189
- }
190
- ```
191
-
192
- #### `proxmox_get_vm_status`
193
- Get detailed status information for a specific VM.
194
-
195
- **Parameters**:
196
- - `node` (string): Node name
197
- - `vmid` (number): VM/Container ID
198
- - `type` (string): VM type (`qemu` or `lxc`)
199
-
200
- **Example**:
201
- ```json
202
- {
203
- "node": "pve1",
204
- "vmid": 100,
205
- "type": "qemu"
206
- }
207
- ```
208
-
209
- #### `proxmox_get_storage`
210
- List all storage pools and their usage across the cluster.
211
-
212
- **Parameters**:
213
- - `node` (string, optional): Filter by specific node
214
-
215
- **Example**:
216
- ```json
217
- {
218
- "node": "pve1"
219
- }
220
- ```
221
-
222
- ---
223
-
224
- ### VM/LXC Configuration Query (2 tools)
225
-
226
- #### `proxmox_get_vm_config`
227
- Get hardware configuration for a QEMU virtual machine.
228
-
229
- **Parameters**:
230
- - `node` (string): Node name where VM is located
231
- - `vmid` (number): VM ID number
232
-
233
- **Example**:
234
- ```json
235
- {
236
- "node": "pve1",
237
- "vmid": 101
238
- }
239
- ```
240
-
241
- **Returns**: CPU, memory, disks, network interfaces, boot order, and other VM settings.
242
-
243
- #### `proxmox_get_lxc_config`
244
- Get hardware configuration for an LXC container.
245
-
246
- **Parameters**:
247
- - `node` (string): Node name where container is located
248
- - `vmid` (number): Container ID number
249
-
250
- **Example**:
251
- ```json
252
- {
253
- "node": "pve1",
254
- "vmid": 100
255
- }
256
- ```
257
-
258
- **Returns**: CPU, memory, mount points, network interfaces, and other container settings.
259
-
260
- ---
261
-
262
- ### VM Lifecycle (12 tools) 🔒
263
-
264
- All lifecycle operations require elevated permissions.
265
-
266
- #### `proxmox_start_lxc` 🔒
267
- Start an LXC container.
268
-
269
- **Parameters**:
270
- - `node` (string): Node name
271
- - `vmid` (number): Container ID
272
-
273
- **Example**:
274
- ```json
275
- {
276
- "node": "pve1",
277
- "vmid": 100
278
- }
279
- ```
280
-
281
- #### `proxmox_start_vm` 🔒
282
- Start a QEMU virtual machine.
283
-
284
- **Parameters**:
285
- - `node` (string): Node name
286
- - `vmid` (number): VM ID
287
-
288
- **Example**:
289
- ```json
290
- {
291
- "node": "pve1",
292
- "vmid": 101
293
- }
294
- ```
295
-
296
- #### `proxmox_stop_lxc` 🔒
297
- Stop an LXC container (forceful).
298
-
299
- **Parameters**:
300
- - `node` (string): Node name
301
- - `vmid` (number): Container ID
302
-
303
- #### `proxmox_stop_vm` 🔒
304
- Stop a QEMU virtual machine (forceful).
305
-
306
- **Parameters**:
307
- - `node` (string): Node name
308
- - `vmid` (number): VM ID
309
-
310
- #### `proxmox_shutdown_lxc` 🔒
311
- Gracefully shutdown an LXC container.
312
-
313
- **Parameters**:
314
- - `node` (string): Node name
315
- - `vmid` (number): Container ID
316
-
317
- #### `proxmox_shutdown_vm` 🔒
318
- Gracefully shutdown a QEMU virtual machine.
319
-
320
- **Parameters**:
321
- - `node` (string): Node name
322
- - `vmid` (number): VM ID
323
-
324
- #### `proxmox_reboot_lxc` 🔒
325
- Reboot an LXC container.
326
-
327
- **Parameters**:
328
- - `node` (string): Node name
329
- - `vmid` (number): Container ID
330
-
331
- #### `proxmox_reboot_vm` 🔒
332
- Reboot a QEMU virtual machine.
333
-
334
- **Parameters**:
335
- - `node` (string): Node name
336
- - `vmid` (number): VM ID
337
-
338
- #### `proxmox_pause_vm` 🔒
339
- Pause a QEMU virtual machine (suspend to RAM).
340
-
341
- **Parameters**:
342
- - `node` (string): Node name
343
- - `vmid` (number): VM ID
344
-
345
- #### `proxmox_resume_vm` 🔒
346
- Resume a paused QEMU virtual machine.
347
-
348
- **Parameters**:
349
- - `node` (string): Node name
350
- - `vmid` (number): VM ID
351
-
352
- #### `proxmox_delete_lxc` 🔒
353
- Delete an LXC container permanently.
354
-
355
- **Parameters**:
356
- - `node` (string): Node name
357
- - `vmid` (number): Container ID
358
-
359
- #### `proxmox_delete_vm` 🔒
360
- Delete a QEMU virtual machine permanently.
361
-
362
- **Parameters**:
363
- - `node` (string): Node name
364
- - `vmid` (number): VM ID
365
-
366
- ---
367
-
368
- ### VM Modify (4 tools) 🔒
369
-
370
- #### `proxmox_clone_lxc` 🔒
371
- Clone an LXC container.
372
-
373
- **Parameters**:
374
- - `node` (string): Node name
375
- - `vmid` (number): Source container ID
376
- - `newid` (number): New container ID
377
- - `hostname` (string, optional): New hostname
378
-
379
- **Example**:
380
- ```json
381
- {
382
- "node": "pve1",
383
- "vmid": 100,
384
- "newid": 200,
385
- "hostname": "cloned-container"
386
- }
387
- ```
388
-
389
- #### `proxmox_clone_vm` 🔒
390
- Clone a QEMU virtual machine.
391
-
392
- **Parameters**:
393
- - `node` (string): Node name
394
- - `vmid` (number): Source VM ID
395
- - `newid` (number): New VM ID
396
- - `name` (string, optional): New VM name
397
-
398
- **Example**:
399
- ```json
400
- {
401
- "node": "pve1",
402
- "vmid": 101,
403
- "newid": 201,
404
- "name": "cloned-vm"
405
- }
406
- ```
407
-
408
- #### `proxmox_resize_lxc` 🔒
409
- Resize an LXC container CPU/memory.
410
-
411
- **Parameters**:
412
- - `node` (string): Node name
413
- - `vmid` (number): Container ID
414
- - `memory` (number, optional): Memory in MB
415
- - `cores` (number, optional): Number of CPU cores
416
-
417
- **Example**:
418
- ```json
419
- {
420
- "node": "pve1",
421
- "vmid": 100,
422
- "memory": 2048,
423
- "cores": 2
424
- }
425
- ```
426
-
427
- #### `proxmox_resize_vm` 🔒
428
- Resize a QEMU VM CPU/memory.
429
-
430
- **Parameters**:
431
- - `node` (string): Node name
432
- - `vmid` (number): VM ID
433
- - `memory` (number, optional): Memory in MB
434
- - `cores` (number, optional): Number of CPU cores
435
-
436
- ---
437
-
438
- ### Snapshots (8 tools)
439
-
440
- #### `proxmox_create_snapshot_lxc` 🔒
441
- Create a snapshot of an LXC container.
442
-
443
- **Parameters**:
444
- - `node` (string): Node name
445
- - `vmid` (number): Container ID
446
- - `snapname` (string): Snapshot name
447
- - `description` (string, optional): Snapshot description
448
-
449
- **Example**:
450
- ```json
451
- {
452
- "node": "pve1",
453
- "vmid": 100,
454
- "snapname": "before-update",
455
- "description": "Snapshot before system update"
456
- }
457
- ```
458
-
459
- #### `proxmox_create_snapshot_vm` 🔒
460
- Create a snapshot of a QEMU virtual machine.
461
-
462
- **Parameters**:
463
- - `node` (string): Node name
464
- - `vmid` (number): VM ID
465
- - `snapname` (string): Snapshot name
466
- - `description` (string, optional): Snapshot description
467
-
468
- #### `proxmox_list_snapshots_lxc`
469
- List all snapshots of an LXC container.
470
-
471
- **Parameters**:
472
- - `node` (string): Node name
473
- - `vmid` (number): Container ID
474
-
475
- **Example**:
476
- ```json
477
- {
478
- "node": "pve1",
479
- "vmid": 100
480
- }
481
- ```
482
-
483
- #### `proxmox_list_snapshots_vm`
484
- List all snapshots of a QEMU virtual machine.
485
-
486
- **Parameters**:
487
- - `node` (string): Node name
488
- - `vmid` (number): VM ID
489
-
490
- #### `proxmox_rollback_snapshot_lxc` 🔒
491
- Rollback an LXC container to a snapshot.
492
-
493
- **Parameters**:
494
- - `node` (string): Node name
495
- - `vmid` (number): Container ID
496
- - `snapname` (string): Snapshot name
497
-
498
- **Example**:
499
- ```json
500
- {
501
- "node": "pve1",
502
- "vmid": 100,
503
- "snapname": "before-update"
504
- }
505
- ```
506
-
507
- #### `proxmox_rollback_snapshot_vm` 🔒
508
- Rollback a QEMU virtual machine to a snapshot.
509
-
510
- **Parameters**:
511
- - `node` (string): Node name
512
- - `vmid` (number): VM ID
513
- - `snapname` (string): Snapshot name
514
-
515
- #### `proxmox_delete_snapshot_lxc` 🔒
516
- Delete a snapshot of an LXC container.
517
-
518
- **Parameters**:
519
- - `node` (string): Node name
520
- - `vmid` (number): Container ID
521
- - `snapname` (string): Snapshot name
522
-
523
- #### `proxmox_delete_snapshot_vm` 🔒
524
- Delete a snapshot of a QEMU virtual machine.
525
-
526
- **Parameters**:
527
- - `node` (string): Node name
528
- - `vmid` (number): VM ID
529
- - `snapname` (string): Snapshot name
530
-
531
- ---
532
-
533
- ### Backups (6 tools) 🔒
534
-
535
- All backup operations require elevated permissions.
536
-
537
- #### `proxmox_create_backup_lxc` 🔒
538
- Create a backup of an LXC container.
539
-
540
- **Parameters**:
541
- - `node` (string): Node name
542
- - `vmid` (number): Container ID
543
- - `storage` (string, optional): Storage name (default: `local`)
544
- - `mode` (string, optional): Backup mode: `snapshot`, `suspend`, `stop` (default: `snapshot`)
545
- - `compress` (string, optional): Compression: `none`, `lzo`, `gzip`, `zstd` (default: `zstd`)
546
-
547
- **Example**:
548
- ```json
549
- {
550
- "node": "pve1",
551
- "vmid": 100,
552
- "storage": "backup-storage",
553
- "mode": "snapshot",
554
- "compress": "zstd"
555
- }
556
- ```
557
-
558
- #### `proxmox_create_backup_vm` 🔒
559
- Create a backup of a QEMU virtual machine.
560
-
561
- **Parameters**: Same as `proxmox_create_backup_lxc`
562
-
563
- #### `proxmox_list_backups` 🔒
564
- List all backups on a storage.
565
-
566
- **Parameters**:
567
- - `node` (string): Node name
568
- - `storage` (string): Storage name
569
-
570
- **Example**:
571
- ```json
572
- {
573
- "node": "pve1",
574
- "storage": "backup-storage"
575
- }
576
- ```
577
-
578
- #### `proxmox_restore_backup_lxc` 🔒
579
- Restore an LXC container from backup.
580
-
581
- **Parameters**:
582
- - `node` (string): Node name
583
- - `vmid` (number): New container ID
584
- - `archive` (string): Backup archive path (e.g., `local:backup/vzdump-lxc-100-...`)
585
- - `storage` (string, optional): Target storage for restored container
586
-
587
- **Example**:
588
- ```json
589
- {
590
- "node": "pve1",
591
- "vmid": 300,
592
- "archive": "local:backup/vzdump-lxc-100-2024_01_01-12_00_00.tar.zst",
593
- "storage": "local-lvm"
594
- }
595
- ```
596
-
597
- #### `proxmox_restore_backup_vm` 🔒
598
- Restore a QEMU virtual machine from backup.
599
-
600
- **Parameters**: Same as `proxmox_restore_backup_lxc`
601
-
602
- #### `proxmox_delete_backup` 🔒
603
- Delete a backup file from storage.
604
-
605
- **Parameters**:
606
- - `node` (string): Node name
607
- - `storage` (string): Storage name
608
- - `volume` (string): Volume ID (e.g., `local:backup/vzdump-lxc-100-...`)
609
-
610
- **Example**:
611
- ```json
612
- {
613
- "node": "pve1",
614
- "storage": "local",
615
- "volume": "local:backup/vzdump-lxc-100-2024_01_01-12_00_00.tar.zst"
616
- }
617
- ```
618
-
619
- ---
620
-
621
- ### Disks (8 tools) 🔒
622
-
623
- All disk operations require elevated permissions.
624
-
625
- #### `proxmox_add_disk_vm` 🔒
626
- Add a new disk to a QEMU virtual machine.
627
-
628
- **Parameters**:
629
- - `node` (string): Node name
630
- - `vmid` (number): VM ID
631
- - `disk` (string): Disk ID (e.g., `scsi0`, `virtio0`, `sata0`, `ide0`)
632
- - `storage` (string): Storage name
633
- - `size` (string): Disk size (e.g., `10` for 10GB)
634
-
635
- **Example**:
636
- ```json
637
- {
638
- "node": "pve1",
639
- "vmid": 101,
640
- "disk": "scsi1",
641
- "storage": "local-lvm",
642
- "size": "50"
643
- }
644
- ```
645
-
646
- #### `proxmox_add_mountpoint_lxc` 🔒
647
- Add a mount point to an LXC container.
648
-
649
- **Parameters**:
650
- - `node` (string): Node name
651
- - `vmid` (number): Container ID
652
- - `mp` (string): Mount point ID (e.g., `mp0`, `mp1`)
653
- - `storage` (string): Storage name
654
- - `size` (string): Size (e.g., `10` for 10GB)
655
-
656
- **Example**:
657
- ```json
658
- {
659
- "node": "pve1",
660
- "vmid": 100,
661
- "mp": "mp0",
662
- "storage": "local-lvm",
663
- "size": "20"
664
- }
665
- ```
666
-
667
- #### `proxmox_resize_disk_vm` 🔒
668
- Resize a QEMU VM disk (expansion only).
669
-
670
- **Parameters**:
671
- - `node` (string): Node name
672
- - `vmid` (number): VM ID
673
- - `disk` (string): Disk ID
674
- - `size` (string): New size (e.g., `+10G` to add 10GB, or `50G` for absolute size)
675
-
676
- **Example**:
677
- ```json
678
- {
679
- "node": "pve1",
680
- "vmid": 101,
681
- "disk": "scsi0",
682
- "size": "+20G"
683
- }
684
- ```
685
-
686
- #### `proxmox_resize_disk_lxc` 🔒
687
- Resize an LXC container disk or mount point (expansion only).
688
-
689
- **Parameters**: Same as `proxmox_resize_disk_vm`
690
-
691
- #### `proxmox_remove_disk_vm` 🔒
692
- Remove a disk from a QEMU virtual machine.
693
-
694
- **Parameters**:
695
- - `node` (string): Node name
696
- - `vmid` (number): VM ID
697
- - `disk` (string): Disk ID
698
-
699
- **Example**:
700
- ```json
701
- {
702
- "node": "pve1",
703
- "vmid": 101,
704
- "disk": "scsi1"
705
- }
706
- ```
707
-
708
- #### `proxmox_remove_mountpoint_lxc` 🔒
709
- Remove a mount point from an LXC container.
710
-
711
- **Parameters**:
712
- - `node` (string): Node name
713
- - `vmid` (number): Container ID
714
- - `mp` (string): Mount point ID
715
-
716
- #### `proxmox_move_disk_vm` 🔒
717
- Move a QEMU VM disk to different storage.
718
-
719
- **Parameters**:
720
- - `node` (string): Node name
721
- - `vmid` (number): VM ID
722
- - `disk` (string): Disk ID
723
- - `storage` (string): Target storage name
724
- - `delete` (boolean, optional): Delete source after move (default: `true`)
725
-
726
- **Example**:
727
- ```json
728
- {
729
- "node": "pve1",
730
- "vmid": 101,
731
- "disk": "scsi0",
732
- "storage": "fast-ssd",
733
- "delete": true
734
- }
735
- ```
736
-
737
- #### `proxmox_move_disk_lxc` 🔒
738
- Move an LXC container disk to different storage.
739
-
740
- **Parameters**: Same as `proxmox_move_disk_vm`
741
-
742
- ---
743
-
744
- ### Network (6 tools) 🔒
745
-
746
- All network operations require elevated permissions.
747
-
748
- #### `proxmox_add_network_vm` 🔒
749
- Add network interface to QEMU VM.
750
-
751
- **Parameters**:
752
- - `node` (string): Node name
753
- - `vmid` (number): VM ID
754
- - `net` (string): Network interface ID (e.g., `net0`, `net1`)
755
- - `bridge` (string): Bridge name (e.g., `vmbr0`)
756
- - `model` (string, optional): Network model: `virtio`, `e1000`, `rtl8139`, `vmxnet3`
757
- - `macaddr` (string, optional): MAC address
758
- - `tag` (number, optional): VLAN tag
759
- - `firewall` (boolean, optional): Enable firewall
760
-
761
- **Example**:
762
- ```json
763
- {
764
- "node": "pve1",
765
- "vmid": 101,
766
- "net": "net1",
767
- "bridge": "vmbr0",
768
- "model": "virtio",
769
- "tag": 100,
770
- "firewall": true
771
- }
772
- ```
773
-
774
- #### `proxmox_add_network_lxc` 🔒
775
- Add network interface to LXC container.
776
-
777
- **Parameters**:
778
- - `node` (string): Node name
779
- - `vmid` (number): Container ID
780
- - `net` (string): Network interface ID (e.g., `net0`, `net1`)
781
- - `bridge` (string): Bridge name
782
- - `ip` (string, optional): IP address with CIDR (e.g., `192.168.1.100/24`) or `dhcp`
783
- - `gw` (string, optional): Gateway IP
784
- - `firewall` (boolean, optional): Enable firewall
785
-
786
- **Example**:
787
- ```json
788
- {
789
- "node": "pve1",
790
- "vmid": 100,
791
- "net": "net1",
792
- "bridge": "vmbr0",
793
- "ip": "192.168.1.100/24",
794
- "gw": "192.168.1.1",
795
- "firewall": true
796
- }
797
- ```
798
-
799
- #### `proxmox_update_network_vm` 🔒
800
- Update/modify VM network interface configuration.
801
-
802
- **Parameters**: Same as `proxmox_add_network_vm` (updates existing interface)
803
-
804
- #### `proxmox_update_network_lxc` 🔒
805
- Update/modify LXC network interface configuration.
806
-
807
- **Parameters**: Same as `proxmox_add_network_lxc` (updates existing interface)
808
-
809
- #### `proxmox_remove_network_vm` 🔒
810
- Remove network interface from QEMU VM.
811
-
812
- **Parameters**:
813
- - `node` (string): Node name
814
- - `vmid` (number): VM ID
815
- - `net` (string): Network interface ID
816
-
817
- **Example**:
818
- ```json
819
- {
820
- "node": "pve1",
821
- "vmid": 101,
822
- "net": "net1"
823
- }
824
- ```
825
-
826
- #### `proxmox_remove_network_lxc` 🔒
827
- Remove network interface from LXC container.
828
-
829
- **Parameters**: Same as `proxmox_remove_network_vm`
830
-
831
- ---
832
-
833
- ### Command Execution (1 tool) 🔒
834
-
835
- #### `proxmox_execute_vm_command` 🔒
836
- Execute a shell command on a virtual machine via Proxmox API.
837
-
838
- **Parameters**:
839
- - `node` (string): Node name
840
- - `vmid` (number): VM/Container ID
841
- - `type` (string): VM type (`qemu` or `lxc`)
842
- - `command` (string): Shell command to execute
843
-
844
- **Example**:
845
- ```json
846
- {
847
- "node": "pve1",
848
- "vmid": 101,
849
- "type": "qemu",
850
- "command": "uptime"
851
- }
852
- ```
853
-
854
- **Note**: Command validation blocks potentially dangerous characters for security.
855
-
856
- ---
857
-
858
- ### VM Creation (3 tools)
859
-
860
- #### `proxmox_list_templates`
861
- List available LXC container templates on a storage.
862
-
863
- **Parameters**:
864
- - `node` (string): Node name
865
- - `storage` (string): Storage name
866
-
867
- **Example**:
868
- ```json
869
- {
870
- "node": "pve1",
871
- "storage": "local"
872
- }
873
- ```
874
-
875
- #### `proxmox_create_lxc` 🔒
876
- Create a new LXC container.
877
-
878
- **Parameters**:
879
- - `node` (string): Node name
880
- - `vmid` (number): Container ID
881
- - `ostemplate` (string): Template path (e.g., `local:vztmpl/debian-12-standard_12.2-1_amd64.tar.gz`)
882
- - `hostname` (string): Container hostname
883
- - `password` (string, optional): Root password (auto-generated if not provided)
884
- - `memory` (number, optional): Memory in MB (default: 512)
885
- - `storage` (string, optional): Storage name (default: `local-lvm`)
886
- - `rootfs_size` (string, optional): Root filesystem size in GB (default: `8`)
887
-
888
- **Example**:
889
- ```json
890
- {
891
- "node": "pve1",
892
- "vmid": 100,
893
- "ostemplate": "local:vztmpl/debian-12-standard_12.2-1_amd64.tar.gz",
894
- "hostname": "my-container",
895
- "password": "SecurePassword123!",
896
- "memory": 1024,
897
- "storage": "local-lvm",
898
- "rootfs_size": "16"
899
- }
900
- ```
901
-
902
- #### `proxmox_create_vm` 🔒
903
- Create a new QEMU virtual machine.
904
-
905
- **Parameters**:
906
- - `node` (string): Node name
907
- - `vmid` (number): VM ID
908
- - `name` (string): VM name
909
- - `memory` (number, optional): Memory in MB (default: 512)
910
- - `cores` (number, optional): CPU cores (default: 1)
911
- - `sockets` (number, optional): CPU sockets (default: 1)
912
- - `disk_size` (string, optional): Disk size (e.g., `20G`) (default: `8G`)
913
- - `storage` (string, optional): Storage name (default: `local-lvm`)
914
- - `iso` (string, optional): ISO image path (e.g., `local:iso/debian-12.2-amd64-netinst.iso`)
915
- - `ostype` (string, optional): OS type (default: `l26` for Linux 2.6+)
916
- - `bridge` (string, optional): Network bridge (default: `vmbr0`)
917
-
918
- **Example**:
919
- ```json
920
- {
921
- "node": "pve1",
922
- "vmid": 101,
923
- "name": "my-vm",
924
- "memory": 2048,
925
- "cores": 2,
926
- "sockets": 1,
927
- "disk_size": "50G",
928
- "storage": "local-lvm",
929
- "iso": "local:iso/debian-12.2-amd64-netinst.iso",
930
- "ostype": "l26",
931
- "bridge": "vmbr0"
932
- }
933
- ```
934
-
935
- ---
936
-
937
- ### Node Disk Query (4 tools)
938
-
939
- #### `proxmox_get_node_disks`
940
- List physical disks on a Proxmox node.
941
-
942
- **Parameters**:
943
- - `node` (string): Node name
944
- - `type` (string, optional): Filter by disk type (`unused`, `journal_disks`)
945
-
946
- **Example**:
947
- ```json
948
- {
949
- "node": "pve1"
950
- }
951
- ```
952
-
953
- **Returns**: List of physical disks with device path, size, model, serial, and usage status.
954
-
955
- #### `proxmox_get_node_disk_smart`
956
- Get SMART health data for a specific disk.
957
-
958
- **Parameters**:
959
- - `node` (string): Node name
960
- - `disk` (string): Disk device path (e.g., `/dev/sda`)
961
-
962
- **Example**:
963
- ```json
964
- {
965
- "node": "pve1",
966
- "disk": "/dev/sda"
967
- }
968
- ```
969
-
970
- **Returns**: SMART health status, attributes, and disk diagnostics.
971
-
972
- #### `proxmox_get_node_lvm`
973
- List LVM volume groups and logical volumes on a node.
974
-
975
- **Parameters**:
976
- - `node` (string): Node name
977
-
978
- **Example**:
979
- ```json
980
- {
981
- "node": "pve1"
982
- }
983
- ```
984
-
985
- **Returns**: Volume groups with their logical volumes, sizes, and free space.
986
-
987
- #### `proxmox_get_node_zfs`
988
- List ZFS pools on a Proxmox node.
989
-
990
- **Parameters**:
991
- - `node` (string): Node name
992
-
993
- **Example**:
994
- ```json
995
- {
996
- "node": "pve1"
997
- }
998
- ```
999
-
1000
- **Returns**: ZFS pools with health status, size, allocated/free space, and fragmentation.
1001
-
1002
- ---
1003
-
1004
- ### Node Network Query (3 tools)
1005
-
1006
- #### `proxmox_get_node_network`
1007
- List network interfaces on a Proxmox node.
1008
-
1009
- **Parameters**:
1010
- - `node` (string): Node name
1011
- - `type` (string, optional): Filter by interface type (`bridge`, `bond`, `eth`, `alias`, `vlan`, `OVSBridge`, `OVSBond`, `OVSPort`, `OVSIntPort`, `any_bridge`, `any_local_bridge`)
1012
-
1013
- **Example**:
1014
- ```json
1015
- {
1016
- "node": "pve1",
1017
- "type": "bridge"
1018
- }
1019
- ```
1020
-
1021
- **Returns**: List of network interfaces with IP addresses, status, and configuration.
1022
-
1023
- #### `proxmox_get_node_dns`
1024
- Get DNS configuration for a Proxmox node.
1025
-
1026
- **Parameters**:
1027
- - `node` (string): Node name
1028
-
1029
- **Example**:
1030
- ```json
1031
- {
1032
- "node": "pve1"
1033
- }
1034
- ```
1035
-
1036
- **Returns**: DNS servers (dns1, dns2, dns3) and search domain.
1037
-
1038
- #### `proxmox_get_network_iface`
1039
- Get detailed configuration for a specific network interface.
1040
-
1041
- **Parameters**:
1042
- - `node` (string): Node name
1043
- - `iface` (string): Interface name (e.g., `vmbr0`, `eth0`)
1044
-
1045
- **Example**:
1046
- ```json
1047
- {
1048
- "node": "pve1",
1049
- "iface": "vmbr0"
1050
- }
1051
- ```
1052
-
1053
- **Returns**: Interface details including type, IP address, netmask, gateway, bridge ports, and active status.
1054
-
1055
- ---
128
+ This server provides **143 comprehensive tools** for Proxmox management:
129
+
130
+ | Category | Tools | Permission |
131
+ |----------|-------|------------|
132
+ | Node & Cluster | 7 | Mixed |
133
+ | Node Management | 8 | Mixed |
134
+ | Cluster Management | 33 | Mixed |
135
+ | Storage Management | 12 | Mixed |
136
+ | VM Query | 5 | Basic |
137
+ | VM Lifecycle | 12 | Elevated 🔒 |
138
+ | VM Modify | 4 | Elevated 🔒 |
139
+ | VM/LXC Advanced | 26 | Mixed |
140
+ | Snapshots | 8 | Mixed |
141
+ | Backups | 6 | Elevated 🔒 |
142
+ | Disks | 8 | Elevated 🔒 |
143
+ | VM/LXC Network | 6 | Elevated 🔒 |
144
+ | Command Execution | 1 | Elevated 🔒 |
145
+ | VM Creation | 3 | Mixed |
146
+ | Node Disk Query | 4 | Basic |
147
+ | **Total** | **143** | |
148
+
149
+ 📖 **[Full Tools Reference →](docs/TOOLS.md)**
1056
150
 
1057
151
  ## Error Handling
1058
152