@bldg-7/proxmox-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1033 -0
  3. package/dist/client/proxmox.d.ts +14 -0
  4. package/dist/client/proxmox.d.ts.map +1 -0
  5. package/dist/client/proxmox.js +82 -0
  6. package/dist/client/proxmox.js.map +1 -0
  7. package/dist/config/index.d.ts +4 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +24 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/schema.d.ts +31 -0
  12. package/dist/config/schema.d.ts.map +1 -0
  13. package/dist/config/schema.js +32 -0
  14. package/dist/config/schema.js.map +1 -0
  15. package/dist/formatters/index.d.ts +42 -0
  16. package/dist/formatters/index.d.ts.map +1 -0
  17. package/dist/formatters/index.js +85 -0
  18. package/dist/formatters/index.js.map +1 -0
  19. package/dist/index.d.ts +3 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +40 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/middleware/index.d.ts +41 -0
  24. package/dist/middleware/index.d.ts.map +1 -0
  25. package/dist/middleware/index.js +69 -0
  26. package/dist/middleware/index.js.map +1 -0
  27. package/dist/prompts/index.d.ts +2 -0
  28. package/dist/prompts/index.d.ts.map +1 -0
  29. package/dist/prompts/index.js +2 -0
  30. package/dist/prompts/index.js.map +1 -0
  31. package/dist/resources/index.d.ts +2 -0
  32. package/dist/resources/index.d.ts.map +1 -0
  33. package/dist/resources/index.js +2 -0
  34. package/dist/resources/index.js.map +1 -0
  35. package/dist/schemas/backup.d.ts +101 -0
  36. package/dist/schemas/backup.d.ts.map +1 -0
  37. package/dist/schemas/backup.js +43 -0
  38. package/dist/schemas/backup.js.map +1 -0
  39. package/dist/schemas/disk.d.ts +144 -0
  40. package/dist/schemas/disk.d.ts.map +1 -0
  41. package/dist/schemas/disk.js +60 -0
  42. package/dist/schemas/disk.js.map +1 -0
  43. package/dist/schemas/index.d.ts +7 -0
  44. package/dist/schemas/index.d.ts.map +1 -0
  45. package/dist/schemas/index.js +7 -0
  46. package/dist/schemas/index.js.map +1 -0
  47. package/dist/schemas/network.d.ts +140 -0
  48. package/dist/schemas/network.d.ts.map +1 -0
  49. package/dist/schemas/network.js +56 -0
  50. package/dist/schemas/network.js.map +1 -0
  51. package/dist/schemas/node.d.ts +16 -0
  52. package/dist/schemas/node.d.ts.map +1 -0
  53. package/dist/schemas/node.js +12 -0
  54. package/dist/schemas/node.js.map +1 -0
  55. package/dist/schemas/snapshot.d.ts +116 -0
  56. package/dist/schemas/snapshot.d.ts.map +1 -0
  57. package/dist/schemas/snapshot.js +34 -0
  58. package/dist/schemas/snapshot.js.map +1 -0
  59. package/dist/schemas/vm.d.ts +330 -0
  60. package/dist/schemas/vm.d.ts.map +1 -0
  61. package/dist/schemas/vm.js +111 -0
  62. package/dist/schemas/vm.js.map +1 -0
  63. package/dist/server.d.ts +5 -0
  64. package/dist/server.d.ts.map +1 -0
  65. package/dist/server.js +142 -0
  66. package/dist/server.js.map +1 -0
  67. package/dist/tools/backup.d.ts +35 -0
  68. package/dist/tools/backup.d.ts.map +1 -0
  69. package/dist/tools/backup.js +210 -0
  70. package/dist/tools/backup.js.map +1 -0
  71. package/dist/tools/cluster.d.ts +15 -0
  72. package/dist/tools/cluster.d.ts.map +1 -0
  73. package/dist/tools/cluster.js +82 -0
  74. package/dist/tools/cluster.js.map +1 -0
  75. package/dist/tools/command.d.ts +6 -0
  76. package/dist/tools/command.d.ts.map +1 -0
  77. package/dist/tools/command.js +26 -0
  78. package/dist/tools/command.js.map +1 -0
  79. package/dist/tools/disk.d.ts +45 -0
  80. package/dist/tools/disk.d.ts.map +1 -0
  81. package/dist/tools/disk.js +243 -0
  82. package/dist/tools/disk.js.map +1 -0
  83. package/dist/tools/index.d.ts +12 -0
  84. package/dist/tools/index.d.ts.map +1 -0
  85. package/dist/tools/index.js +20 -0
  86. package/dist/tools/index.js.map +1 -0
  87. package/dist/tools/network.d.ts +35 -0
  88. package/dist/tools/network.d.ts.map +1 -0
  89. package/dist/tools/network.js +270 -0
  90. package/dist/tools/network.js.map +1 -0
  91. package/dist/tools/node.d.ts +15 -0
  92. package/dist/tools/node.d.ts.map +1 -0
  93. package/dist/tools/node.js +73 -0
  94. package/dist/tools/node.js.map +1 -0
  95. package/dist/tools/registry.d.ts +12 -0
  96. package/dist/tools/registry.d.ts.map +1 -0
  97. package/dist/tools/registry.js +87 -0
  98. package/dist/tools/registry.js.map +1 -0
  99. package/dist/tools/snapshot.d.ts +45 -0
  100. package/dist/tools/snapshot.d.ts.map +1 -0
  101. package/dist/tools/snapshot.js +249 -0
  102. package/dist/tools/snapshot.js.map +1 -0
  103. package/dist/tools/vm-create.d.ts +8 -0
  104. package/dist/tools/vm-create.d.ts.map +1 -0
  105. package/dist/tools/vm-create.js +129 -0
  106. package/dist/tools/vm-create.js.map +1 -0
  107. package/dist/tools/vm-lifecycle.d.ts +67 -0
  108. package/dist/tools/vm-lifecycle.d.ts.map +1 -0
  109. package/dist/tools/vm-lifecycle.js +319 -0
  110. package/dist/tools/vm-lifecycle.js.map +1 -0
  111. package/dist/tools/vm-modify.d.ts +25 -0
  112. package/dist/tools/vm-modify.d.ts.map +1 -0
  113. package/dist/tools/vm-modify.js +155 -0
  114. package/dist/tools/vm-modify.js.map +1 -0
  115. package/dist/tools/vm-query.d.ts +20 -0
  116. package/dist/tools/vm-query.d.ts.map +1 -0
  117. package/dist/tools/vm-query.js +166 -0
  118. package/dist/tools/vm-query.js.map +1 -0
  119. package/dist/types/index.d.ts +5 -0
  120. package/dist/types/index.d.ts.map +1 -0
  121. package/dist/types/index.js +2 -0
  122. package/dist/types/index.js.map +1 -0
  123. package/dist/types/proxmox.d.ts +166 -0
  124. package/dist/types/proxmox.d.ts.map +1 -0
  125. package/dist/types/proxmox.js +2 -0
  126. package/dist/types/proxmox.js.map +1 -0
  127. package/dist/types/tools.d.ts +12 -0
  128. package/dist/types/tools.d.ts.map +1 -0
  129. package/dist/types/tools.js +64 -0
  130. package/dist/types/tools.js.map +1 -0
  131. package/dist/utils/index.d.ts +3 -0
  132. package/dist/utils/index.d.ts.map +1 -0
  133. package/dist/utils/index.js +8 -0
  134. package/dist/utils/index.js.map +1 -0
  135. package/dist/validators/index.d.ts +75 -0
  136. package/dist/validators/index.d.ts.map +1 -0
  137. package/dist/validators/index.js +185 -0
  138. package/dist/validators/index.js.map +1 -0
  139. package/package.json +51 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,mBAAmB;IACnB,yBAAyB;IACzB,iBAAiB;IACjB,uBAAuB;IACvB,4BAA4B;IAC5B,qBAAqB;IACrB,4BAA4B;IAC5B,wBAAwB;IACxB,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;IACtB,qBAAqB;IACrB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,mBAAmB;IACnB,6BAA6B;IAC7B,4BAA4B;IAC5B,4BAA4B;IAC5B,2BAA2B;IAC3B,+BAA+B;IAC/B,8BAA8B;IAC9B,6BAA6B;IAC7B,4BAA4B;IAC5B,2BAA2B;IAC3B,0BAA0B;IAC1B,sBAAsB;IACtB,4BAA4B;IAC5B,2BAA2B;IAC3B,uBAAuB;IACvB,qBAAqB;IACrB,4BAA4B;IAC5B,wBAAwB;IACxB,yBAAyB;IACzB,wBAAwB;IACxB,+BAA+B;IAC/B,sBAAsB;IACtB,uBAAuB;IACvB,wBAAwB;IACxB,yBAAyB;IACzB,2BAA2B;IAC3B,4BAA4B;IAC5B,2BAA2B;IAC3B,4BAA4B;CACpB,CAAC;AAcX,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK;IAC9D,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACjC,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import pino from 'pino';
