@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.
- package/README.md +26 -774
- package/dist/schemas/access-control.d.ts +354 -0
- package/dist/schemas/access-control.d.ts.map +1 -0
- package/dist/schemas/access-control.js +147 -0
- package/dist/schemas/access-control.js.map +1 -0
- package/dist/schemas/backup.d.ts +10 -10
- package/dist/schemas/ceph.d.ts +224 -0
- package/dist/schemas/ceph.d.ts.map +1 -0
- package/dist/schemas/ceph.js +101 -0
- package/dist/schemas/ceph.js.map +1 -0
- package/dist/schemas/cluster-management.d.ts +662 -0
- package/dist/schemas/cluster-management.d.ts.map +1 -0
- package/dist/schemas/cluster-management.js +276 -0
- package/dist/schemas/cluster-management.js.map +1 -0
- package/dist/schemas/console-access.d.ts +57 -0
- package/dist/schemas/console-access.d.ts.map +1 -0
- package/dist/schemas/console-access.js +16 -0
- package/dist/schemas/console-access.js.map +1 -0
- package/dist/schemas/disk.d.ts +16 -16
- package/dist/schemas/index.d.ts +10 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +10 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/network.d.ts +12 -12
- package/dist/schemas/node-network.d.ts +169 -0
- package/dist/schemas/node-network.d.ts.map +1 -0
- package/dist/schemas/node-network.js +69 -0
- package/dist/schemas/node-network.js.map +1 -0
- package/dist/schemas/node.d.ts +103 -0
- package/dist/schemas/node.d.ts.map +1 -1
- package/dist/schemas/node.js +49 -0
- package/dist/schemas/node.js.map +1 -1
- package/dist/schemas/pool-management.d.ts +48 -0
- package/dist/schemas/pool-management.d.ts.map +1 -0
- package/dist/schemas/pool-management.js +24 -0
- package/dist/schemas/pool-management.js.map +1 -0
- package/dist/schemas/sdn.d.ts +366 -0
- package/dist/schemas/sdn.d.ts.map +1 -0
- package/dist/schemas/sdn.js +166 -0
- package/dist/schemas/sdn.js.map +1 -0
- package/dist/schemas/storage-management.d.ts +341 -0
- package/dist/schemas/storage-management.d.ts.map +1 -0
- package/dist/schemas/storage-management.js +151 -0
- package/dist/schemas/storage-management.js.map +1 -0
- package/dist/schemas/system-operations.d.ts +162 -0
- package/dist/schemas/system-operations.d.ts.map +1 -0
- package/dist/schemas/system-operations.js +81 -0
- package/dist/schemas/system-operations.js.map +1 -0
- package/dist/schemas/vm-advanced.d.ts +558 -0
- package/dist/schemas/vm-advanced.d.ts.map +1 -0
- package/dist/schemas/vm-advanced.js +170 -0
- package/dist/schemas/vm-advanced.js.map +1 -0
- package/dist/schemas/vm.d.ts +8 -8
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +179 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/access-control.d.ts +85 -0
- package/dist/tools/access-control.d.ts.map +1 -0
- package/dist/tools/access-control.js +603 -0
- package/dist/tools/access-control.js.map +1 -0
- package/dist/tools/ceph.d.ts +69 -0
- package/dist/tools/ceph.d.ts.map +1 -0
- package/dist/tools/ceph.js +487 -0
- package/dist/tools/ceph.js.map +1 -0
- package/dist/tools/cluster-management.d.ts +137 -0
- package/dist/tools/cluster-management.d.ts.map +1 -0
- package/dist/tools/cluster-management.js +1055 -0
- package/dist/tools/cluster-management.js.map +1 -0
- package/dist/tools/command.d.ts.map +1 -1
- package/dist/tools/command.js +14 -0
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/console-access.d.ts +25 -0
- package/dist/tools/console-access.d.ts.map +1 -0
- package/dist/tools/console-access.js +108 -0
- package/dist/tools/console-access.js.map +1 -0
- package/dist/tools/index.d.ts +11 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +21 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/node-network.d.ts +25 -0
- package/dist/tools/node-network.d.ts.map +1 -0
- package/dist/tools/node-network.js +184 -0
- package/dist/tools/node-network.js.map +1 -0
- package/dist/tools/node.d.ts +56 -1
- package/dist/tools/node.d.ts.map +1 -1
- package/dist/tools/node.js +337 -2
- package/dist/tools/node.js.map +1 -1
- package/dist/tools/pool-management.d.ts +25 -0
- package/dist/tools/pool-management.d.ts.map +1 -0
- package/dist/tools/pool-management.js +137 -0
- package/dist/tools/pool-management.js.map +1 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +348 -5
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/sdn.d.ts +97 -0
- package/dist/tools/sdn.d.ts.map +1 -0
- package/dist/tools/sdn.js +429 -0
- package/dist/tools/sdn.js.map +1 -0
- package/dist/tools/storage-management.d.ts +53 -0
- package/dist/tools/storage-management.d.ts.map +1 -0
- package/dist/tools/storage-management.js +459 -0
- package/dist/tools/storage-management.js.map +1 -0
- package/dist/tools/system-operations.d.ts +75 -0
- package/dist/tools/system-operations.d.ts.map +1 -0
- package/dist/tools/system-operations.js +370 -0
- package/dist/tools/system-operations.js.map +1 -0
- package/dist/tools/vm-advanced.d.ts +109 -0
- package/dist/tools/vm-advanced.d.ts.map +1 -0
- package/dist/tools/vm-advanced.js +766 -0
- package/dist/tools/vm-advanced.js.map +1 -0
- package/dist/tools/vm-query.js +2 -2
- package/dist/tools/vm-query.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/proxmox.d.ts +78 -0
- package/dist/types/proxmox.d.ts.map +1 -1
- package/dist/types/tools.d.ts +1 -1
- package/dist/types/tools.d.ts.map +1 -1
- package/dist/types/tools.js +166 -0
- package/dist/types/tools.js.map +1 -1
- package/dist/validators/index.d.ts +60 -0
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +152 -0
- package/dist/validators/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
[](https://www.typescriptlang.org/)
|
|
9
9
|
[](https://nodejs.org/)
|
|
10
10
|
|
|
11
|
-
A comprehensive MCP server providing
|
|
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 →
|
|
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
|
|
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
|
-
- **
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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
|
|