@mks2508/coolify-mks-cli-mcp 0.4.3 → 0.6.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 (88) hide show
  1. package/dist/cli/coolify-state.d.ts +51 -0
  2. package/dist/cli/coolify-state.d.ts.map +1 -0
  3. package/dist/cli/index.js +2862 -631
  4. package/dist/coolify/config.d.ts +1 -1
  5. package/dist/coolify/config.d.ts.map +1 -1
  6. package/dist/coolify/index.d.ts +626 -12
  7. package/dist/coolify/index.d.ts.map +1 -1
  8. package/dist/coolify/types.d.ts +87 -3
  9. package/dist/coolify/types.d.ts.map +1 -1
  10. package/dist/dist-C4hIkHif.js +66 -0
  11. package/dist/dist-C4hIkHif.js.map +1 -0
  12. package/dist/dist-DEPvJhbP.js +3 -0
  13. package/dist/index.cjs +8511 -28542
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.d.ts +32 -8
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +8470 -28506
  18. package/dist/index.js.map +1 -1
  19. package/dist/network.d.ts +75 -0
  20. package/dist/network.d.ts.map +1 -0
  21. package/dist/sdk.d.ts +356 -0
  22. package/dist/sdk.d.ts.map +1 -0
  23. package/dist/server/index.d.ts +9 -0
  24. package/dist/server/index.d.ts.map +1 -0
  25. package/dist/server/sse.js +3 -1
  26. package/dist/server/stdio.d.ts +0 -2
  27. package/dist/server/stdio.d.ts.map +1 -1
  28. package/dist/server/stdio.js +3307 -1618
  29. package/dist/tools/definitions.d.ts +1 -1
  30. package/dist/tools/definitions.d.ts.map +1 -1
  31. package/dist/tools/handlers.d.ts +6 -7
  32. package/dist/tools/handlers.d.ts.map +1 -1
  33. package/dist/tools/index.d.ts +8 -0
  34. package/dist/tools/index.d.ts.map +1 -0
  35. package/dist/trace.d.ts +71 -0
  36. package/dist/trace.d.ts.map +1 -0
  37. package/dist/utils/format.d.ts +1 -1
  38. package/dist/utils/format.d.ts.map +1 -1
  39. package/package.json +13 -7
  40. package/src/cli/actions.ts +162 -0
  41. package/src/cli/commands/active-deployments.ts +24 -0
  42. package/src/cli/commands/build-logs.ts +58 -0
  43. package/src/cli/commands/cancel-deploy.ts +35 -0
  44. package/src/cli/commands/config.ts +53 -47
  45. package/src/cli/commands/create.ts +74 -53
  46. package/src/cli/commands/databases.ts +63 -0
  47. package/src/cli/commands/db.ts +68 -0
  48. package/src/cli/commands/delete.ts +41 -29
  49. package/src/cli/commands/deploy.ts +42 -21
  50. package/src/cli/commands/deployments.ts +41 -31
  51. package/src/cli/commands/destinations.ts +19 -27
  52. package/src/cli/commands/diagnose.ts +139 -0
  53. package/src/cli/commands/env.ts +66 -41
  54. package/src/cli/commands/environments.ts +36 -32
  55. package/src/cli/commands/exec.ts +39 -0
  56. package/src/cli/commands/keys.ts +46 -0
  57. package/src/cli/commands/list.ts +29 -27
  58. package/src/cli/commands/logs.ts +33 -18
  59. package/src/cli/commands/network.ts +145 -0
  60. package/src/cli/commands/projects.ts +51 -39
  61. package/src/cli/commands/restart.ts +60 -0
  62. package/src/cli/commands/server-resources.ts +71 -0
  63. package/src/cli/commands/servers.ts +23 -23
  64. package/src/cli/commands/service-logs.ts +59 -0
  65. package/src/cli/commands/services.ts +63 -0
  66. package/src/cli/commands/show.ts +72 -41
  67. package/src/cli/commands/start.ts +60 -0
  68. package/src/cli/commands/stop.ts +60 -0
  69. package/src/cli/commands/svc.ts +68 -0
  70. package/src/cli/commands/teams.ts +60 -0
  71. package/src/cli/commands/update.ts +73 -49
  72. package/src/cli/commands/version.ts +37 -0
  73. package/src/cli/coolify-state.ts +88 -0
  74. package/src/cli/index.ts +400 -125
  75. package/src/coolify/config.ts +29 -27
  76. package/src/coolify/index.ts +2221 -371
  77. package/src/coolify/types.ts +218 -123
  78. package/src/index.ts +82 -868
  79. package/src/network.ts +298 -0
  80. package/src/sdk.ts +597 -0
  81. package/src/server/index.ts +13 -0
  82. package/src/server/sse.ts +33 -25
  83. package/src/server/stdio.ts +24 -27
  84. package/src/tools/definitions.ts +893 -264
  85. package/src/tools/handlers.ts +556 -748
  86. package/src/tools/index.ts +8 -0
  87. package/src/trace.ts +116 -0
  88. package/src/utils/format.ts +36 -33
@@ -6,290 +6,317 @@
6
6
  * @module
7
7
  */
8
8
 
9
- import type { Tool } from '@modelcontextprotocol/sdk/types.js'
9
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
10
10
 
11
11
  /**
12
12
  * All Coolify MCP tool definitions.
13
13
  */
14
14
  export const coolifyTools: Tool[] = [
15
15
  {
16
- name: 'deploy',
16
+ name: "deploy",
17
17
  description: `Deploy or redeploy an application to Coolify.
18
18
 
19
19
  Triggers a new deployment for the specified application UUID.
20
20
  Can force rebuild without cache if needed.`,
21
21
  inputSchema: {
22
- type: 'object' as const,
22
+ type: "object" as const,
23
23
  properties: {
24
24
  uuid: {
25
- type: 'string' as const,
26
- description: 'Application UUID in Coolify',
27
- format: 'uuid'
25
+ type: "string" as const,
26
+ description: "Application UUID in Coolify",
27
+ format: "uuid",
28
28
  },
29
29
  force: {
30
- type: 'boolean' as const,
31
- description: 'Force rebuild without cache',
32
- default: false
30
+ type: "boolean" as const,
31
+ description: "Force rebuild without cache",
32
+ default: false,
33
33
  },
34
34
  tag: {
35
- type: 'string' as const,
36
- description: 'Deploy specific tag/version'
37
- }
35
+ type: "string" as const,
36
+ description: "Deploy specific tag/version",
37
+ },
38
38
  },
39
- required: ['uuid']
40
- }
39
+ required: ["uuid"],
40
+ },
41
41
  },