2
+ export declare const logger: pino.Logger<never, boolean>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,eAAO,MAAM,MAAM,6BAKjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import pino from 'pino';
2
+ export const logger = pino({
3
+ level: process.env.PROXMOX_LOG_LEVEL || 'info',
4
+ transport: process.env.NODE_ENV !== 'production' ? {
5
+ target: 'pino-pretty',
6
+ } : undefined,
7
+ });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM;IAC9C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC;QACjD,MAAM,EAAE,aAAa;KACtB,CAAC,CAAC,CAAC,SAAS;CACd,CAAC,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Validates a Proxmox node name.
3
+ * Only allows alphanumeric characters, hyphens, and underscores.
4
+ * Maximum length: 64 characters.
5
+ *
6
+ * @throws {Error} If node name is invalid
7
+ */
8
+ export declare function validateNodeName(node: unknown): string;
9
+ /**
10
+ * Validates a Proxmox VM ID.
11
+ * Must be a number between 100 and 999999999.
12
+ *
13
+ * @throws {Error} If VMID is invalid
14
+ */
15
+ export declare function validateVMID(vmid: unknown): string;
16
+ /**
17
+ * Validates a shell command for execution.
18
+ * Blocks dangerous characters that could be used for command injection.
19
+ * Maximum length: 1000 characters.
20
+ *
21
+ * @throws {Error} If command contains dangerous characters or is too long
22
+ */
23
+ export declare function validateCommand(command: unknown): string;
24
+ /**
25
+ * Validates a storage name.
26
+ * Only allows alphanumeric characters, hyphens, underscores, and dots.
27
+ * Maximum length: 64 characters.
28
+ *
29
+ * @throws {Error} If storage name is invalid
30
+ */
31
+ export declare function validateStorageName(storage: unknown): string;
32
+ /**
33
+ * Validates an ISO image filename.
34
+ * Must end with .iso extension.
35
+ * Maximum length: 255 characters.
36
+ *
37
+ * @throws {Error} If ISO filename is invalid
38
+ */
39
+ export declare function validateISOName(iso: unknown): string;
40
+ /**
41
+ * Validates a snapshot name.
42
+ * Only allows alphanumeric characters, hyphens, and underscores.
43
+ * Maximum length: 64 characters.
44
+ *
45
+ * @throws {Error} If snapshot name is invalid
46
+ */
47
+ export declare function validateSnapshotName(snapshot: unknown): string;
48
+ /**
49
+ * Validates a disk identifier (e.g., scsi0, virtio1, sata2).
50
+ * Format: controller + number (e.g., scsi0, virtio1, ide2, sata3).
51
+ *
52
+ * @throws {Error} If disk identifier is invalid
53
+ */
54
+ export declare function validateDiskId(disk: unknown): string;
55
+ /**
56
+ * Validates a network interface identifier (e.g., net0, net1).
57
+ * Format: net + number.
58
+ *
59
+ * @throws {Error} If network identifier is invalid
60
+ */
61
+ export declare function validateNetworkId(net: unknown): string;
62
+ /**
63
+ * Validates a network bridge name (e.g., vmbr0, vmbr1).
64
+ * Format: vmbr + number.
65
+ *
66
+ * @throws {Error} If bridge name is invalid
67
+ */
68
+ export declare function validateBridgeName(bridge: unknown): string;
69
+ /**
70
+ * Generates a secure random password using Node.js crypto.
71
+ * Length: 16 characters.
72
+ * Character set: A-Z, a-z, 0-9, !@#$%^&*
73
+ */
74
+ export declare function generateSecurePassword(): string;
75
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAiBtD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAWlD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAmBxD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAiB5D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAqBpD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAiB9D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAapD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAWtD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAW1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAU/C"}
@@ -0,0 +1,185 @@
1
+ import crypto from 'node:crypto';
2
+ /**
3
+ * Validates a Proxmox node name.
4
+ * Only allows alphanumeric characters, hyphens, and underscores.
5
+ * Maximum length: 64 characters.
6
+ *
7
+ * @throws {Error} If node name is invalid
8
+ */
9
+ export function validateNodeName(node) {
10
+ if (!node || typeof node !== 'string') {
11
+ throw new Error('Node name is required and must be a string');
12
+ }
13
+ // Only allow alphanumeric, hyphens, and underscores
14
+ if (!/^[a-zA-Z0-9\-_]+$/.test(node)) {
15
+ throw new Error('Invalid node name format. Only alphanumeric, hyphens, and underscores allowed');
16
+ }
17
+ if (node.length > 64) {
18
+ throw new Error('Node name too long (max 64 characters)');
19
+ }
20
+ return node;
21
+ }
22
+ /**
23
+ * Validates a Proxmox VM ID.
24
+ * Must be a number between 100 and 999999999.
25
+ *
26
+ * @throws {Error} If VMID is invalid
27
+ */
28
+ export function validateVMID(vmid) {
29
+ if (!vmid) {
30
+ throw new Error('VM ID is required');
31
+ }
32
+ const id = parseInt(String(vmid), 10);
33
+ if (isNaN(id) || id < 100 || id > 999999999) {
34
+ throw new Error('Invalid VM ID. Must be a number between 100 and 999999999');
35
+ }
36
+ return id.toString();
37
+ }
38
+ /**
39
+ * Validates a shell command for execution.
40
+ * Blocks dangerous characters that could be used for command injection.
41
+ * Maximum length: 1000 characters.
42
+ *
43
+ * @throws {Error} If command contains dangerous characters or is too long
44
+ */
45
+ export function validateCommand(command) {
46
+ if (!command || typeof command !== 'string') {
47
+ throw new Error('Command is required and must be a string');
48
+ }
49
+ // Check for dangerous characters that could be used for command injection
50
+ const dangerousChars = /[;&|`$(){}[\]<>\\]/g;
51
+ if (dangerousChars.test(command)) {
52
+ throw new Error('Command contains potentially dangerous characters: ; & | ` $ ( ) { } [ ] < > \\');
53
+ }
54
+ // Limit command length
55
+ if (command.length > 1000) {
56
+ throw new Error('Command exceeds maximum allowed length (1000 characters)');
57
+ }
58
+ return command;
59
+ }
60
+ /**
61
+ * Validates a storage name.
62
+ * Only allows alphanumeric characters, hyphens, underscores, and dots.
63
+ * Maximum length: 64 characters.
64
+ *
65
+ * @throws {Error} If storage name is invalid
66
+ */
67
+ export function validateStorageName(storage) {
68
+ if (!storage || typeof storage !== 'string') {
69
+ throw new Error('Storage name is required and must be a string');
70
+ }
71
+ // Allow alphanumeric, hyphens, underscores, and dots
72
+ if (!/^[a-zA-Z0-9\-_.]+$/.test(storage)) {
73
+ throw new Error('Invalid storage name format. Only alphanumeric, hyphens, underscores, and dots allowed');
74
+ }
75
+ if (storage.length > 64) {
76
+ throw new Error('Storage name too long (max 64 characters)');
77
+ }
78
+ return storage;
79
+ }
80
+ /**
81
+ * Validates an ISO image filename.
82
+ * Must end with .iso extension.
83
+ * Maximum length: 255 characters.
84
+ *
85
+ * @throws {Error} If ISO filename is invalid
86
+ */
87
+ export function validateISOName(iso) {
88
+ if (!iso || typeof iso !== 'string') {
89
+ throw new Error('ISO name is required and must be a string');
90
+ }
91
+ if (!iso.toLowerCase().endsWith('.iso')) {
92
+ throw new Error('ISO name must end with .iso extension');
93
+ }
94
+ // Allow alphanumeric, hyphens, underscores, dots
95
+ if (!/^[a-zA-Z0-9\-_.]+$/.test(iso)) {
96
+ throw new Error('Invalid ISO name format. Only alphanumeric, hyphens, underscores, and dots allowed');
97
+ }
98
+ if (iso.length > 255) {
99
+ throw new Error('ISO name too long (max 255 characters)');
100
+ }
101
+ return iso;
102
+ }
103
+ /**
104
+ * Validates a snapshot name.
105
+ * Only allows alphanumeric characters, hyphens, and underscores.
106
+ * Maximum length: 64 characters.
107
+ *
108
+ * @throws {Error} If snapshot name is invalid
109
+ */
110
+ export function validateSnapshotName(snapshot) {
111
+ if (!snapshot || typeof snapshot !== 'string') {
112
+ throw new Error('Snapshot name is required and must be a string');
113
+ }
114
+ // Only allow alphanumeric, hyphens, and underscores
115
+ if (!/^[a-zA-Z0-9\-_]+$/.test(snapshot)) {
116
+ throw new Error('Invalid snapshot name format. Only alphanumeric, hyphens, and underscores allowed');
117
+ }
118
+ if (snapshot.length > 64) {
119
+ throw new Error('Snapshot name too long (max 64 characters)');
120
+ }
121
+ return snapshot;
122
+ }
123
+ /**
124
+ * Validates a disk identifier (e.g., scsi0, virtio1, sata2).
125
+ * Format: controller + number (e.g., scsi0, virtio1, ide2, sata3).
126
+ *
127
+ * @throws {Error} If disk identifier is invalid
128
+ */
129
+ export function validateDiskId(disk) {
130
+ if (!disk || typeof disk !== 'string') {
131
+ throw new Error('Disk identifier is required and must be a string');
132
+ }
133
+ // Valid formats: scsi0, virtio1, ide2, sata3, etc.
134
+ if (!/^(scsi|virtio|ide|sata)\d+$/.test(disk)) {
135
+ throw new Error('Invalid disk identifier format. Must be controller + number (e.g., scsi0, virtio1)');
136
+ }
137
+ return disk;
138
+ }
139
+ /**
140
+ * Validates a network interface identifier (e.g., net0, net1).
141
+ * Format: net + number.
142
+ *
143
+ * @throws {Error} If network identifier is invalid
144
+ */
145
+ export function validateNetworkId(net) {
146
+ if (!net || typeof net !== 'string') {
147
+ throw new Error('Network identifier is required and must be a string');
148
+ }
149
+ // Valid format: net0, net1, net2, etc.
150
+ if (!/^net\d+$/.test(net)) {
151
+ throw new Error('Invalid network identifier format. Must be net + number (e.g., net0)');
152
+ }
153
+ return net;
154
+ }
155
+ /**
156
+ * Validates a network bridge name (e.g., vmbr0, vmbr1).
157
+ * Format: vmbr + number.
158
+ *
159
+ * @throws {Error} If bridge name is invalid
160
+ */
161
+ export function validateBridgeName(bridge) {
162
+ if (!bridge || typeof bridge !== 'string') {
163
+ throw new Error('Bridge name is required and must be a string');
164
+ }
165
+ // Valid format: vmbr0, vmbr1, etc.
166
+ if (!/^vmbr\d+$/.test(bridge)) {
167
+ throw new Error('Invalid bridge name format. Must be vmbr + number (e.g., vmbr0)');
168
+ }
169
+ return bridge;
170
+ }
171
+ /**
172
+ * Generates a secure random password using Node.js crypto.
173
+ * Length: 16 characters.
174
+ * Character set: A-Z, a-z, 0-9, !@#$%^&*
175
+ */
176
+ export function generateSecurePassword() {
177
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*';
178
+ let password = '';
179
+ const randomBytes = crypto.randomBytes(16);
180
+ for (let i = 0; i < 16; i++) {
181
+ password += chars[randomBytes[i] % chars.length];
182
+ }
183
+ return password;
184
+ }
185
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validators/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@bldg-7/proxmox-mcp",
3
+ "version": "0.1.0",
4
+ "description": "Proxmox MCP Server - TypeScript rewrite",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "proxmox-mcp": "dist/index.js"
10
+ },
11
+ "engines": {
12
+ "node": ">=18"
13
+ },
14
+ "files": [
15
+ "dist/",
16
+ "README.md",
17
+ "LICENSE"
18
+ ],
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "scripts": {
23
+ "build": "tsc",
24
+ "dev": "tsc --watch",
25
+ "start": "node dist/index.js",
26
+ "test": "vitest run",
27
+ "test:watch": "vitest",
28
+ "test:coverage": "vitest run --coverage",
29
+ "lint": "eslint src --ext .ts",
30
+ "typecheck": "tsc --noEmit",
31
+ "clean": "rm -rf dist",
32
+ "release": "pnpm build && changeset publish"
33
+ },
34
+ "dependencies": {
35
+ "@modelcontextprotocol/sdk": "^1.25.3",
36
+ "dotenv": "^16.4.5",
37
+ "pino": "^9.6.0",
38
+ "zod": "^3.23.8"
39
+ },
40
+ "devDependencies": {
41
+ "@changesets/cli": "^2.29.8",
42
+ "@types/node": "^25.2.0",
43
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
44
+ "@typescript-eslint/parser": "^7.18.0",
45
+ "@vitest/coverage-v8": "^2.1.9",
46
+ "eslint": "^9.18.0",
47
+ "pino-pretty": "^11.2.2",
48
+ "typescript": "^5.6.3",
49
+ "vitest": "^2.1.8"
50
+ }
51
+ }