liara-mcp 0.1.4 → 0.1.6

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 (40) hide show
  1. package/README.md +65 -6
  2. package/dist/api/client.d.ts +17 -5
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +70 -30
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/index.js +1 -134
  7. package/dist/index.js.map +1 -1
  8. package/dist/services/apps.d.ts.map +1 -1
  9. package/dist/services/apps.js +3 -2
  10. package/dist/services/apps.js.map +1 -1
  11. package/dist/services/databases.d.ts +8 -3
  12. package/dist/services/databases.d.ts.map +1 -1
  13. package/dist/services/databases.js +60 -4
  14. package/dist/services/databases.js.map +1 -1
  15. package/dist/services/deployment.d.ts.map +1 -1
  16. package/dist/services/deployment.js +5 -3
  17. package/dist/services/deployment.js.map +1 -1
  18. package/dist/services/dns.d.ts.map +1 -1
  19. package/dist/services/dns.js +5 -3
  20. package/dist/services/dns.js.map +1 -1
  21. package/dist/services/domains.d.ts.map +1 -1
  22. package/dist/services/domains.js +3 -2
  23. package/dist/services/domains.js.map +1 -1
  24. package/dist/services/environment.d.ts.map +1 -1
  25. package/dist/services/environment.js +7 -1
  26. package/dist/services/environment.js.map +1 -1
  27. package/dist/services/mail.d.ts.map +1 -1
  28. package/dist/services/mail.js +3 -2
  29. package/dist/services/mail.js.map +1 -1
  30. package/dist/services/plans.d.ts.map +1 -1
  31. package/dist/services/plans.js +3 -1
  32. package/dist/services/plans.js.map +1 -1
  33. package/dist/services/storage.d.ts.map +1 -1
  34. package/dist/services/storage.js +3 -2
  35. package/dist/services/storage.js.map +1 -1
  36. package/dist/utils/errors.d.ts +9 -0
  37. package/dist/utils/errors.d.ts.map +1 -1
  38. package/dist/utils/errors.js +33 -0
  39. package/dist/utils/errors.js.map +1 -1
  40. package/package.json +1 -1
package/README.md CHANGED
@@ -99,6 +99,65 @@ Add the following to your MCP configuration file:
99
99
  }