42
42
  {
43
- name: 'get_env_vars',
43
+ name: "get_env_vars",
44
44
  description: `Get environment variables for a Coolify application.
45
45
 
46
46
  Returns all environment variables with metadata including whether
47
47
  they are runtime or buildtime, and if they are required.`,
48
48
  inputSchema: {
49
- type: 'object' as const,
49
+ type: "object" as const,
50
50
  properties: {
51
51
  uuid: {
52
- type: 'string' as const,
53
- description: 'Application UUID',
54
- format: 'uuid'
55
- }
52
+ type: "string" as const,
53
+ description: "Application UUID",
54
+ format: "uuid",
55
+ },
56
56
  },
57
- required: ['uuid']
58
- }
57
+ required: ["uuid"],
58
+ },
59
59
  },
60
60
  {
61
- name: 'set_env_vars',
61
+ name: "set_env_vars",
62
62
  description: `Set environment variables for a Coolify application.
63
63
 
64
64
  Updates or adds environment variables. Existing vars not in the
65
65
  input are preserved. Redeploy after setting to apply changes.`,
66
66
  inputSchema: {
67
- type: 'object' as const,
67
+ type: "object" as const,
68
68
  properties: {
69
69
  uuid: {
70
- type: 'string' as const,
71
- description: 'Application UUID',
72
- format: 'uuid'
70
+ type: "string" as const,
71
+ description: "Application UUID",
72
+ format: "uuid",
73
73
  },
74
74
  envVars: {
75
- type: 'object' as const,
76
- description: 'Key-value pairs of environment variables',
77
- additionalProperties: { type: 'string' as const }
78
- }
75
+ type: "object" as const,
76
+ description: "Key-value pairs of environment variables",
77
+ additionalProperties: { type: "string" as const },
78
+ },
79
79
  },
80
- required: ['uuid', 'envVars']
81
- }
80
+ required: ["uuid", "envVars"],
81
+ },
82
82
  },
83
83
  {
84
- name: 'get_deployment_status',
84
+ name: "get_deployment_status",
85
85
  description: `Get the current status of a Coolify application.
86
86
 
87
87
  Returns deployment state, health status, and resource usage.`,
88
88
  inputSchema: {
89
- type: 'object' as const,
89
+ type: "object" as const,
90
90
  properties: {
91
91
  uuid: {
92
- type: 'string' as const,
93
- description: 'Application UUID',
94
- format: 'uuid'
95
- }
92
+ type: "string" as const,
93
+ description: "Application UUID",
94
+ format: "uuid",
95
+ },
96
96
  },
97
- required: ['uuid']
98
- }
97
+ required: ["uuid"],
98
+ },
99
99
  },
100
100
  {
101
- name: 'list_applications',
101
+ name: "list_applications",
102
102
  description: `List all applications in Coolify.
103
103
 
104
104
  Optionally filter by team or project ID.`,
105
105
  inputSchema: {
106
- type: 'object' as const,
106
+ type: "object" as const,
107
107
  properties: {
108
108
  teamId: {
109
- type: 'string' as const,
110
- description: 'Filter by Team ID'
109
+ type: "string" as const,
110
+ description: "Filter by Team ID",
111
111
  },
112
112
  projectId: {
113
- type: 'string' as const,
114
- description: 'Filter by Project ID'
115
- }
116
- }
117
- }
113
+ type: "string" as const,
114
+ description: "Filter by Project ID",
115
+ },
116
+ },
117
+ },
118
118
  },
119
119
  {
120
- name: 'delete_application',
120
+ name: "delete_application",
121
121
  description: `Delete an application from Coolify.
122
122
 
123
123
  WARNING: This action is irreversible. All deployments, environment
124
124
  variables, domains, and history will be permanently deleted.`,
125
125
  inputSchema: {
126
- type: 'object' as const,
126
+ type: "object" as const,
127
127
  properties: {
128
128
  uuid: {
129
- type: 'string' as const,
130
- description: 'Application UUID to delete',
131
- format: 'uuid'
132
- }
129
+ type: "string" as const,
130
+ description: "Application UUID to delete",
131
+ format: "uuid",
132
+ },
133
133
  },
134
- required: ['uuid']
135
- }
134
+ required: ["uuid"],
135
+ },
136
136
  },
