@bldg-7/proxmox-mcp 0.2.0 → 0.4.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 (126) hide show
  1. package/README.md +26 -774
  2. package/dist/schemas/access-control.d.ts +354 -0
  3. package/dist/schemas/access-control.d.ts.map +1 -0
  4. package/dist/schemas/access-control.js +147 -0
  5. package/dist/schemas/access-control.js.map +1 -0
  6. package/dist/schemas/backup.d.ts +10 -10
  7. package/dist/schemas/ceph.d.ts +224 -0
  8. package/dist/schemas/ceph.d.ts.map +1 -0
  9. package/dist/schemas/ceph.js +101 -0
  10. package/dist/schemas/ceph.js.map +1 -0
  11. package/dist/schemas/cluster-management.d.ts +662 -0
  12. package/dist/schemas/cluster-management.d.ts.map +1 -0
  13. package/dist/schemas/cluster-management.js +276 -0
  14. package/dist/schemas/cluster-management.js.map +1 -0
  15. package/dist/schemas/console-access.d.ts +57 -0
  16. package/dist/schemas/console-access.d.ts.map +1 -0
  17. package/dist/schemas/console-access.js +16 -0
  18. package/dist/schemas/console-access.js.map +1 -0
  19. package/dist/schemas/disk.d.ts +16 -16
  20. package/dist/schemas/index.d.ts +10 -0
  21. package/dist/schemas/index.d.ts.map +1 -1
  22. package/dist/schemas/index.js +10 -0
  23. package/dist/schemas/index.js.map +1 -1
  24. package/dist/schemas/network.d.ts +12 -12
  25. package/dist/schemas/node-network.d.ts +169 -0
  26. package/dist/schemas/node-network.d.ts.map +1 -0
  27. package/dist/schemas/node-network.js +69 -0
  28. package/dist/schemas/node-network.js.map +1 -0
  29. package/dist/schemas/node.d.ts +103 -0
  30. package/dist/schemas/node.d.ts.map +1 -1
  31. package/dist/schemas/node.js +49 -0
  32. package/dist/schemas/node.js.map +1 -1
  33. package/dist/schemas/pool-management.d.ts +48 -0
  34. package/dist/schemas/pool-management.d.ts.map +1 -0
  35. package/dist/schemas/pool-management.js +24 -0
  36. package/dist/schemas/pool-management.js.map +1 -0
  37. package/dist/schemas/sdn.d.ts +366 -0
  38. package/dist/schemas/sdn.d.ts.map +1 -0
  39. package/dist/schemas/sdn.js +166 -0
  40. package/dist/schemas/sdn.js.map +1 -0
  41. package/dist/schemas/storage-management.d.ts +341 -0
  42. package/dist/schemas/storage-management.d.ts.map +1 -0
  43. package/dist/schemas/storage-management.js +151 -0
  44. package/dist/schemas/storage-management.js.map +1 -0
  45. package/dist/schemas/system-operations.d.ts +162 -0
  46. package/dist/schemas/system-operations.d.ts.map +1 -0
  47. package/dist/schemas/system-operations.js +81 -0
  48. package/dist/schemas/system-operations.js.map +1 -0
  49. package/dist/schemas/vm-advanced.d.ts +558 -0
  50. package/dist/schemas/vm-advanced.d.ts.map +1 -0
  51. package/dist/schemas/vm-advanced.js +170 -0
  52. package/dist/schemas/vm-advanced.js.map +1 -0
  53. package/dist/schemas/vm.d.ts +8 -8
  54. package/dist/server.d.ts.map +1 -1
  55. package/dist/server.js +179 -1
  56. package/dist/server.js.map +1 -1
  57. package/dist/tools/access-control.d.ts +85 -0
  58. package/dist/tools/access-control.d.ts.map +1 -0
  59. package/dist/tools/access-control.js +603 -0
  60. package/dist/tools/access-control.js.map +1 -0
  61. package/dist/tools/ceph.d.ts +69 -0
  62. package/dist/tools/ceph.d.ts.map +1 -0
  63. package/dist/tools/ceph.js +487 -0
  64. package/dist/tools/ceph.js.map +1 -0
  65. package/dist/tools/cluster-management.d.ts +137 -0
  66. package/dist/tools/cluster-management.d.ts.map +1 -0
  67. package/dist/tools/cluster-management.js +1055 -0
  68. package/dist/tools/cluster-management.js.map +1 -0
  69. package/dist/tools/command.d.ts.map +1 -1
  70. package/dist/tools/command.js +14 -0
  71. package/dist/tools/command.js.map +1 -1
  72. package/dist/tools/console-access.d.ts +25 -0
  73. package/dist/tools/console-access.d.ts.map +1 -0
  74. package/dist/tools/console-access.js +108 -0
  75. package/dist/tools/console-access.js.map +1 -0
  76. package/dist/tools/index.d.ts +11 -1
  77. package/dist/tools/index.d.ts.map +1 -1
  78. package/dist/tools/index.js +21 -1
  79. package/dist/tools/index.js.map +1 -1
  80. package/dist/tools/node-network.d.ts +25 -0
  81. package/dist/tools/node-network.d.ts.map +1 -0
  82. package/dist/tools/node-network.js +184 -0
  83. package/dist/tools/node-network.js.map +1 -0
  84. package/dist/tools/node.d.ts +56 -1
  85. package/dist/tools/node.d.ts.map +1 -1
  86. package/dist/tools/node.js +337 -2
  87. package/dist/tools/node.js.map +1 -1
  88. package/dist/tools/pool-management.d.ts +25 -0
  89. package/dist/tools/pool-management.d.ts.map +1 -0
  90. package/dist/tools/pool-management.js +137 -0
  91. package/dist/tools/pool-management.js.map +1 -0
  92. package/dist/tools/registry.d.ts.map +1 -1
  93. package/dist/tools/registry.js +348 -5
  94. package/dist/tools/registry.js.map +1 -1
  95. package/dist/tools/sdn.d.ts +97 -0
  96. package/dist/tools/sdn.d.ts.map +1 -0
  97. package/dist/tools/sdn.js +429 -0
  98. package/dist/tools/sdn.js.map +1 -0
  99. package/dist/tools/storage-management.d.ts +53 -0
  100. package/dist/tools/storage-management.d.ts.map +1 -0
  101. package/dist/tools/storage-management.js +459 -0
  102. package/dist/tools/storage-management.js.map +1 -0
  103. package/dist/tools/system-operations.d.ts +75 -0
  104. package/dist/tools/system-operations.d.ts.map +1 -0
  105. package/dist/tools/system-operations.js +370 -0
  106. package/dist/tools/system-operations.js.map +1 -0
  107. package/dist/tools/vm-advanced.d.ts +109 -0
  108. package/dist/tools/vm-advanced.d.ts.map +1 -0
  109. package/dist/tools/vm-advanced.js +766 -0
  110. package/dist/tools/vm-advanced.js.map +1 -0
  111. package/dist/tools/vm-query.js +2 -2
  112. package/dist/tools/vm-query.js.map +1 -1
  113. package/dist/types/index.d.ts +1 -1
  114. package/dist/types/index.d.ts.map +1 -1
  115. package/dist/types/index.js.map +1 -1
  116. package/dist/types/proxmox.d.ts +78 -0
  117. package/dist/types/proxmox.d.ts.map +1 -1
  118. package/dist/types/tools.d.ts +1 -1
  119. package/dist/types/tools.d.ts.map +1 -1
  120. package/dist/types/tools.js +166 -0
  121. package/dist/types/tools.js.map +1 -1
  122. package/dist/validators/index.d.ts +60 -0
  123. package/dist/validators/index.d.ts.map +1 -1
  124. package/dist/validators/index.js +152 -0
  125. package/dist/validators/index.js.map +1 -1
  126. 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 55 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
 
