@bldg-7/proxmox-mcp 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,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
+ {"version":3,"file":"proxmox.d.ts","sourceRoot":"","sources":["../../src/client/proxmox.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA8ClD,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;CA4E/E"}
@@ -2,6 +2,40 @@ import fs from 'node:fs';
2
2
  import { Agent } from 'undici';
3
3
  import { logger } from '../utils/index.js';
4
4
  const DEFAULT_TIMEOUT_MS = 30_000;
5
+ const encodeFormValue = (value) => {
6
+ if (typeof value === 'boolean') {
7
+ return value ? '1' : '0';
8
+ }
9
+ if (value instanceof Date) {
10
+ return value.toISOString();
11
+ }
12
+ if (typeof value === 'object' && value !== null) {
13
+ return JSON.stringify(value);
14
+ }
15
+ return String(value);
16
+ };
17
+ const toFormParams = (body) => {
18
+ if (body instanceof URLSearchParams) {
19
+ return body;
20
+ }
21
+ const params = new URLSearchParams();
22
+ if (!body || typeof body !== 'object') {
23
+ return params;
24
+ }
25
+ for (const [key, rawValue] of Object.entries(body)) {
26
+ if (rawValue === undefined || rawValue === null) {
27
+ continue;
28
+ }
29
+ if (Array.isArray(rawValue)) {
30
+ for (const item of rawValue) {
31
+ params.append(key, encodeFormValue(item));
32
+ }
33
+ continue;
34
+ }
35
+ params.append(key, encodeFormValue(rawValue));
36
+ }
37
+ return params;
38
+ };
5
39
  export class ProxmoxApiError extends Error {
6
40
  statusCode;
7
41
  endpoint;
@@ -37,19 +71,36 @@ export class ProxmoxApiClient {
37
71
  this.dispatcher = new Agent({ connect: connectOptions });
38
72
  }
39
73
  async request(endpoint, method = 'GET', body) {
40
- const url = `${this.baseUrl}${endpoint}`;
74
+ const normalizedMethod = method.toUpperCase();
75
+ let url = `${this.baseUrl}${endpoint}`;
41
76
  const headers = {
42
77
  'Authorization': this.authHeader,
43
- 'Content-Type': 'application/json',
44
78
  };
45
79
  const options = {
46
- method,
80
+ method: normalizedMethod,
47
81
  headers,
48
82
  signal: AbortSignal.timeout(DEFAULT_TIMEOUT_MS),
49
83
  dispatcher: this.dispatcher,
50
84
  };
51
85
  if (body !== undefined) {
52
- options.body = JSON.stringify(body);
86
+ const params = toFormParams(body);
87
+ if (normalizedMethod === 'DELETE') {
88
+ const query = params.toString();
89
+ if (query) {
90
+ url += url.includes('?') ? `&${query}` : `?${query}`;
91
+ }
92
+ }
93
+ else if (normalizedMethod === 'POST' || normalizedMethod === 'PUT') {
94
+ headers['Content-Type'] = 'application/x-www-form-urlencoded';
95
+ options.body = params.toString();
96
+ }
97
+ else {
98
+ headers['Content-Type'] = 'application/json';
99
+ options.body = JSON.stringify(body);
100
+ }
101
+ }
102
+ else if (normalizedMethod === 'POST' || normalizedMethod === 'PUT') {
103
+ headers['Content-Type'] = 'application/x-www-form-urlencoded';
53
104
  }
54
105
  logger.debug({ method, endpoint }, 'Proxmox API request');
55
106
  try {
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bldg-7/proxmox-mcp",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Proxmox MCP Server - TypeScript rewrite",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",