137
137
  {
138
- name: 'get_application_logs',
138
+ name: "get_application_logs",
139
139
  description: `Get logs for a Coolify application.
140
140
 
141
- Retrieve recent logs with optional tail limit.`,
141
+ Retrieve recent logs. For docker-compose apps, use serviceName to filter by container.`,
142
142
  inputSchema: {
143
- type: 'object' as const,
143
+ type: "object" as const,
144
144
  properties: {
145
145
  uuid: {
146
- type: 'string' as const,
147
- description: 'Application UUID',
148
- format: 'uuid'
146
+ type: "string" as const,
147
+ description: "Application UUID",
148
+ format: "uuid",
149
149
  },
150
150
  tail: {
151
- type: 'number' as const,
152
- description: 'Number of log lines to retrieve'
153
- }
151
+ type: "number" as const,
152
+ description: "Number of log lines to retrieve (default: 100)",
153
+ },
154
+ serviceName: {
155
+ type: "string" as const,
156
+ description:
157
+ "Service name to filter logs (for docker-compose apps, e.g., 'app', 'db')",
158
+ },
154
159
  },
155
- required: ['uuid']
156
- }
160
+ required: ["uuid"],
161
+ },
157
162
  },
158
163
  {
159
- name: 'start_application',
164
+ name: "start_application",
160
165
  description: `Start a stopped Coolify application.
161
166
 
162
167
  Use this to start applications that were previously stopped.`,
163
168
  inputSchema: {
164
- type: 'object' as const,
169
+ type: "object" as const,
165
170
  properties: {
166
171
  uuid: {
167
- type: 'string' as const,
168
- description: 'Application UUID to start',
169
- format: 'uuid'
170
- }
172
+ type: "string" as const,
173
+ description: "Application UUID to start",
174
+ format: "uuid",
175
+ },
176
+ force: {
177
+ type: "boolean" as const,
178
+ description: "Force start even if already running",
179
+ },
180
+ instantDeploy: {
181
+ type: "boolean" as const,
182
+ description: "Instant deploy without waiting for queue",
183
+ },
171
184
  },
172
- required: ['uuid']
173
- }
185
+ required: ["uuid"],
186
+ },
174
187
  },
175
188
  {
176
- name: 'stop_application',
189
+ name: "stop_application",
177
190
  description: `Stop a running Coolify application.
178
191
 
179
192
  WARNING: This will make the application temporarily unavailable.
180
193
  Containers will be stopped but not deleted.`,
181
194
  inputSchema: {
182
- type: 'object' as const,
195
+ type: "object" as const,
183
196
  properties: {
184
197
  uuid: {
185
- type: 'string' as const,
186
- description: 'Application UUID to stop',
187
- format: 'uuid'
188
- }
198
+ type: "string" as const,
199
+ description: "Application UUID to stop",
200
+ format: "uuid",
201
+ },
189
202
  },
190
- required: ['uuid']
191
- }
203
+ required: ["uuid"],
204
+ },
192
205
  },
193
206
  {
194
- name: 'restart_application',
207
+ name: "restart_application",
195
208
  description: `Restart a Coolify application.
196
209
 
197
210
  Equivalent to stopping and then starting the application.
198
211
  Useful to apply configuration changes or recover from errors.`,
199
212
  inputSchema: {
200
- type: 'object' as const,
213
+ type: "object" as const,
201
214
  properties: {
202
215
  uuid: {
203
- type: 'string' as const,
204
- description: 'Application UUID to restart',
205
- format: 'uuid'
206
- }
216
+ type: "string" as const,
217
+ description: "Application UUID to restart",
218
+ format: "uuid",
219
+ },
207
220
  },
208
- required: ['uuid']
209
- }
221
+ required: ["uuid"],
222
+ },
210
223
  },
211
224
  {
212
- name: 'get_deployment_history',
225
+ name: "get_deployment_history",
213
226
  description: `Get deployment history for a Coolify application.
214
227
 
215
228
  Returns list of all deployments with status, timestamps, and commit info.`,
216
229
  inputSchema: {
217
- type: 'object' as const,
230
+ type: "object" as const,
218
231
  properties: {
219
232
  uuid: {
220
- type: 'string' as const,
221
- description: 'Application UUID',
222
- format: 'uuid'
223
- }
233
+ type: "string" as const,
234
+ description: "Application UUID",
235
+ format: "uuid",
236
+ },
224
237
  },
225
- required: ['uuid']
226
- }
238
+ required: ["uuid"],
239
+ },
227
240
  },
228
241
  {
229
- name: 'update_application',
242
+ name: "update_application",
230
243
  description: `Update configuration for a Coolify application.
231
244
 
232
245
  Can modify name, description, build settings, commands, and domains.
233
246
  Redeploy after updating to apply changes.`,
234
247
  inputSchema: {
235
- type: 'object' as const,
248
+ type: "object" as const,
236
249
  properties: {
237
250
  uuid: {
238
- type: 'string' as const,
239
- description: 'Application UUID',
240
- format: 'uuid'
251
+ type: "string" as const,
252
+ description: "Application UUID",
253
+ format: "uuid",
241
254
  },
242
255
  name: {
243
- type: 'string' as const,
244
- description: 'New application name'
256
+ type: "string" as const,
257
+ description: "New application name",
245
258
  },
246
259
  description: {
247
- type: 'string' as const,
248
- description: 'New description'
260
+ type: "string" as const,
261
+ description: "New description",
249
262
  },
250
263
  buildPack: {
251
- type: 'string' as const,
252
- description: 'Build pack type',
253
- enum: ['dockerfile', 'nixpacks', 'static', 'dockercompose']
264
+ type: "string" as const,
265
+ description: "Build pack type",
266
+ enum: ["dockerfile", "nixpacks", "static", "dockercompose"],
254
267
  },
255
268
  gitBranch: {
256
- type: 'string' as const,
257
- description: 'Git branch to deploy'
269
+ type: "string" as const,
270
+ description: "Git branch to deploy",
258
271
  },
259
272
  portsExposes: {
260
- type: 'string' as const,
261
- description: 'Ports to expose (comma-separated)'
273
+ type: "string" as const,
274
+ description: "Ports to expose (comma-separated)",
262
275
  },
263
276
  installCommand: {
264
- type: 'string' as const,
265
- description: 'Install command (nixpacks)'
277
+ type: "string" as const,
278
+ description: "Install command (nixpacks)",
266
279
  },
267
280
  buildCommand: {
268
- type: 'string' as const,
269
- description: 'Build command'
281
+ type: "string" as const,
282
+ description: "Build command",
270
283
  },
271
284
  startCommand: {
272
- type: 'string' as const,
273
- description: 'Start command'
285
+ type: "string" as const,
286
+ description: "Start command",
274
287
  },
275
288
  domains: {
276
- type: 'string' as const,
277
- description: 'Domains/FQDN - comma separated list with protocol (e.g., "https://app.example.com,https://www.example.com")'
289
+ type: "string" as const,
290
+ description:
291
+ 'Domains/FQDN - comma separated list with protocol (e.g., "https://app.example.com,https://www.example.com")',
278
292
  },
279
293
  isForceHttpsEnabled: {
280
- type: 'boolean' as const,
281
- description: 'Force HTTPS redirect'
294
+ type: "boolean" as const,
295
+ description: "Force HTTPS redirect",
282
296
  },
283
297
  isAutoDeployEnabled: {
284
- type: 'boolean' as const,
285
- description: 'Enable auto deploy on git push'
286
- }
298
+ type: "boolean" as const,
299
+ description: "Enable auto deploy on git push",
300
+ },
301
+ dockerfileLocation: {
302
+ type: "string" as const,
303
+ description: "Dockerfile location relative to repo root",
304
+ },
305
+ baseDirectory: {
306
+ type: "string" as const,
307
+ description: 'Base directory for build context (default: "/")',
308
+ },
309
+ dockerComposeDomains: {
310
+ type: "string" as const,
311
+ description:
312
+ 'Docker Compose domains JSON: { "service-name": { "domain": "https://..." } }',
313
+ },
287
314
  },
288
- required: ['uuid']
289
- }
315
+ required: ["uuid"],
316
+ },
290
317
  },
291
318
  {
292
- name: 'set_domains',
319
+ name: "set_domains",
293
320
  description: `Set domains/FQDN for a Coolify application.
294
321
 
295
322
  Configure custom domains for your application. Coolify automatically handles SSL certificates via Let's Encrypt.
@@ -299,274 +326,876 @@ Domain format:
299
326
  - Multiple domains separated by comma: https://app.example.com,https://www.example.com
300
327
  - Can include port mapping: https://api.example.com:3000`,
301
328
  inputSchema: {
302
- type: 'object' as const,
329
+ type: "object" as const,
303
330
  properties: {
304
331
  uuid: {
305
- type: 'string' as const,
306
- description: 'Application UUID',
307
- format: 'uuid'
332
+ type: "string" as const,
333
+ description: "Application UUID",
334
+ format: "uuid",
308
335
  },
309
336
  domains: {
310
- type: 'string' as const,
311
- description: 'Domains/FQDN - comma separated list with protocol (e.g., "https://app.example.com,https://www.example.com")'
337
+ type: "string" as const,
338
+ description:
339
+ 'Domains/FQDN - comma separated list with protocol (e.g., "https://app.example.com,https://www.example.com")',
312
340
  },
313
341
  forceHttps: {
314
- type: 'boolean' as const,
315
- description: 'Force HTTPS redirect (default: true)',
316
- default: true
317
- }
342
+ type: "boolean" as const,
343
+ description: "Force HTTPS redirect (default: true)",
344
+ default: true,
345
+ },
318
346
  },
319
- required: ['uuid', 'domains']
320
- }
347
+ required: ["uuid", "domains"],
348
+ },
321
349
  },