100
100
  ```
101
101
 
102
+ **Alternative Configuration (For nvm/fnm users):**
103
+
104
+ If you're using **nvm** or **fnm** to manage Node.js versions, use this configuration instead to avoid PATH issues:
105
+
106
+ ```json
107
+ {
108
+ "mcpServers": {
109
+ "liara": {
110
+ "command": "/bin/zsh",
111
+ "args": [
112
+ "-c",
113
+ "source ~/.nvm/nvm.sh && npx -y liara-mcp"
114
+ ],
115
+ "env": {
116
+ "LIARA_API_TOKEN": "your_api_token_here"
117
+ }
118
+ }
119
+ }
120
+ }
121
+ ```
122
+
123
+ **For bash users**, replace `/bin/zsh` with `/bin/bash` and `~/.nvm/nvm.sh` with your nvm init script path.
124
+
125
+ **For fnm users**:
126
+ ```json
127
+ {
128
+ "mcpServers": {
129
+ "liara": {
130
+ "command": "/bin/zsh",
131
+ "args": [
132
+ "-c",
133
+ "eval \"$(fnm env --use-on-cd --shell zsh)\" && npx -y liara-mcp"
134
+ ],
135
+ "env": {
136
+ "LIARA_API_TOKEN": "your_api_token_here"
137
+ }
138
+ }
139
+ }
140
+ }
141
+ ```
142
+
143
+ ### Why Use the Alternative Configuration?
144
+
145
+ Many IDE and editor applications (like Claude Desktop, Cursor, Windsurf, etc.) start MCP servers in a **restricted environment** without your shell's PATH configuration. This causes the error:
146
+
147
+ ```
148
+ Error: failed to create mcp stdio client: exec: "npx": executable file not found in $PATH
149
+ ```
150
+
151
+ **The problem:** When you use nvm/fnm, Node.js and npx are installed in version-specific directories that are added to PATH by your shell initialization scripts (`~/.zshrc`, `~/.bashrc`, etc.). However, MCP clients don't load these files, so they can't find npx.
152
+
153
+ **The solution:** Using a shell wrapper (`/bin/zsh -c` or `/bin/bash -c`) explicitly sources the nvm/fnm initialization script before running npx. This ensures the Node.js environment is properly configured.
154
+
155
+ **When to use each:**
156
+ - **Basic config**: If you installed Node.js via system package manager (`brew`, `apt`, etc.) or official installer
157
+ - **Alternative config**: If you use nvm, nodenv, fnm, or similar version managers
158
+
159
+
160
+
102
161
  ### Troubleshooting: PATH Issues (nvm/nodenv users)
103
162
 
104
163
  If you see `spawn npx ENOENT` error, run the setup wizard:
@@ -135,7 +194,7 @@ This will generate the correct configuration with absolute paths for your system
135
194
  - `liara_get_release` - Get release details
136
195
  - `liara_rollback_release` - Rollback to a previous release
137
196
  - `liara_list_sources` - List uploaded sources
138
- - `liara_delete_source` - Delete an uploaded source
197
+
139
198
 
140
199
  #### Database Management
141
200
  - `liara_list_databases` - List all databases
@@ -163,7 +222,7 @@ This will generate the correct configuration with absolute paths for your system
163
222
  - `liara_upload_object` - Upload an object to a bucket
164
223
  - `liara_get_object_download_url` - Get download URL for an object
165
224
  - `liara_delete_object` - Delete an object from a bucket
166
- - `liara_get_object_metadata` - Get metadata for an object
225
+
167
226
 
168
227
  #### App Settings
169
228
  - `liara_set_zero_downtime` - Enable/disable zero-downtime deployment
@@ -186,7 +245,7 @@ This will generate the correct configuration with absolute paths for your system
186
245
  - `liara_get_zone` - Get zone details
187
246
  - `liara_create_zone` - Create a DNS zone
188
247
  - `liara_delete_zone` - Delete a DNS zone
189
- - `liara_check_zone` - Check zone status
248
+
190
249
  - `liara_list_dns_records` - List DNS records
191
250
  - `liara_create_dns_record` - Create a DNS record
192
251
  - `liara_get_dns_record` - Get DNS record details
@@ -198,7 +257,7 @@ This will generate the correct configuration with absolute paths for your system
198
257
  - `liara_get_domain` - Get domain details
199
258
  - `liara_add_domain` - Add a domain to an app
200
259
  - `liara_remove_domain` - Remove a domain from an app
201
- - `liara_check_domain` - Check domain status
260
+
202
261
 
203
262
  #### Mail Server
204
263
  - `liara_list_mail_servers` - List all mail servers
@@ -218,7 +277,7 @@ This will generate the correct configuration with absolute paths for your system
218
277
  - `liara_stop_vm` - Stop a VM
219
278
  - `liara_restart_vm` - Restart a VM
220
279
  - `liara_shutdown_vm` - Shutdown a VM
221
- - `liara_poweroff_vm` - Power off a VM
280
+
222
281
  - `liara_delete_vm` - Delete a VM
223
282
  - `liara_resize_vm` - Resize a VM
224
283
  - `liara_create_snapshot` - Create a VM snapshot
@@ -340,7 +399,7 @@ MIT
340
399
 
341
400
  This MCP server implements comprehensive coverage of the [Liara API](https://openapi.liara.ir), including:
342
401
 
343
- ### Implemented Services (15 modules, 70+ tools)
402
+ ### Implemented Services (15 modules, 99 tools)
344
403
 
345
404
  - **Apps** - Full lifecycle management (create, deploy, start, stop, restart, resize)
346
405
  - **Databases** - Complete database management with backup/restore (8 database types)
@@ -5,6 +5,8 @@ export interface LiaraClientConfig {
5
5
  apiToken: string;
6
6
  teamId?: string;
7
7
  baseURL?: string;
8
+ maxRetries?: number;
9
+ retryDelay?: number;
8
10
  }
9
11
  /**
10
12
  * Liara API client for making authenticated requests
@@ -12,7 +14,17 @@ export interface LiaraClientConfig {
12
14
  export declare class LiaraClient {
13
15
  private client;
14
16
  private teamId?;
17
+ private maxRetries;
18
+ private retryDelay;
15
19
  constructor(config: LiaraClientConfig);
20
+ /**
21
+ * Sleep for a given number of milliseconds
22
+ */
23
+ private sleep;
24
+ /**
25
+ * Execute request with retry logic for rate limiting
26
+ */
27
+ private executeWithRetry;
16
28
  /**
17
29
  * Handle API errors and convert to user-friendly messages
18
30
  */
@@ -22,23 +34,23 @@ export declare class LiaraClient {
22
34
  */
23
35
  private addTeamId;
24
36
  /**
25
- * GET request
37
+ * GET request with automatic retry for rate limiting
26
38
  */
27
39
  get<T>(url: string, params?: any): Promise<T>;
28
40
  /**
29
- * POST request
41
+ * POST request with automatic retry for rate limiting
30
42
  */
31
43
  post<T>(url: string, data?: any, params?: any): Promise<T>;
32
44
  /**
33
- * PUT request
45
+ * PUT request with automatic retry for rate limiting
34
46
  */
35
47
  put<T>(url: string, data?: any, params?: any): Promise<T>;
36
48
  /**
37
- * DELETE request
49
+ * DELETE request with automatic retry for rate limiting
38
50
  */
39
51
  delete<T>(url: string, params?: any): Promise<T>;
40
52
  /**
41
- * POST multipart/form-data request
53
+ * POST multipart/form-data request with automatic retry for rate limiting
42
54
  */
43
55
  postFormData<T>(url: string, formData: any, params?: any): Promise<T>;
44
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,EAAE,iBAAiB;IAuBrC;;OAEG;IACH,OAAO,CAAC,WAAW;IAyCnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAOnD;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAOhE;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAO/D;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAOtD;;OAEG;IACG,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;CAiB9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAY/C"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,iBAAiB;IAyBrC;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;YACW,gBAAgB;IAsB9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAyCnB;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IASnD;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAShE;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAS/D;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAStD;;OAEG;IACG,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;CAmB9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAY/C"}
@@ -5,6 +5,8 @@ import axios from 'axios';
5
5
  export class LiaraClient {
6
6
  client;
7
7
  teamId;
8
+ maxRetries;
9
+ retryDelay;
8
10
  constructor(config) {
9
11
  const baseURL = config.baseURL || process.env.LIARA_API_BASE_URL || 'https://api.iran.liara.ir';
10
12
  this.client = axios.create({
@@ -16,11 +18,39 @@ export class LiaraClient {
16
18
  timeout: 30000, // 30 seconds
17
19
  });
18
20
  this.teamId = config.teamId;
21
+ this.maxRetries = config.maxRetries ?? 3;
22
+ this.retryDelay = config.retryDelay ?? 1000;
19
23
  // Add response interceptor for error handling
20
24
  this.client.interceptors.response.use((response) => response, (error) => {
21
25
  return Promise.reject(this.handleError(error));
22
26
  });
23
27
  }
28
+ /**
29
+ * Sleep for a given number of milliseconds
30
+ */
31
+ sleep(ms) {
32
+ return new Promise(resolve => setTimeout(resolve, ms));
33
+ }
34
+ /**
35
+ * Execute request with retry logic for rate limiting
36
+ */
37
+ async executeWithRetry(requestFn, retryCount = 0) {
38
+ try {
39
+ return await requestFn();
40
+ }
41
+ catch (error) {
42
+ // Retry on rate limiting (429) or server errors (5xx)
43
+ const statusCode = error.statusCode || error.response?.status;
44
+ const isRetryable = statusCode === 429 || (statusCode >= 500 && statusCode < 600);
45
+ if (isRetryable && retryCount < this.maxRetries) {
46
+ // Exponential backoff: 1s, 2s, 4s...
47
+ const delay = this.retryDelay * Math.pow(2, retryCount);
48
+ await this.sleep(delay);
49
+ return this.executeWithRetry(requestFn, retryCount + 1);
50
+ }
51
+ throw error;
52
+ }
53
+ }
24
54
  /**
25
55
  * Handle API errors and convert to user-friendly messages
26
56
  */
@@ -73,59 +103,69 @@ export class LiaraClient {
73
103
  return params;
74
104
  }
75
105
  /**
76
- * GET request
106
+ * GET request with automatic retry for rate limiting
77
107
  */
78
108
  async get(url, params) {
79
- const response = await this.client.get(url, {
80
- params: this.addTeamId(params)
109
+ return this.executeWithRetry(async () => {
110
+ const response = await this.client.get(url, {
111
+ params: this.addTeamId(params)
112
+ });
113
+ return response.data;
81
114
  });
82
- return response.data;
83
115
  }
84
116
  /**
85
- * POST request
117
+ * POST request with automatic retry for rate limiting
86
118
  */
87
119
  async post(url, data, params) {
88
- const response = await this.client.post(url, data, {
89
- params: this.addTeamId(params)
120
+ return this.executeWithRetry(async () => {
121
+ const response = await this.client.post(url, data, {
122
+ params: this.addTeamId(params)
123
+ });
124
+ return response.data;
90
125
  });
91
- return response.data;
92
126
  }
93
127
  /**
94
- * PUT request
128
+ * PUT request with automatic retry for rate limiting
95
129
  */
96
130
  async put(url, data, params) {
97
- const response = await this.client.put(url, data, {
98
- params: this.addTeamId(params)
131
+ return this.executeWithRetry(async () => {
132
+ const response = await this.client.put(url, data, {
133
+ params: this.addTeamId(params)
134
+ });
135
+ return response.data;
99
136
  });
100
- return response.data;
101
137
  }
102
138
  /**
103
- * DELETE request
139
+ * DELETE request with automatic retry for rate limiting
104
140
  */
105
141
  async delete(url, params) {
106
- const response = await this.client.delete(url, {
107
- params: this.addTeamId(params)
142
+ return this.executeWithRetry(async () => {
143
+ const response = await this.client.delete(url, {
144
+ params: this.addTeamId(params)
145
+ });
146
+ return response.data;
108
147
  });
109
- return response.data;
110
148
  }
111
149
  /**
112
- * POST multipart/form-data request
150
+ * POST multipart/form-data request with automatic retry for rate limiting
113
151
  */
114
152
  async postFormData(url, formData, params) {
115
- // form-data sets its own Content-Type with boundary, so we use its headers
116
- const headers = formData.getHeaders ? formData.getHeaders() : {
117
- 'Content-Type': 'multipart/form-data',
118
- };
119
- const response = await this.client.post(url, formData, {
120
- params: this.addTeamId(params),
121
- headers: {
122
- ...headers,
123
- 'Authorization': this.client.defaults.headers['Authorization'],
124
- },
125
- maxContentLength: Infinity,
126
- maxBodyLength: Infinity,
153
+ return this.executeWithRetry(async () => {
154
+ // form-data sets its own Content-Type with boundary, so we use its headers
155
+ const headers = formData.getHeaders ? formData.getHeaders() : {
156
+ 'Content-Type': 'multipart/form-data',
157
+ };
158
+ const response = await this.client.post(url, formData, {
159
+ params: this.addTeamId(params),
160
+ headers: {
161
+ ...headers,
162
+ 'Authorization': this.client.defaults.headers['Authorization'],
163
+ },
164
+ maxContentLength: Infinity,
165
+ maxBodyLength: Infinity,
166
+ });
167
+ return response.data;
127
168
  });
128
- return response.data;
129
169
  }
130
170
  }
131
171
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -31,7 +31,7 @@ class LiaraMcpServer {
31
31
  constructor() {
32
32
  this.server = new Server({
33
33
  name: 'liara-mcp',
34
- version: '0.1.3',
34
+ version: '0.1.4',
35
35
  }, {
36
36
  capabilities: {
37
37
  tools: {},
@@ -516,24 +516,6 @@ class LiaraMcpServer {
516
516
  required: ['appName'],
517
517
  },
518
518
  },
519
- {
520
- name: 'liara_delete_source',
521
- description: 'Delete an uploaded source',
522
- inputSchema: {
523
- type: 'object',
524
- properties: {
525
- appName: {
526
- type: 'string',
527
- description: 'The name of the app',
528
- },
529
- sourceID: {
530
- type: 'string',
531
- description: 'The source ID to delete',
532
- },
533
- },
534
- required: ['appName', 'sourceID'],
535
- },
536
- },
537
519
  // Database Tools
538
520
  {
539
521
  name: 'liara_list_databases',
@@ -913,24 +895,6 @@ class LiaraMcpServer {
913
895
  required: ['bucketName', 'objectKey'],
914
896
  },
915
897
  },
916
- {
917
- name: 'liara_get_object_metadata',
918
- description: 'Get metadata for an object',
919
- inputSchema: {
920
- type: 'object',
921
- properties: {
922
- bucketName: {
923
- type: 'string',
924
- description: 'The name of the bucket',
925
- },
926
- objectKey: {
927
- type: 'string',
928
- description: 'The object key',
929
- },
930
- },
931
- required: ['bucketName', 'objectKey'],
932
- },
933
- },
934
898
  // Plan Tools
935
899
  {
936
900
  name: 'liara_list_plans',
@@ -1012,20 +976,6 @@ class LiaraMcpServer {
1012
976
  required: ['zoneId'],
1013
977
  },
1014
978
  },
1015
- {
1016
- name: 'liara_check_zone',
1017
- description: 'Check DNS zone status',
1018
- inputSchema: {
1019
- type: 'object',
1020
- properties: {
1021
- zoneId: {
1022
- type: 'string',
1023
- description: 'The zone ID',
1024
- },
1025
- },
1026
- required: ['zoneId'],
1027
- },
1028
- },
1029
979
  {
1030
980
  name: 'liara_list_dns_records',
1031
981
  description: 'List DNS records for a zone',
@@ -1206,20 +1156,6 @@ class LiaraMcpServer {
1206
1156
  required: ['domainId'],
1207
1157
  },
1208
1158
  },
1209
- {
1210
- name: 'liara_check_domain',
1211
- description: 'Check domain status and DNS configuration',
1212
- inputSchema: {
1213
- type: 'object',
1214
- properties: {
1215
- domainId: {
1216
- type: 'string',
1217
- description: 'The domain ID',
1218
- },
1219
- },
1220
- required: ['domainId'],
1221
- },
1222
- },
1223
1159
  // Mail Tools
1224
1160
  {
1225
1161
  name: 'liara_list_mail_servers',
@@ -1457,20 +1393,6 @@ class LiaraMcpServer {
1457
1393
  required: ['vmId'],
1458
1394
  },
1459
1395
  },
1460
- {
1461
- name: 'liara_poweroff_vm',
1462
- description: 'Power off a virtual machine immediately',
1463
- inputSchema: {
1464
- type: 'object',
1465
- properties: {
1466
- vmId: {
1467
- type: 'string',
1468
- description: 'The VM ID',
1469
- },
1470
- },
1471
- required: ['vmId'],
1472
- },
1473
- },
1474
1396
  {
1475
1397
  name: 'liara_delete_vm',
1476
1398
  description: 'Delete a virtual machine',
@@ -2145,17 +2067,6 @@ class LiaraMcpServer {
2145
2067
  ],
2146
2068
  };
2147
2069
  }
2148
- case 'liara_delete_source': {
2149
- await deployService.deleteSource(this.client, args.appName, args.sourceID);
2150
- return {
2151
- content: [
2152
- {
2153
- type: 'text',
2154
- text: `Source "${args.sourceID}" deleted successfully.`,
2155
- },
2156
- ],
2157
- };
2158
- }
2159
2070
  // Databases
2160
2071
  case 'liara_list_databases': {
2161
2072
  const databases = await dbService.listDatabases(this.client);
@@ -2411,17 +2322,6 @@ class LiaraMcpServer {
2411
2322
  ],
2412
2323
  };
2413
2324
  }
2414
- case 'liara_get_object_metadata': {
2415
- const metadata = await storageService.getObjectMetadata(this.client, args.bucketName, args.objectKey);
2416
- return {
2417
- content: [
2418
- {
2419
- type: 'text',
2420
- text: JSON.stringify(metadata, null, 2),
2421
- },
2422
- ],
2423
- };
2424
- }
2425
2325
  // Plans
2426
2326
  case 'liara_list_plans': {
2427
2327
  const plans = await planService.listPlans(this.client, args?.planType, this.extractPagination(args));
@@ -2490,17 +2390,6 @@ class LiaraMcpServer {
2490
2390
  ],
2491
2391
  };
2492
2392
  }
2493
- case 'liara_check_zone': {
2494
- const check = await dnsService.checkZone(this.client, args.zoneId);
2495
- return {
2496
- content: [
2497
- {
2498
- type: 'text',
2499
- text: JSON.stringify(check, null, 2),
2500
- },
2501
- ],
2502
- };
2503
- }
2504
2393
  case 'liara_list_dns_records': {
2505
2394
  const records = await dnsService.listRecords(this.client, args.zoneId, this.extractPagination(args));
2506
2395
  return {
@@ -2613,17 +2502,6 @@ class LiaraMcpServer {
2613
2502
  ],
2614
2503
  };
2615
2504
  }
2616
- case 'liara_check_domain': {
2617
- const check = await domainService.checkDomain(this.client, args.domainId);
2618
- return {
2619
- content: [
2620
- {
2621
- type: 'text',
2622
- text: JSON.stringify(check, null, 2),
2623
- },
2624
- ],
2625
- };
2626
- }
2627
2505
  // Mail
2628
2506
  case 'liara_list_mail_servers': {
2629
2507
  const servers = await mailService.listMailServers(this.client, this.extractPagination(args));
@@ -2798,17 +2676,6 @@ class LiaraMcpServer {
2798
2676
  ],
2799
2677
  };
2800
2678
  }
2801
- case 'liara_poweroff_vm': {
2802
- await iaasService.powerOffVM(this.client, args.vmId);
2803
- return {
2804
- content: [
2805
- {
2806
- type: 'text',
2807
- text: `VM "${args.vmId}" powered off successfully.`,
2808
- },
2809
- ],
2810
- };
2811
- }
2812
2679
  case 'liara_delete_vm': {
2813
2680
  await iaasService.deleteVM(this.client, args.vmId);
2814
2681
  return {