@@ -23,20 +23,20 @@ This project is a TypeScript rewrite of [mcp-proxmox-server](https://github.com/
23
23
  - Giant switch statement (55 cases) → tool registry with handler/schema pairs
24
24
 
25
25
  **Quality**:
26
- - 0 tests → 373 tests (351 unit + 22 integration)
26
+ - 0 tests → 405 tests (351 unit + 22 integration)
27
27
  - No input validation → Zod runtime validation on every tool call
28
28
  - Implicit error handling → structured MCP error responses with context
29
29
  - No permission checks → two-tier permission model (basic / elevated)
30
30
 
31
31
  **Developer Experience**:
32
32
  - `npx @bldg-7/proxmox-mcp` just works
33
- - All 55 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
- - **55 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,776 +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 Lifecycle (12 tools) 🔒
225
-
226
- All lifecycle operations require elevated permissions.
227
-
228
- #### `proxmox_start_lxc` 🔒
229
- Start an LXC container.
230
-
231
- **Parameters**:
232
- - `node` (string): Node name
233
- - `vmid` (number): Container ID
234
-
235
- **Example**:
236
- ```json
237
- {
238
- "node": "pve1",
239
- "vmid": 100
240
- }
241
- ```
242
-
243
- #### `proxmox_start_vm` 🔒
244
- Start a QEMU virtual machine.
245
-
246
- **Parameters**:
247
- - `node` (string): Node name
248
- - `vmid` (number): VM ID
249
-
250
- **Example**:
251
- ```json
252
- {
253
- "node": "pve1",
254
- "vmid": 101
255
- }
256
- ```
257
-
258
- #### `proxmox_stop_lxc` 🔒
259
- Stop an LXC container (forceful).
260
-
261
- **Parameters**:
262
- - `node` (string): Node name
263
- - `vmid` (number): Container ID
264
-
265
- #### `proxmox_stop_vm` 🔒
266
- Stop a QEMU virtual machine (forceful).
267
-
268
- **Parameters**:
269
- - `node` (string): Node name
270
- - `vmid` (number): VM ID
271
-
272
- #### `proxmox_shutdown_lxc` 🔒
273
- Gracefully shutdown an LXC container.
274
-
275
- **Parameters**:
276
- - `node` (string): Node name
277
- - `vmid` (number): Container ID
278
-
279
- #### `proxmox_shutdown_vm` 🔒
280
- Gracefully shutdown a QEMU virtual machine.
281
-
282
- **Parameters**:
283
- - `node` (string): Node name
284
- - `vmid` (number): VM ID
285
-
286
- #### `proxmox_reboot_lxc` 🔒
287
- Reboot an LXC container.
288
-
289
- **Parameters**:
290
- - `node` (string): Node name
291
- - `vmid` (number): Container ID
292
-
293
- #### `proxmox_reboot_vm` 🔒
294
- Reboot a QEMU virtual machine.
295
-
296
- **Parameters**:
297
- - `node` (string): Node name
298
- - `vmid` (number): VM ID
299
-
300
- #### `proxmox_pause_vm` 🔒
301
- Pause a QEMU virtual machine (suspend to RAM).
302
-
303
- **Parameters**:
304
- - `node` (string): Node name
305
- - `vmid` (number): VM ID
306
-
307
- #### `proxmox_resume_vm` 🔒
308
- Resume a paused QEMU virtual machine.
309
-
310
- **Parameters**:
311
- - `node` (string): Node name
312
- - `vmid` (number): VM ID
313
-
314
- #### `proxmox_delete_lxc` 🔒
315
- Delete an LXC container permanently.
316
-
317
- **Parameters**:
318
- - `node` (string): Node name
319
- - `vmid` (number): Container ID
320
-
321
- #### `proxmox_delete_vm` 🔒
322
- Delete a QEMU virtual machine permanently.
323
-
324
- **Parameters**:
325
- - `node` (string): Node name
326
- - `vmid` (number): VM ID
327
-
328
- ---
329
-
330
- ### VM Modify (4 tools) 🔒
331
-
332
- #### `proxmox_clone_lxc` 🔒
333
- Clone an LXC container.
334
-
335
- **Parameters**:
336
- - `node` (string): Node name
337
- - `vmid` (number): Source container ID
338
- - `newid` (number): New container ID
339
- - `hostname` (string, optional): New hostname
340
-
341
- **Example**:
342
- ```json
343
- {
344
- "node": "pve1",
345
- "vmid": 100,
346
- "newid": 200,
347
- "hostname": "cloned-container"
348
- }
349
- ```
350
-
351
- #### `proxmox_clone_vm` 🔒
352
- Clone a QEMU virtual machine.
353
-
354
- **Parameters**:
355
- - `node` (string): Node name
356
- - `vmid` (number): Source VM ID
357
- - `newid` (number): New VM ID
358
- - `name` (string, optional): New VM name
359
-
360
- **Example**:
361
- ```json
362
- {
363
- "node": "pve1",
364
- "vmid": 101,
365
- "newid": 201,
366
- "name": "cloned-vm"
367
- }
368
- ```
369
-
370
- #### `proxmox_resize_lxc` 🔒
371
- Resize an LXC container CPU/memory.
372
-
373
- **Parameters**:
374
- - `node` (string): Node name
375
- - `vmid` (number): Container ID
376
- - `memory` (number, optional): Memory in MB
377
- - `cores` (number, optional): Number of CPU cores
378
-
379
- **Example**:
380
- ```json
381
- {
382
- "node": "pve1",
383
- "vmid": 100,
384
- "memory": 2048,
385
- "cores": 2
386
- }
387
- ```
388
-
389
- #### `proxmox_resize_vm` 🔒
390
- Resize a QEMU VM CPU/memory.
391
-
392
- **Parameters**:
393
- - `node` (string): Node name
394
- - `vmid` (number): VM ID
395
- - `memory` (number, optional): Memory in MB
396
- - `cores` (number, optional): Number of CPU cores
397
-
398
- ---
399
-
400
- ### Snapshots (8 tools)
401
-
402
- #### `proxmox_create_snapshot_lxc` 🔒
403
- Create a snapshot of an LXC container.
404
-
405
- **Parameters**:
406
- - `node` (string): Node name
407
- - `vmid` (number): Container ID
408
- - `snapname` (string): Snapshot name
409
- - `description` (string, optional): Snapshot description
410
-
411
- **Example**:
412
- ```json
413
- {
414
- "node": "pve1",
415
- "vmid": 100,
416
- "snapname": "before-update",
417
- "description": "Snapshot before system update"
418
- }
419
- ```
420
-
421
- #### `proxmox_create_snapshot_vm` 🔒
422
- Create a snapshot of a QEMU virtual machine.
423
-
424
- **Parameters**:
425
- - `node` (string): Node name
426
- - `vmid` (number): VM ID
427
- - `snapname` (string): Snapshot name
428
- - `description` (string, optional): Snapshot description
429
-
430
- #### `proxmox_list_snapshots_lxc`
431
- List all snapshots of an LXC container.
432
-
433
- **Parameters**:
434
- - `node` (string): Node name
435
- - `vmid` (number): Container ID
436
-
437
- **Example**:
438
- ```json
439
- {
440
- "node": "pve1",
441
- "vmid": 100
442
- }
443
- ```
444
-
445
- #### `proxmox_list_snapshots_vm`
446
- List all snapshots of a QEMU virtual machine.
447
-
448
- **Parameters**:
449
- - `node` (string): Node name
450
- - `vmid` (number): VM ID
451
-
452
- #### `proxmox_rollback_snapshot_lxc` 🔒
453
- Rollback an LXC container to a snapshot.
454
-
455
- **Parameters**:
456
- - `node` (string): Node name
457
- - `vmid` (number): Container ID
458
- - `snapname` (string): Snapshot name
459
-
460
- **Example**:
461
- ```json
462
- {
463
- "node": "pve1",
464
- "vmid": 100,
465
- "snapname": "before-update"
466
- }
467
- ```
468
-
469
- #### `proxmox_rollback_snapshot_vm` 🔒
470
- Rollback a QEMU virtual machine to a snapshot.
471
-
472
- **Parameters**:
473
- - `node` (string): Node name
474
- - `vmid` (number): VM ID
475
- - `snapname` (string): Snapshot name
476
-
477
- #### `proxmox_delete_snapshot_lxc` 🔒
478
- Delete a snapshot of an LXC container.
479
-
480
- **Parameters**:
481
- - `node` (string): Node name
482
- - `vmid` (number): Container ID
483
- - `snapname` (string): Snapshot name
484
-
485
- #### `proxmox_delete_snapshot_vm` 🔒
486
- Delete a snapshot of a QEMU virtual machine.
487
-
488
- **Parameters**:
489
- - `node` (string): Node name
490
- - `vmid` (number): VM ID
491
- - `snapname` (string): Snapshot name
492
-
493
- ---
494
-
495
- ### Backups (6 tools) 🔒
496
-
497
- All backup operations require elevated permissions.
498
-
499
- #### `proxmox_create_backup_lxc` 🔒
500
- Create a backup of an LXC container.
501
-
502
- **Parameters**:
503
- - `node` (string): Node name
504
- - `vmid` (number): Container ID
505
- - `storage` (string, optional): Storage name (default: `local`)
506
- - `mode` (string, optional): Backup mode: `snapshot`, `suspend`, `stop` (default: `snapshot`)
507
- - `compress` (string, optional): Compression: `none`, `lzo`, `gzip`, `zstd` (default: `zstd`)
508
-
509
- **Example**:
510
- ```json
511
- {
512
- "node": "pve1",
513
- "vmid": 100,
514
- "storage": "backup-storage",
515
- "mode": "snapshot",
516
- "compress": "zstd"
517
- }
518
- ```
519
-
520
- #### `proxmox_create_backup_vm` 🔒
521
- Create a backup of a QEMU virtual machine.
522
-
523
- **Parameters**: Same as `proxmox_create_backup_lxc`
524
-
525
- #### `proxmox_list_backups` 🔒
526
- List all backups on a storage.
527
-
528
- **Parameters**:
529
- - `node` (string): Node name
530
- - `storage` (string): Storage name
531
-
532
- **Example**:
533
- ```json
534
- {
535
- "node": "pve1",
536
- "storage": "backup-storage"
537
- }
538
- ```
539
-
540
- #### `proxmox_restore_backup_lxc` 🔒
541
- Restore an LXC container from backup.
542
-
543
- **Parameters**:
544
- - `node` (string): Node name
545
- - `vmid` (number): New container ID
546
- - `archive` (string): Backup archive path (e.g., `local:backup/vzdump-lxc-100-...`)
547
- - `storage` (string, optional): Target storage for restored container
548
-
549
- **Example**:
550
- ```json
551
- {
552
- "node": "pve1",
553
- "vmid": 300,
554
- "archive": "local:backup/vzdump-lxc-100-2024_01_01-12_00_00.tar.zst",
555
- "storage": "local-lvm"
556
- }
557
- ```
558
-
559
- #### `proxmox_restore_backup_vm` 🔒
560
- Restore a QEMU virtual machine from backup.
561
-
562
- **Parameters**: Same as `proxmox_restore_backup_lxc`
563
-
564
- #### `proxmox_delete_backup` 🔒
565
- Delete a backup file from storage.
566
-
567
- **Parameters**:
568
- - `node` (string): Node name
569
- - `storage` (string): Storage name
570
- - `volume` (string): Volume ID (e.g., `local:backup/vzdump-lxc-100-...`)
571
-
572
- **Example**:
573
- ```json
574
- {
575
- "node": "pve1",
576
- "storage": "local",
577
- "volume": "local:backup/vzdump-lxc-100-2024_01_01-12_00_00.tar.zst"
578
- }
579
- ```
580
-
581
- ---
582
-
583
- ### Disks (8 tools) 🔒
584
-
585
- All disk operations require elevated permissions.
586
-
587
- #### `proxmox_add_disk_vm` 🔒
588
- Add a new disk to a QEMU virtual machine.
589
-
590
- **Parameters**:
591
- - `node` (string): Node name
592
- - `vmid` (number): VM ID
593
- - `disk` (string): Disk ID (e.g., `scsi0`, `virtio0`, `sata0`, `ide0`)
594
- - `storage` (string): Storage name
595
- - `size` (string): Disk size (e.g., `10` for 10GB)
596
-
597
- **Example**:
598
- ```json
599
- {
600
- "node": "pve1",
601
- "vmid": 101,
602
- "disk": "scsi1",
603
- "storage": "local-lvm",
604
- "size": "50"
605
- }
606
- ```
607
-
608
- #### `proxmox_add_mountpoint_lxc` 🔒
609
- Add a mount point to an LXC container.
610
-
611
- **Parameters**:
612
- - `node` (string): Node name
613
- - `vmid` (number): Container ID
614
- - `mp` (string): Mount point ID (e.g., `mp0`, `mp1`)
615
- - `storage` (string): Storage name
616
- - `size` (string): Size (e.g., `10` for 10GB)
617
-
618
- **Example**:
619
- ```json
620
- {
621
- "node": "pve1",
622
- "vmid": 100,
623
- "mp": "mp0",
624
- "storage": "local-lvm",
625
- "size": "20"
626
- }
627
- ```
628
-
629
- #### `proxmox_resize_disk_vm` 🔒
630
- Resize a QEMU VM disk (expansion only).
631
-
632
- **Parameters**:
633
- - `node` (string): Node name
634
- - `vmid` (number): VM ID
635
- - `disk` (string): Disk ID
636
- - `size` (string): New size (e.g., `+10G` to add 10GB, or `50G` for absolute size)
637
-
638
- **Example**:
639
- ```json
640
- {
641
- "node": "pve1",
642
- "vmid": 101,
643
- "disk": "scsi0",
644
- "size": "+20G"
645
- }
646
- ```
647
-
648
- #### `proxmox_resize_disk_lxc` 🔒
649
- Resize an LXC container disk or mount point (expansion only).
650
-
651
- **Parameters**: Same as `proxmox_resize_disk_vm`
652
-
653
- #### `proxmox_remove_disk_vm` 🔒
654
- Remove a disk from a QEMU virtual machine.
655
-
656
- **Parameters**:
657
- - `node` (string): Node name
658
- - `vmid` (number): VM ID
659
- - `disk` (string): Disk ID
660
-
661
- **Example**:
662
- ```json
663
- {
664
- "node": "pve1",
665
- "vmid": 101,
666
- "disk": "scsi1"
667
- }
668
- ```
669
-
670
- #### `proxmox_remove_mountpoint_lxc` 🔒
671
- Remove a mount point from an LXC container.
672
-
673
- **Parameters**:
674
- - `node` (string): Node name
675
- - `vmid` (number): Container ID
676
- - `mp` (string): Mount point ID
677
-
678
- #### `proxmox_move_disk_vm` 🔒
679
- Move a QEMU VM disk to different storage.
680
-
681
- **Parameters**:
682
- - `node` (string): Node name
683
- - `vmid` (number): VM ID
684
- - `disk` (string): Disk ID
685
- - `storage` (string): Target storage name
686
- - `delete` (boolean, optional): Delete source after move (default: `true`)
687
-
688
- **Example**:
689
- ```json
690
- {
691
- "node": "pve1",
692
- "vmid": 101,
693
- "disk": "scsi0",
694
- "storage": "fast-ssd",
695
- "delete": true
696
- }
697
- ```
698
-
699
- #### `proxmox_move_disk_lxc` 🔒
700
- Move an LXC container disk to different storage.
701
-
702
- **Parameters**: Same as `proxmox_move_disk_vm`
703
-
704
- ---
705
-
706
- ### Network (6 tools) 🔒
707
-
708
- All network operations require elevated permissions.
709
-
710
- #### `proxmox_add_network_vm` 🔒
711
- Add network interface to QEMU VM.
712
-
713
- **Parameters**:
714
- - `node` (string): Node name
715
- - `vmid` (number): VM ID
716
- - `net` (string): Network interface ID (e.g., `net0`, `net1`)
717
- - `bridge` (string): Bridge name (e.g., `vmbr0`)
718
- - `model` (string, optional): Network model: `virtio`, `e1000`, `rtl8139`, `vmxnet3`
719
- - `macaddr` (string, optional): MAC address
720
- - `tag` (number, optional): VLAN tag
721
- - `firewall` (boolean, optional): Enable firewall
722
-
723
- **Example**:
724
- ```json
725
- {
726
- "node": "pve1",
727
- "vmid": 101,
728
- "net": "net1",
729
- "bridge": "vmbr0",
730
- "model": "virtio",
731
- "tag": 100,
732
- "firewall": true
733
- }
734
- ```
735
-
736
- #### `proxmox_add_network_lxc` 🔒
737
- Add network interface to LXC container.
738
-
739
- **Parameters**:
740
- - `node` (string): Node name
741
- - `vmid` (number): Container ID
742
- - `net` (string): Network interface ID (e.g., `net0`, `net1`)
743
- - `bridge` (string): Bridge name
744
- - `ip` (string, optional): IP address with CIDR (e.g., `192.168.1.100/24`) or `dhcp`
745
- - `gw` (string, optional): Gateway IP
746
- - `firewall` (boolean, optional): Enable firewall
747
-
748
- **Example**:
749
- ```json
750
- {
751
- "node": "pve1",
752
- "vmid": 100,
753
- "net": "net1",
754
- "bridge": "vmbr0",
755
- "ip": "192.168.1.100/24",
756
- "gw": "192.168.1.1",
757
- "firewall": true
758
- }
759
- ```
760
-
761
- #### `proxmox_update_network_vm` 🔒
762
- Update/modify VM network interface configuration.
763
-
764
- **Parameters**: Same as `proxmox_add_network_vm` (updates existing interface)
765
-
766
- #### `proxmox_update_network_lxc` 🔒
767
- Update/modify LXC network interface configuration.
768
-
769
- **Parameters**: Same as `proxmox_add_network_lxc` (updates existing interface)
770
-
771
- #### `proxmox_remove_network_vm` 🔒
772
- Remove network interface from QEMU VM.
773
-
774
- **Parameters**:
775
- - `node` (string): Node name
776
- - `vmid` (number): VM ID
777
- - `net` (string): Network interface ID
778
-
779
- **Example**:
780
- ```json
781
- {
782
- "node": "pve1",
783
- "vmid": 101,
784
- "net": "net1"
785
- }
786
- ```
787
-
788
- #### `proxmox_remove_network_lxc` 🔒
789
- Remove network interface from LXC container.
790
-
791
- **Parameters**: Same as `proxmox_remove_network_vm`
792
-
793
- ---
794
-
795
- ### Command Execution (1 tool) 🔒
796
-
797
- #### `proxmox_execute_vm_command` 🔒
798
- Execute a shell command on a virtual machine via Proxmox API.
799
-
800
- **Parameters**:
801
- - `node` (string): Node name
802
- - `vmid` (number): VM/Container ID
803
- - `type` (string): VM type (`qemu` or `lxc`)
804
- - `command` (string): Shell command to execute
805
-
806
- **Example**:
807
- ```json
808
- {
809
- "node": "pve1",
810
- "vmid": 101,
811
- "type": "qemu",
812
- "command": "uptime"
813
- }
814
- ```
815
-
816
- **Note**: Command validation blocks potentially dangerous characters for security.
817
-
818
- ---
819
-
820
- ### VM Creation (3 tools)
821
-
822
- #### `proxmox_list_templates`
823
- List available LXC container templates on a storage.
824
-
825
- **Parameters**:
826
- - `node` (string): Node name
827
- - `storage` (string): Storage name
828
-
829
- **Example**:
830
- ```json
831
- {
832
- "node": "pve1",
833
- "storage": "local"
834
- }
835
- ```
836
-
837
- #### `proxmox_create_lxc` 🔒
838
- Create a new LXC container.
839
-
840
- **Parameters**:
841
- - `node` (string): Node name
842
- - `vmid` (number): Container ID
843
- - `ostemplate` (string): Template path (e.g., `local:vztmpl/debian-12-standard_12.2-1_amd64.tar.gz`)
844
- - `hostname` (string): Container hostname
845
- - `password` (string, optional): Root password (auto-generated if not provided)
846
- - `memory` (number, optional): Memory in MB (default: 512)
847
- - `storage` (string, optional): Storage name (default: `local-lvm`)
848
- - `rootfs_size` (string, optional): Root filesystem size in GB (default: `8`)
849
-
850
- **Example**:
851
- ```json
852
- {
853
- "node": "pve1",
854
- "vmid": 100,
855
- "ostemplate": "local:vztmpl/debian-12-standard_12.2-1_amd64.tar.gz",
856
- "hostname": "my-container",
857
- "password": "SecurePassword123!",
858
- "memory": 1024,
859
- "storage": "local-lvm",
860
- "rootfs_size": "16"
861
- }
862
- ```
863
-
864
- #### `proxmox_create_vm` 🔒
865
- Create a new QEMU virtual machine.
866
-
867
- **Parameters**:
868
- - `node` (string): Node name
869
- - `vmid` (number): VM ID
870
- - `name` (string): VM name
871
- - `memory` (number, optional): Memory in MB (default: 512)
872
- - `cores` (number, optional): CPU cores (default: 1)
873
- - `sockets` (number, optional): CPU sockets (default: 1)
874
- - `disk_size` (string, optional): Disk size (e.g., `20G`) (default: `8G`)
875
- - `storage` (string, optional): Storage name (default: `local-lvm`)
876
- - `iso` (string, optional): ISO image path (e.g., `local:iso/debian-12.2-amd64-netinst.iso`)
877
- - `ostype` (string, optional): OS type (default: `l26` for Linux 2.6+)
878
- - `bridge` (string, optional): Network bridge (default: `vmbr0`)
879
-
880
- **Example**:
881
- ```json
882
- {
883
- "node": "pve1",
884
- "vmid": 101,
885
- "name": "my-vm",
886
- "memory": 2048,
887
- "cores": 2,
888
- "sockets": 1,
889
- "disk_size": "50G",
890
- "storage": "local-lvm",
891
- "iso": "local:iso/debian-12.2-amd64-netinst.iso",
892
- "ostype": "l26",
893
- "bridge": "vmbr0"
894
- }
895
- ```
896
-
897
- ---
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)**
898
150
 
899
151
  ## Error Handling
900
152