322
350
  {
323
- name: 'list_servers',
351
+ name: "list_servers",
324
352
  description: `List all available servers in Coolify.
325
353
 
326
354
  Returns server UUIDs, names, and IPs. Use server UUID when creating applications.`,
327
355
  inputSchema: {
328
- type: 'object' as const,
329
- properties: {}
330
- }
356
+ type: "object" as const,
357
+ properties: {},
358
+ },
331
359
  },
332
360
  {
333
- name: 'get_server',
361
+ name: "get_server",
334
362
  description: `Get details of a specific Coolify server.
335
363
 
336
364
  Returns server information including name, IP, status, and configuration.`,
337
365
  inputSchema: {
338
- type: 'object' as const,
366
+ type: "object" as const,
339
367
  properties: {
340
368
  serverUuid: {
341
- type: 'string' as const,
342
- description: 'Server UUID to get details for',
343
- format: 'uuid'
344
- }
369
+ type: "string" as const,
370
+ description: "Server UUID to get details for",
371
+ format: "uuid",
372
+ },
345
373
  },
346
- required: ['serverUuid']
347
- }
374
+ required: ["serverUuid"],
375
+ },
348
376
  },
349
377
  {
350
- name: 'list_projects',
378
+ name: "list_projects",
351
379
  description: `List all projects in Coolify.
352
380
 
353
381
  Returns project UUIDs, names, and associated environments.`,
354
382
  inputSchema: {
355
- type: 'object' as const,
356
- properties: {}
357
- }
383
+ type: "object" as const,
384
+ properties: {},
385
+ },
358
386
  },
359
387
  {
360
- name: 'list_teams',
388
+ name: "list_teams",
361
389
  description: `List all teams in Coolify.
362
390
 
363
391
  Returns team IDs, names, and configuration.`,
364
392
  inputSchema: {
365
- type: 'object' as const,
366
- properties: {}
367
- }
393
+ type: "object" as const,
394
+ properties: {},
395
+ },
368
396
  },
369
397
  {
370
- name: 'get_server_destinations',
398
+ name: "get_server_destinations",
371
399
  description: `Get available destinations for a Coolify server.
372
400
 
373
401
  Returns destination UUIDs needed when creating applications.
374
402
  Each destination represents a Docker network/environment on the server.`,
375
403
  inputSchema: {
376
- type: 'object' as const,
404
+ type: "object" as const,
377
405
  properties: {
378
406
  serverUuid: {
379
- type: 'string' as const,
380
- description: 'Server UUID to get destinations for',
381
- format: 'uuid'
382
- }
407
+ type: "string" as const,
408
+ description: "Server UUID to get destinations for",
409
+ format: "uuid",
410
+ },
383
411
  },
384
- required: ['serverUuid']
385
- }
412
+ required: ["serverUuid"],
413
+ },
386
414
  },
