@bldg-7/proxmox-mcp 0.1.3 → 0.1.5

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.
@@ -7,7 +7,7 @@ export declare class ProxmoxApiError extends Error {
7
7
  export declare class ProxmoxApiClient {
8
8
  private readonly baseUrl;
9
9
  private readonly authHeader;
10
- private readonly agent;
10
+ private readonly dispatcher;
11
11
  constructor(config: Config);
12
12
  request<T>(endpoint: string, method?: string, body?: unknown): Promise<T>;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"proxmox.d.ts","sourceRoot":"","sources":["../../src/client/proxmox.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAKlD,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;gBAFhC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;CAKnC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;gBAExB,MAAM,EAAE,MAAM;IAmBpB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAiE/E"}
1
+ {"version":3,"file":"proxmox.d.ts","sourceRoot":"","sources":["../../src/client/proxmox.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAKlD,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;gBAFhC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;CAKnC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;gBAE5B,MAAM,EAAE,MAAM;IAwBpB,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CA8D/E"}
@@ -1,5 +1,5 @@
1
- import https from 'node:https';
2
1
  import fs from 'node:fs';
2
+ import { Agent } from 'undici';
3
3
  import { logger } from '../utils/index.js';
4
4
  const DEFAULT_TIMEOUT_MS = 30_000;
5
5
  export class ProxmoxApiError extends Error {
@@ -15,25 +15,26 @@ export class ProxmoxApiError extends Error {
15
15
  export class ProxmoxApiClient {
16
16
  baseUrl;
17
17
  authHeader;
18
- agent;
18
+ dispatcher;
19
19
  constructor(config) {
20
20
  this.baseUrl = `https://${config.host}:${config.port}/api2/json`;
21
21
  this.authHeader = `PVEAPIToken=${config.user}!${config.tokenName}=${config.tokenValue}`;
22
- if (config.sslVerify && config.sslCaCert) {
23
- this.agent = new https.Agent({
24
- ca: fs.readFileSync(config.sslCaCert),
25
- });
26
- }
27
- else if (config.sslVerify) {
28
- this.agent = new https.Agent({
29
- rejectUnauthorized: true,
30
- });
31
- }
32
- else {
33
- this.agent = new https.Agent({
34
- rejectUnauthorized: false,
35
- });
22
+ const connectOptions = {};
23
+ switch (config.sslMode) {
24
+ case 'strict':
25
+ connectOptions.rejectUnauthorized = true;
26
+ break;
27
+ case 'verify':
28
+ connectOptions.rejectUnauthorized = true;
29
+ if (config.sslCaCert) {
30
+ connectOptions.ca = fs.readFileSync(config.sslCaCert);
31
+ }
32
+ break;
33
+ case 'insecure':
34
+ connectOptions.rejectUnauthorized = false;
35
+ break;
36
36
  }
37
+ this.dispatcher = new Agent({ connect: connectOptions });
37
38
  }
38
39
  async request(endpoint, method = 'GET', body) {
39
40
  const url = `${this.baseUrl}${endpoint}`;
@@ -45,10 +46,8 @@ export class ProxmoxApiClient {
45
46
  method,
46
47
  headers,
47
48
  signal: AbortSignal.timeout(DEFAULT_TIMEOUT_MS),
49
+ dispatcher: this.dispatcher,
48
50
  };
49
- // Pass the HTTPS agent via the Node.js-specific dispatcher
50
- // Node's native fetch accepts an agent-like option
51
- options['agent'] = this.agent;
52
51
  if (body !== undefined) {
53
52
  options.body = JSON.stringify(body);
54
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"proxmox.js","sourceRoot":"","sources":["../../src/client/proxmox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxmox.js","sourceRoot":"","sources":["../../src/client/proxmox.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { type Config } from './schema.js';
2
- export { type Config } from './schema.js';
2
+ export { type Config, type SslMode } from './schema.js';
3
3
  export declare function loadConfig(): Config;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,wBAAgB,UAAU,IAAI,MAAM,CAwBnC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,MAAM,EAAgB,MAAM,aAAa,CAAC;AAErF,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAaxD,wBAAgB,UAAU,IAAI,MAAM,CAwBnC"}
@@ -1,5 +1,14 @@
1
1
  import dotenv from 'dotenv';
2
- import { configSchema } from './schema.js';
2
+ import { configSchema, sslModeSchema } from './schema.js';
3
+ function parseSslMode(value) {
4
+ if (!value)
5
+ return 'strict';
6
+ const result = sslModeSchema.safeParse(value.toLowerCase());
7
+ if (result.success) {
8
+ return result.data;
9
+ }
10
+ return 'strict';
11
+ }
3
12
  export function loadConfig() {
4
13
  dotenv.config();
5
14
  const rawConfig = {
@@ -9,7 +18,7 @@ export function loadConfig() {
9
18
  tokenName: process.env.PROXMOX_TOKEN_NAME,
10
19
  tokenValue: process.env.PROXMOX_TOKEN_VALUE,
11
20
  allowElevated: process.env.PROXMOX_ALLOW_ELEVATED === 'true',
12
- sslVerify: process.env.PROXMOX_SSL_VERIFY === 'true',
21
+ sslMode: parseSslMode(process.env.PROXMOX_SSL_MODE),
13
22
  sslCaCert: process.env.PROXMOX_SSL_CA_CERT || undefined,
14
23
  };
15
24
  const result = configSchema.safeParse(rawConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAe,MAAM,aAAa,CAAC;AAIxD,MAAM,UAAU,UAAU;IACxB,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QACnF,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,SAAS;QAC3C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QACzC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC3C,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,MAAM;QAC5D,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM;QACpD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,SAAS;KACxD,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AAIrF,SAAS,YAAY,CAAC,KAAyB;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAE5B,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QACnF,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,SAAS;QAC3C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QACzC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC3C,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,MAAM;QAC5D,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACnD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,SAAS;KACxD,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { z } from 'zod';
2
+ export declare const sslModeSchema: z.ZodEnum<["strict", "verify", "insecure"]>;
3
+ export type SslMode = z.infer<typeof sslModeSchema>;
2
4
  export declare const configSchema: z.ZodObject<{
3
5
  host: z.ZodString;
4
6
  port: z.ZodDefault<z.ZodNumber>;
@@ -6,7 +8,7 @@ export declare const configSchema: z.ZodObject<{
6
8
  tokenName: z.ZodString;
7
9
  tokenValue: z.ZodString;
8
10
  allowElevated: z.ZodDefault<z.ZodBoolean>;
9
- sslVerify: z.ZodDefault<z.ZodBoolean>;
11
+ sslMode: z.ZodDefault<z.ZodEnum<["strict", "verify", "insecure"]>>;
10
12
  sslCaCert: z.ZodOptional<z.ZodString>;
11
13
  }, "strip", z.ZodTypeAny, {
12
14
  host: string;
@@ -15,7 +17,7 @@ export declare const configSchema: z.ZodObject<{
15
17
  tokenName: string;
16
18
  tokenValue: string;
17
19
  allowElevated: boolean;
18
- sslVerify: boolean;
20
+ sslMode: "strict" | "verify" | "insecure";
19
21
  sslCaCert?: string | undefined;
20
22
  }, {
21
23
  host: string;
@@ -24,7 +26,7 @@ export declare const configSchema: z.ZodObject<{
24
26
  port?: number | undefined;
25
27
  user?: string | undefined;
26
28
  allowElevated?: boolean | undefined;
27
- sslVerify?: boolean | undefined;
29
+ sslMode?: "strict" | "verify" | "insecure" | undefined;
28
30
  sslCaCert?: string | undefined;
29
31
  }>;
30
32
  export type Config = z.infer<typeof configSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,aAAa,6CAA2C,CAAC;AACtE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ export const sslModeSchema = z.enum(['strict', 'verify', 'insecure']);
2
3
  export const configSchema = z.object({
3
4
  host: z
4
5
  .string({ required_error: 'PROXMOX_HOST is required' })
@@ -22,9 +23,7 @@ export const configSchema = z.object({
22
23
  allowElevated: z
23
24
  .boolean()
24
25
  .default(false),
25
- sslVerify: z
26
- .boolean()
27
- .default(false),
26
+ sslMode: sslModeSchema.default('strict'),
28
27
  sslCaCert: z
29
28
  .string()
30
29
  .optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC;SACtD,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC;IACzC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,KAAK,CAAC;SACV,OAAO,CAAC,IAAI,CAAC;IAChB,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,UAAU,CAAC;IACtB,SAAS,EAAE,CAAC;SACT,MAAM,CAAC,EAAE,cAAc,EAAE,gCAAgC,EAAE,CAAC;SAC5D,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;IAC/C,UAAU,EAAE,CAAC;SACV,MAAM,CAAC,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC;SAC7D,GAAG,CAAC,CAAC,EAAE,qCAAqC,CAAC;IAChD,aAAa,EAAE,CAAC;SACb,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;IACjB,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;IACjB,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;CACd,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAGtE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC;SACtD,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC;IACzC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,KAAK,CAAC;SACV,OAAO,CAAC,IAAI,CAAC;IAChB,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,UAAU,CAAC;IACtB,SAAS,EAAE,CAAC;SACT,MAAM,CAAC,EAAE,cAAc,EAAE,gCAAgC,EAAE,CAAC;SAC5D,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;IAC/C,UAAU,EAAE,CAAC;SACV,MAAM,CAAC,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC;SAC7D,GAAG,CAAC,CAAC,EAAE,qCAAqC,CAAC;IAChD,aAAa,EAAE,CAAC;SACb,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;IACxC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;CACd,CAAC,CAAC"}
@@ -1 +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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,eAAO,MAAM,MAAM,6BAMI,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import pino from 'pino';
2
+ // MCP uses stdout for JSON-RPC communication, so logs must go to stderr
2
3
  export const logger = pino({
3
4
  level: process.env.PROXMOX_LOG_LEVEL || 'info',
4
5
  transport: process.env.NODE_ENV === 'development' ? {
5
6
  target: 'pino-pretty',
7
+ options: { destination: 2 },
6
8
  } : undefined,
7
- });
9
+ }, pino.destination(2));
8
10
  //# sourceMappingURL=index.js.map
@@ -1 +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,aAAa,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,aAAa;KACtB,CAAC,CAAC,CAAC,SAAS;CACd,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,wEAAwE;AACxE,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,aAAa,CAAC,CAAC,CAAC;QAClD,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;KAC5B,CAAC,CAAC,CAAC,SAAS;CACd,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bldg-7/proxmox-mcp",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Proxmox MCP Server - TypeScript rewrite",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,6 +27,7 @@
27
27
  "@modelcontextprotocol/sdk": "^1.25.3",
28
28
  "dotenv": "^16.4.5",
29
29
  "pino": "^9.6.0",
30
+ "undici": "^7.20.0",
30
31
  "zod": "^3.23.8"
31
32
  },
32
33
  "devDependencies": {