387
415
  {
388
- name: 'create_application',
416
+ name: "create_application",
389
417
  description: `Create a new application in Coolify from a GitHub repository.
390
418
 
391
419
  Requires server UUID and destination UUID (get them from list_servers and get_server_destinations).
392
420
  The GitHub repository must be accessible via the configured GitHub App.`,
393
421
  inputSchema: {
394
- type: 'object' as const,
422
+ type: "object" as const,
395
423
  properties: {
396
424
  name: {
397
- type: 'string' as const,
398
- description: 'Application name'
425
+ type: "string" as const,
426
+ description: "Application name",
399
427
  },
400
428
  serverUuid: {
401
- type: 'string' as const,
402
- description: 'Server UUID to deploy to',
403
- format: 'uuid'
429
+ type: "string" as const,
430
+ description: "Server UUID to deploy to",
431
+ format: "uuid",
404
432
  },
405
433
  destinationUuid: {
406
- type: 'string' as const,
407
- description: 'Destination UUID (Docker network)',
408
- format: 'uuid'
434
+ type: "string" as const,
435
+ description: "Destination UUID (Docker network)",
436
+ format: "uuid",
409
437
  },
410
438
  githubRepoUrl: {
411
- type: 'string' as const,
412
- description: 'GitHub repository URL (e.g., https://github.com/user/repo)'
439
+ type: "string" as const,
440
+ description:
441
+ "GitHub repository URL (e.g., https://github.com/user/repo)",
413
442
  },
414
443
  description: {
415
- type: 'string' as const,
416
- description: 'Application description'
444
+ type: "string" as const,
445
+ description: "Application description",
417
446
  },
418
447
  branch: {
419
- type: 'string' as const,
420
- description: 'Git branch to deploy',
421
- default: 'main'
448
+ type: "string" as const,
449
+ description: "Git branch to deploy",
450
+ default: "main",
422
451
  },
423
452
  buildPack: {
424
- type: 'string' as const,
425
- description: 'Build pack type',
426
- enum: ['dockerfile', 'nixpacks', 'static', 'dockercompose'],
427
- default: 'nixpacks'
453
+ type: "string" as const,
454
+ description: "Build pack type",
455
+ enum: ["dockerfile", "nixpacks", "static", "dockercompose"],
456
+ default: "nixpacks",
428
457
  },
429
458
  type: {
430
- type: 'string' as const,
431
- description: 'Application type',
432
- enum: ['public', 'private-github-app', 'private-deploy-key', 'dockerfile', 'docker-image', 'docker-compose'],
433
- default: 'public'
459
+ type: "string" as const,
460
+ description: "Application type",
461
+ enum: [
462
+ "public",
463
+ "private-github-app",
464
+ "private-deploy-key",
465
+ "dockerfile",
466
+ "docker-image",
467
+ "docker-compose",
468
+ ],
469
+ default: "public",
434
470
  },
435
471
  dockerComposeLocation: {
436
- type: 'string' as const,
437
- description: 'Docker Compose file location relative to repo root (for dockercompose buildPack)'
472
+ type: "string" as const,
473
+ description:
474
+ "Docker Compose file location relative to repo root (for dockercompose buildPack)",
438
475
  },
439
476
  dockerfileLocation: {
440
- type: 'string' as const,
441
- description: 'Dockerfile location relative to repo root'
477
+ type: "string" as const,
478
+ description: "Dockerfile location relative to repo root",
442
479
  },
443
480
  baseDirectory: {
444
- type: 'string' as const,
445
- description: 'Base directory for build context (default: "/")'
446
- }
481
+ type: "string" as const,
482
+ description: 'Base directory for build context (default: "/")',
483
+ },
484
+ projectUuid: {
485
+ type: "string" as const,
486
+ description: "Project UUID",
487
+ },
488
+ environmentUuid: {
489
+ type: "string" as const,
490
+ description: "Environment UUID",
491
+ },
492
+ githubAppUuid: {
493
+ type: "string" as const,
494
+ description:
495
+ "GitHub App UUID (for private-github-app type, get from list_github_apps)",
496
+ },
497
+ portsExposes: {
498
+ type: "string" as const,
499
+ description: "Ports to expose (e.g., '3000' or '3000,8080')",
500
+ },
447
501
  },
448
- required: ['name', 'serverUuid', 'githubRepoUrl']
449
- }
502
+ required: ["name", "serverUuid"],
503
+ },
450
504
  },
451
505
  {
452
- name: 'create_project',
506
+ name: "create_project",
453
507
  description: `Create a new project in Coolify.
454
508
 
455
509
  Projects organize applications into logical groups. Each project has one or more environments (e.g., production, staging).`,
456
510
  inputSchema: {
457
- type: 'object' as const,
511
+ type: "object" as const,
458
512
  properties: {
459
513
  name: {
460
- type: 'string' as const,
461
- description: 'Project name'
514
+ type: "string" as const,
515
+ description: "Project name",
462
516
  },
463
517
  description: {
464
- type: 'string' as const,
465
- description: 'Project description'
466
- }
518
+ type: "string" as const,
519
+ description: "Project description",
520
+ },
467
521
  },
468
- required: ['name']
469
- }
522
+ required: ["name"],
523
+ },
470
524
  },
471
525
  {
472
- name: 'get_resource_usage',
526
+ name: "get_resource_usage",
473
527
  description: `Get resource usage for a Coolify application.
474
528
 
475
529
  Returns current resource consumption metrics.`,
476
530
  inputSchema: {
477
- type: 'object' as const,
531
+ type: "object" as const,
478
532
  properties: {
479
533
  uuid: {
480
- type: 'string' as const,
481
- description: 'Application UUID',
482
- format: 'uuid'
483
- }
534
+ type: "string" as const,
535
+ description: "Application UUID",
536
+ format: "uuid",
537
+ },
484
538
  },
485
- required: ['uuid']
486
- }
539
+ required: ["uuid"],
540
+ },
487
541
  },
488
542
  {
489
- name: 'health_check',
543
+ name: "health_check",
490
544
  description: `Check if Coolify API is accessible and credentials are valid.
491
545
 
492
546
  Returns connection status and API version info if available.`,
493
547
  inputSchema: {
494
- type: 'object' as const,
495
- properties: {}
496
- }
548
+ type: "object" as const,
549
+ properties: {},
550
+ },
497
551
  },
498
552
  {
499
- name: 'list_deployments',
553
+ name: "list_deployments",
500
554
  description: `List all active and queued deployments across all applications.
501
555
 
502
556
  Returns deployments that are currently in progress or waiting in queue.
503
557
  Useful for monitoring ongoing builds and deployments.`,
504
558
  inputSchema: {
505
- type: 'object' as const,
506
- properties: {}
507
- }
559
+ type: "object" as const,
560
+ properties: {},
561
+ },
508
562
  },
509
563
  {
510
- name: 'get_deployment',
564
+ name: "get_deployment",
511
565
  description: `Get detailed information about a specific deployment.
512
566
 
513
567
  Returns deployment status, logs, timestamps, and error messages if any.
514
568
  Use deployment UUID from list_deployments or get_application_deployments.`,
515
569
  inputSchema: {
516
- type: 'object' as const,
570
+ type: "object" as const,
517
571
  properties: {
518
572
  deploymentUuid: {
519
- type: 'string' as const,
520
- description: 'Deployment UUID'
521
- }
573
+ type: "string" as const,
574
+ description: "Deployment UUID",
575
+ },
522
576
  },
523
- required: ['deploymentUuid']
524
- }
577
+ required: ["deploymentUuid"],
578
+ },
525
579
  },
526
580
  {
527
- name: 'get_application_deployments',
581
+ name: "get_application_deployments",
528
582
  description: `Get deployment history for a specific application.
529
583
 
530
584
  Returns list of all deployments with status, timestamps, commit info, and logs.
531
585
  Useful for debugging failed deployments and tracking deployment history.`,
532
586
  inputSchema: {
533
- type: 'object' as const,
587
+ type: "object" as const,
534
588
  properties: {
535
589
  uuid: {
536
- type: 'string' as const,
537
- description: 'Application UUID',
538
- format: 'uuid'
590
+ type: "string" as const,
591
+ description: "Application UUID",
592
+ format: "uuid",
539
593
  },
540
594
  skip: {
541
- type: 'number' as const,
542
- description: 'Number of deployments to skip (pagination)',
543
- default: 0
595
+ type: "number" as const,
596
+ description: "Number of deployments to skip (pagination)",
597
+ default: 0,
544
598
  },
545
599
  take: {
546
- type: 'number' as const,
547
- description: 'Number of deployments to return (default: 10)',
548
- default: 10
549
- }
600
+ type: "number" as const,
601
+ description: "Number of deployments to return (default: 10)",
602
+ default: 10,
603
+ },
550
604
  },
551
- required: ['uuid']
552
- }
605
+ required: ["uuid"],
606
+ },
553
607
  },
554
608
  {
555
- name: 'get_application_details',
609
+ name: "get_application_details",
556
610
  description: `Get detailed information about a Coolify application.
557
611
 
558
612
  Returns full application configuration including name, description,
559
613
  build settings, environment, and deployment status.`,
560
614
  inputSchema: {
561
- type: 'object' as const,
615
+ type: "object" as const,
616
+ properties: {
617
+ uuid: {
618
+ type: "string" as const,
619
+ description: "Application UUID",
620
+ format: "uuid",
621
+ },
622
+ },
623
+ required: ["uuid"],
624
+ },
625
+ },
626
+
627
+ // ===========================================================================
628
+ // Version / Health
629
+ // ===========================================================================
630
+ {
631
+ name: "execute_command",
632
+ description: `Execute a shell command on an application's running container.
633
+
634
+ Useful for debugging, checking file contents, or running one-off operations.`,
635
+ inputSchema: {
636
+ type: "object" as const,
637
+ properties: {
638
+ uuid: {
639
+ type: "string" as const,
640
+ description: "Application UUID",
641
+ },
642
+ command: {
643
+ type: "string" as const,
644
+ description:
645
+ "Shell command to execute (e.g., 'ls -la', 'cat /app/logs/error.log')",
646
+ },
647
+ },
648
+ required: ["uuid", "command"],
649
+ },
650
+ },
651
+ {
652
+ name: "bulk_update_env_vars",
653
+ description: `Bulk update environment variables for an application.
654
+
655
+ More efficient than setting variables one by one. Accepts an array of key-value pairs.`,
656
+ inputSchema: {
657
+ type: "object" as const,
658
+ properties: {
659
+ uuid: {
660
+ type: "string" as const,
661
+ description: "Application UUID",
662
+ },
663
+ envVars: {
664
+ type: "array" as const,
665
+ description: "Array of { key, value, is_preview? } objects",
666
+ items: {
667
+ type: "object" as const,
668
+ properties: {
669
+ key: { type: "string" as const },
670
+ value: { type: "string" as const },
671
+ is_preview: { type: "boolean" as const },
672
+ },
673
+ required: ["key", "value"],
674
+ },
675
+ },
676
+ },
677
+ required: ["uuid", "envVars"],
678
+ },
679
+ },
680
+
681
+ // ===========================================================================
682
+ // Version / Health
683
+ // ===========================================================================
684
+ {
685
+ name: "get_version",
686
+ description: `Get the Coolify server version.
687
+
688
+ Returns the version string of the connected Coolify instance.`,
689
+ inputSchema: {
690
+ type: "object" as const,
691
+ properties: {},
692
+ },
693
+ },
694
+
695
+ // ===========================================================================
696
+ // Database Management
697
+ // ===========================================================================
698
+ {
699
+ name: "list_databases",
700
+ description: `List all databases in Coolify.
701
+
702
+ Returns database UUIDs, names, types, and status.`,
703
+ inputSchema: {
704
+ type: "object" as const,
705
+ properties: {},
706
+ },
707
+ },
708
+ {
709
+ name: "get_database",
710
+ description: `Get details of a specific database.
711
+
712
+ Returns full database configuration, connection info, and status.`,
713
+ inputSchema: {
714
+ type: "object" as const,
715
+ properties: {
716
+ uuid: {
717
+ type: "string" as const,
718
+ description: "Database UUID",
719
+ },
720
+ },
721
+ required: ["uuid"],
722
+ },
723
+ },
724
+ {
725
+ name: "create_database",
726
+ description: `Create a new database in Coolify.
727
+
728
+ Supports types: postgresql, mysql, mariadb, mongodb, redis, keydb, clickhouse, dragonfly.
729
+ Requires server_uuid and project_uuid in the data.`,
730
+ inputSchema: {
731
+ type: "object" as const,
732
+ properties: {
733
+ dbType: {
734
+ type: "string" as const,
735
+ description: "Database type",
736
+ enum: [
737
+ "postgresql",
738
+ "mysql",
739
+ "mariadb",
740
+ "mongodb",
741
+ "redis",
742
+ "keydb",
743
+ "clickhouse",
744
+ "dragonfly",
745
+ ],
746
+ },
747
+ data: {
748
+ type: "object" as const,
749
+ description:
750
+ "Database creation data (server_uuid, project_uuid, environment_name, etc.)",
751
+ additionalProperties: true,
752
+ },
753
+ },
754
+ required: ["dbType", "data"],
755
+ },
756
+ },
757
+ {
758
+ name: "delete_database",
759
+ description: `Delete a database from Coolify.
760
+
761
+ WARNING: This action is irreversible.`,
762
+ inputSchema: {
763
+ type: "object" as const,
764
+ properties: {
765
+ uuid: {
766
+ type: "string" as const,
767
+ description: "Database UUID to delete",
768
+ },
769
+ },
770
+ required: ["uuid"],
771
+ },
772
+ },
773
+ {
774
+ name: "start_database",
775
+ description: `Start a stopped database.`,
776
+ inputSchema: {
777
+ type: "object" as const,
778
+ properties: {
779
+ uuid: {
780
+ type: "string" as const,
781
+ description: "Database UUID to start",
782
+ },
783
+ },
784
+ required: ["uuid"],
785
+ },
786
+ },
787
+ {
788
+ name: "stop_database",
789
+ description: `Stop a running database.
790
+
791
+ WARNING: This will make the database temporarily unavailable.`,
792
+ inputSchema: {
793
+ type: "object" as const,
794
+ properties: {
795
+ uuid: {
796
+ type: "string" as const,
797
+ description: "Database UUID to stop",
798
+ },
799
+ },
800
+ required: ["uuid"],
801
+ },
802
+ },
803
+ {
804
+ name: "restart_database",
805
+ description: `Restart a database.`,
806
+ inputSchema: {
807
+ type: "object" as const,
808
+ properties: {
809
+ uuid: {
810
+ type: "string" as const,
811
+ description: "Database UUID to restart",
812
+ },
813
+ },
814
+ required: ["uuid"],
815
+ },
816
+ },
817
+
818
+ // ===========================================================================
819
+ // Service Management
820
+ // ===========================================================================
821
+ {
822
+ name: "list_services",
823
+ description: `List all services in Coolify.
824
+
825
+ Returns service UUIDs, names, types, and status.`,
826
+ inputSchema: {
827
+ type: "object" as const,
828
+ properties: {},
829
+ },
830
+ },
831
+ {
832
+ name: "get_service",
833
+ description: `Get details of a specific service.`,
834
+ inputSchema: {
835
+ type: "object" as const,
836
+ properties: {
837
+ uuid: {
838
+ type: "string" as const,
839
+ description: "Service UUID",
840
+ },
841
+ },
842
+ required: ["uuid"],
843
+ },
844
+ },
845
+ {
846
+ name: "start_service",
847
+ description: `Start a stopped service.`,
848
+ inputSchema: {
849
+ type: "object" as const,
850
+ properties: {
851
+ uuid: {
852
+ type: "string" as const,
853
+ description: "Service UUID to start",
854
+ },
855
+ },
856
+ required: ["uuid"],
857
+ },
858
+ },
859
+ {
860
+ name: "stop_service",
861
+ description: `Stop a running service.`,
862
+ inputSchema: {
863
+ type: "object" as const,
864
+ properties: {
865
+ uuid: {
866
+ type: "string" as const,
867
+ description: "Service UUID to stop",
868
+ },
869
+ },
870
+ required: ["uuid"],
871
+ },
872
+ },
873
+ {
874
+ name: "restart_service",
875
+ description: `Restart a service.`,
876
+ inputSchema: {
877
+ type: "object" as const,
878
+ properties: {
879
+ uuid: {
880
+ type: "string" as const,
881
+ description: "Service UUID to restart",
882
+ },
883
+ },
884
+ required: ["uuid"],
885
+ },
886
+ },
887
+ {
888
+ name: "delete_service",
889
+ description: `Delete a service from Coolify.
890
+
891
+ WARNING: This action is irreversible.`,
892
+ inputSchema: {
893
+ type: "object" as const,
894
+ properties: {
895
+ uuid: {
896
+ type: "string" as const,
897
+ description: "Service UUID to delete",
898
+ },
899
+ },
900
+ required: ["uuid"],
901
+ },
902
+ },
903
+
904
+ // ===========================================================================
905
+ // Server (additional)
906
+ // ===========================================================================
907
+ {
908
+ name: "get_server_resources",
909
+ description: `Get all resources deployed on a server.
910
+
911
+ Returns applications, databases, and services running on the server.`,
912
+ inputSchema: {
913
+ type: "object" as const,
914
+ properties: {
915
+ serverUuid: {
916
+ type: "string" as const,
917
+ description: "Server UUID",
918
+ },
919
+ },
920
+ required: ["serverUuid"],
921
+ },
922
+ },
923
+ {
924
+ name: "get_server_domains",
925
+ description: `Get all domains configured on a server.`,
926
+ inputSchema: {
927
+ type: "object" as const,
928
+ properties: {
929
+ serverUuid: {
930
+ type: "string" as const,
931
+ description: "Server UUID",
932
+ },
933
+ },
934
+ required: ["serverUuid"],
935
+ },
936
+ },
937
+ {
938
+ name: "validate_server",
939
+ description: `Validate a server connection in Coolify.
940
+
941
+ Checks if the server is reachable and properly configured.`,
942
+ inputSchema: {
943
+ type: "object" as const,
944
+ properties: {
945
+ serverUuid: {
946
+ type: "string" as const,
947
+ description: "Server UUID to validate",
948
+ },
949
+ },
950
+ required: ["serverUuid"],
951
+ },
952
+ },
953
+
954
+ // ===========================================================================
955
+ // Deployment Control
956
+ // ===========================================================================
957
+ {
958
+ name: "cancel_deployment",
959
+ description: `Cancel an in-progress deployment.
960
+
961
+ Stops the build/deployment process for the specified deployment.`,
962
+ inputSchema: {
963
+ type: "object" as const,
964
+ properties: {
965
+ deploymentUuid: {
966
+ type: "string" as const,
967
+ description: "Deployment UUID to cancel",
968
+ },
969
+ },
970
+ required: ["deploymentUuid"],
971
+ },
972
+ },
973
+
974
+ // ===========================================================================
975
+ // Teams (additional)
976
+ // ===========================================================================
977
+ {
978
+ name: "get_current_team",
979
+ description: `Get the current team associated with the API token.`,
980
+ inputSchema: {
981
+ type: "object" as const,
982
+ properties: {},
983
+ },
984
+ },
985
+ {
986
+ name: "get_team_members",
987
+ description: `Get members of a specific team.`,
988
+ inputSchema: {
989
+ type: "object" as const,
990
+ properties: {
991
+ teamId: {
992
+ type: "number" as const,
993
+ description: "Team ID",
994
+ },
995
+ },
996
+ required: ["teamId"],
997
+ },
998
+ },
999
+
1000
+ // ===========================================================================
1001
+ // Private Keys / SSH
1002
+ // ===========================================================================
1003
+ {
1004
+ name: "list_private_keys",
1005
+ description: `List all SSH private keys configured in Coolify.`,
1006
+ inputSchema: {
1007
+ type: "object" as const,
1008
+ properties: {},
1009
+ },
1010
+ },
1011
+ {
1012
+ name: "get_private_key",
1013
+ description: `Get details of a specific SSH private key.`,
1014
+ inputSchema: {
1015
+ type: "object" as const,
1016
+ properties: {
1017
+ uuid: {
1018
+ type: "string" as const,
1019
+ description: "Private key UUID",
1020
+ },
1021
+ },
1022
+ required: ["uuid"],
1023
+ },
1024
+ },
1025
+
1026
+ // ===========================================================================
1027
+ // Smart Resolution
1028
+ // ===========================================================================
1029
+ {
1030
+ name: "resolve_application",
1031
+ description: `Find an application by name, domain, or UUID.
1032
+
1033
+ Searches across all applications and returns the match. Useful when you know
1034
+ the app name but not the UUID.`,
1035
+ inputSchema: {
1036
+ type: "object" as const,
1037
+ properties: {
1038
+ query: {
1039
+ type: "string" as const,
1040
+ description: "Application name, domain (FQDN), or UUID to search for",
1041
+ },
1042
+ },
1043
+ required: ["query"],
1044
+ },
1045
+ },
1046
+ {
1047
+ name: "resolve_server",
1048
+ description: `Find a server by name, IP, or UUID.`,
1049
+ inputSchema: {
1050
+ type: "object" as const,
1051
+ properties: {
1052
+ query: {
1053
+ type: "string" as const,
1054
+ description: "Server name, IP address, or UUID to search for",
1055
+ },
1056
+ },
1057
+ required: ["query"],
1058
+ },
1059
+ },
1060
+
1061
+ // ===========================================================================
1062
+ // Diagnostics
1063
+ // ===========================================================================
1064
+ {
1065
+ name: "diagnose_application",
1066
+ description: `Run a comprehensive diagnostic on an application.
1067
+
1068
+ Aggregates status, recent deployments, environment variables, and logs
1069
+ into a single diagnostic report with identified issues.`,
1070
+ inputSchema: {
1071
+ type: "object" as const,
1072
+ properties: {
1073
+ query: {
1074
+ type: "string" as const,
1075
+ description: "Application name, domain, or UUID to diagnose",
1076
+ },
1077
+ },
1078
+ required: ["query"],
1079
+ },
1080
+ },
1081
+ {
1082
+ name: "diagnose_server",
1083
+ description: `Run a comprehensive diagnostic on a server.
1084
+
1085
+ Aggregates server health, deployed resources, and domains into a diagnostic report.`,
1086
+ inputSchema: {
1087
+ type: "object" as const,
1088
+ properties: {
1089
+ query: {
1090
+ type: "string" as const,
1091
+ description: "Server name, IP, or UUID to diagnose",
1092
+ },
1093
+ },
1094
+ required: ["query"],
1095
+ },
1096
+ },
1097
+ {
1098
+ name: "find_infrastructure_issues",
1099
+ description: `Scan all infrastructure for potential issues.
1100
+
1101
+ Checks all servers, applications, databases, and services for problems
1102
+ like unreachable servers, stopped apps, failed deployments.`,
1103
+ inputSchema: {
1104
+ type: "object" as const,
1105
+ properties: {},
1106
+ },
1107
+ },
1108
+
1109
+ // ===========================================================================
1110
+ // Batch Operations
1111
+ // ===========================================================================
1112
+ {
1113
+ name: "restart_project_apps",
1114
+ description: `Restart all applications in a project.`,
1115
+ inputSchema: {
1116
+ type: "object" as const,
1117
+ properties: {
1118
+ projectUuid: {
1119
+ type: "string" as const,
1120
+ description: "Project UUID",
1121
+ },
1122
+ },
1123
+ required: ["projectUuid"],
1124
+ },
1125
+ },
1126
+ {
1127
+ name: "redeploy_project_apps",
1128
+ description: `Redeploy all applications in a project.`,
1129
+ inputSchema: {
1130
+ type: "object" as const,
1131
+ properties: {
1132
+ projectUuid: {
1133
+ type: "string" as const,
1134
+ description: "Project UUID",
1135
+ },
1136
+ force: {
1137
+ type: "boolean" as const,
1138
+ description: "Force rebuild without cache",
1139
+ default: false,
1140
+ },
1141
+ },
1142
+ required: ["projectUuid"],
1143
+ },
1144
+ },
1145
+ {
1146
+ name: "stop_all_apps",
1147
+ description: `Emergency stop all running applications.
1148
+
1149
+ WARNING: This will stop ALL running applications across all projects.`,
1150
+ inputSchema: {
1151
+ type: "object" as const,
1152
+ properties: {},
1153
+ },
1154
+ },
1155
+
1156
+ // ===========================================================================
1157
+ // Network Diagnostics
1158
+ // ===========================================================================
1159
+ {
1160
+ name: "inspect_network",
1161
+ description: `Inspect Docker container network environment for an application.
1162
+
1163
+ Returns /etc/hosts, DNS resolution, network env vars, interfaces,
1164
+ and optionally tests connectivity to other services.
1165
+ Essential for debugging docker-compose networking issues.`,
1166
+ inputSchema: {
1167
+ type: "object" as const,
562
1168
  properties: {
563
1169
  uuid: {
564
- type: 'string' as const,
565
- description: 'Application UUID',
566
- format: 'uuid'
567
- }
568
- },
569
- required: ['uuid']
570
- }
571
- }
572
- ]
1170
+ type: "string" as const,
1171
+ description: "Application UUID",
1172
+ },
1173
+ servicesToTest: {
1174
+ type: "array" as const,
1175
+ description:
1176
+ "Service names to test connectivity (e.g., ['db', 'redis', 'app'])",
1177
+ items: { type: "string" as const },
1178
+ },
1179
+ },
1180
+ required: ["uuid"],
1181
+ },
1182
+ },
1183
+ {
1184
+ name: "analyze_deploy_failure",
1185
+ description: `Analyze a failed deployment by inspecting build logs.
1186
+
1187
+ Automatically extracts error lines, categorizes the failure type
1188
+ (build_error, install_error, docker_error, network_error, timeout),
1189
+ and suggests fixes.`,
1190
+ inputSchema: {
1191
+ type: "object" as const,
1192
+ properties: {
1193
+ deploymentUuid: {
1194
+ type: "string" as const,
1195
+ description: "Deployment UUID of the failed deployment",
1196
+ },
1197
+ },
1198
+ required: ["deploymentUuid"],
1199
+ },
1200
+ },
1201
+ ];