@masonator/coolify-mcp 0.2.16 → 0.2.18

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 (33) hide show
  1. package/package.json +5 -3
  2. package/dist/__tests__/coolify-client.test.d.ts +0 -1
  3. package/dist/__tests__/coolify-client.test.js +0 -208
  4. package/dist/__tests__/mcp-server.test.d.ts +0 -1
  5. package/dist/__tests__/mcp-server.test.js +0 -282
  6. package/dist/__tests__/resources/application-resources.test.d.ts +0 -1
  7. package/dist/__tests__/resources/application-resources.test.js +0 -33
  8. package/dist/__tests__/resources/database-resources.test.d.ts +0 -1
  9. package/dist/__tests__/resources/database-resources.test.js +0 -68
  10. package/dist/__tests__/resources/deployment-resources.test.d.ts +0 -1
  11. package/dist/__tests__/resources/deployment-resources.test.js +0 -46
  12. package/dist/__tests__/resources/service-resources.test.d.ts +0 -1
  13. package/dist/__tests__/resources/service-resources.test.js +0 -76
  14. package/dist/index.cjs +0 -1403
  15. package/dist/index.d.ts +0 -2
  16. package/dist/lib/coolify-client.d.ts +0 -44
  17. package/dist/lib/coolify-client.js +0 -161
  18. package/dist/lib/mcp-server.d.ts +0 -56
  19. package/dist/lib/mcp-server.js +0 -423
  20. package/dist/lib/resource.d.ts +0 -13
  21. package/dist/lib/resource.js +0 -25
  22. package/dist/resources/application-resources.d.ts +0 -14
  23. package/dist/resources/application-resources.js +0 -55
  24. package/dist/resources/database-resources.d.ts +0 -17
  25. package/dist/resources/database-resources.js +0 -51
  26. package/dist/resources/deployment-resources.d.ts +0 -12
  27. package/dist/resources/deployment-resources.js +0 -44
  28. package/dist/resources/index.d.ts +0 -4
  29. package/dist/resources/index.js +0 -4
  30. package/dist/resources/service-resources.d.ts +0 -15
  31. package/dist/resources/service-resources.js +0 -51
  32. package/dist/types/coolify.d.ts +0 -228
  33. package/dist/types/coolify.js +0 -1
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
@@ -1,44 +0,0 @@
1
- import { CoolifyConfig, ServerInfo, ServerResources, ServerDomain, ValidationResponse, Project, CreateProjectRequest, UpdateProjectRequest, Environment, Deployment, Database, DatabaseUpdateRequest, Service, CreateServiceRequest, DeleteServiceOptions } from '../types/coolify.js';
2
- export declare class CoolifyClient {
3
- private baseUrl;
4
- private accessToken;
5
- constructor(config: CoolifyConfig);
6
- private request;
7
- listServers(): Promise<ServerInfo[]>;
8
- getServer(uuid: string): Promise<ServerInfo>;
9
- getServerResources(uuid: string): Promise<ServerResources>;
10
- getServerDomains(uuid: string): Promise<ServerDomain[]>;
11
- validateServer(uuid: string): Promise<ValidationResponse>;
12
- validateConnection(): Promise<void>;
13
- listProjects(): Promise<Project[]>;
14
- getProject(uuid: string): Promise<Project>;
15
- createProject(project: CreateProjectRequest): Promise<{
16
- uuid: string;
17
- }>;
18
- updateProject(uuid: string, project: UpdateProjectRequest): Promise<Project>;
19
- deleteProject(uuid: string): Promise<{
20
- message: string;
21
- }>;
22
- getProjectEnvironment(projectUuid: string, environmentNameOrUuid: string): Promise<Environment>;
23
- deployApplication(uuid: string): Promise<Deployment>;
24
- listDatabases(): Promise<Database[]>;
25
- getDatabase(uuid: string): Promise<Database>;
26
- updateDatabase(uuid: string, data: DatabaseUpdateRequest): Promise<Database>;
27
- deleteDatabase(uuid: string, options?: {
28
- deleteConfigurations?: boolean;
29
- deleteVolumes?: boolean;
30
- dockerCleanup?: boolean;
31
- deleteConnectedNetworks?: boolean;
32
- }): Promise<{
33
- message: string;
34
- }>;
35
- listServices(): Promise<Service[]>;
36
- getService(uuid: string): Promise<Service>;
37
- createService(data: CreateServiceRequest): Promise<{
38
- uuid: string;
39
- domains: string[];
40
- }>;
41
- deleteService(uuid: string, options?: DeleteServiceOptions): Promise<{
42
- message: string;
43
- }>;
44
- }
@@ -1,161 +0,0 @@
1
- export class CoolifyClient {
2
- baseUrl;
3
- accessToken;
4
- constructor(config) {
5
- if (!config.baseUrl) {
6
- throw new Error('Coolify base URL is required');
7
- }
8
- if (!config.accessToken) {
9
- throw new Error('Coolify access token is required');
10
- }
11
- this.baseUrl = config.baseUrl.replace(/\/$/, '');
12
- this.accessToken = config.accessToken;
13
- }
14
- async request(path, options = {}) {
15
- try {
16
- const url = `${this.baseUrl}/api/v1${path}`;
17
- const response = await fetch(url, {
18
- headers: {
19
- 'Content-Type': 'application/json',
20
- Authorization: `Bearer ${this.accessToken}`,
21
- },
22
- ...options,
23
- });
24
- const data = await response.json();
25
- if (!response.ok) {
26
- const error = data;
27
- throw new Error(error.message || `HTTP ${response.status}: ${response.statusText}`);
28
- }
29
- return data;
30
- }
31
- catch (error) {
32
- if (error instanceof TypeError && error.message.includes('fetch')) {
33
- throw new Error(`Failed to connect to Coolify server at ${this.baseUrl}. Please check if the server is running and the URL is correct.`);
34
- }
35
- throw error;
36
- }
37
- }
38
- async listServers() {
39
- return this.request('/servers');
40
- }
41
- async getServer(uuid) {
42
- return this.request(`/servers/${uuid}`);
43
- }
44
- async getServerResources(uuid) {
45
- return this.request(`/servers/${uuid}/resources`);
46
- }
47
- async getServerDomains(uuid) {
48
- return this.request(`/servers/${uuid}/domains`);
49
- }
50
- async validateServer(uuid) {
51
- return this.request(`/servers/${uuid}/validate`);
52
- }
53
- async validateConnection() {
54
- try {
55
- await this.listServers();
56
- }
57
- catch (error) {
58
- throw new Error(`Failed to connect to Coolify server: ${error instanceof Error ? error.message : 'Unknown error'}`);
59
- }
60
- }
61
- async listProjects() {
62
- return this.request('/projects');
63
- }
64
- async getProject(uuid) {
65
- return this.request(`/projects/${uuid}`);
66
- }
67
- async createProject(project) {
68
- return this.request('/projects', {
69
- method: 'POST',
70
- body: JSON.stringify(project),
71
- });
72
- }
73
- async updateProject(uuid, project) {
74
- return this.request(`/projects/${uuid}`, {
75
- method: 'PATCH',
76
- body: JSON.stringify(project),
77
- });
78
- }
79
- async deleteProject(uuid) {
80
- return this.request(`/projects/${uuid}`, {
81
- method: 'DELETE',
82
- });
83
- }
84
- async getProjectEnvironment(projectUuid, environmentNameOrUuid) {
85
- return this.request(`/projects/${projectUuid}/${environmentNameOrUuid}`);
86
- }
87
- async deployApplication(uuid) {
88
- const response = await this.request(`/applications/${uuid}/deploy`, {
89
- method: 'POST',
90
- });
91
- return response;
92
- }
93
- async listDatabases() {
94
- return this.request('/databases');
95
- }
96
- async getDatabase(uuid) {
97
- return this.request(`/databases/${uuid}`);
98
- }
99
- async updateDatabase(uuid, data) {
100
- return this.request(`/databases/${uuid}`, {
101
- method: 'PATCH',
102
- body: JSON.stringify(data),
103
- });
104
- }
105
- async deleteDatabase(uuid, options) {
106
- const queryParams = new URLSearchParams();
107
- if (options) {
108
- if (options.deleteConfigurations !== undefined) {
109
- queryParams.set('delete_configurations', options.deleteConfigurations.toString());
110
- }
111
- if (options.deleteVolumes !== undefined) {
112
- queryParams.set('delete_volumes', options.deleteVolumes.toString());
113
- }
114
- if (options.dockerCleanup !== undefined) {
115
- queryParams.set('docker_cleanup', options.dockerCleanup.toString());
116
- }
117
- if (options.deleteConnectedNetworks !== undefined) {
118
- queryParams.set('delete_connected_networks', options.deleteConnectedNetworks.toString());
119
- }
120
- }
121
- const queryString = queryParams.toString();
122
- const url = queryString ? `/databases/${uuid}?${queryString}` : `/databases/${uuid}`;
123
- return this.request(url, {
124
- method: 'DELETE',
125
- });
126
- }
127
- async listServices() {
128
- return this.request('/services');
129
- }
130
- async getService(uuid) {
131
- return this.request(`/services/${uuid}`);
132
- }
133
- async createService(data) {
134
- return this.request('/services', {
135
- method: 'POST',
136
- body: JSON.stringify(data),
137
- });
138
- }
139
- async deleteService(uuid, options) {
140
- const queryParams = new URLSearchParams();
141
- if (options) {
142
- if (options.deleteConfigurations !== undefined) {
143
- queryParams.set('delete_configurations', options.deleteConfigurations.toString());
144
- }
145
- if (options.deleteVolumes !== undefined) {
146
- queryParams.set('delete_volumes', options.deleteVolumes.toString());
147
- }
148
- if (options.dockerCleanup !== undefined) {
149
- queryParams.set('docker_cleanup', options.dockerCleanup.toString());
150
- }
151
- if (options.deleteConnectedNetworks !== undefined) {
152
- queryParams.set('delete_connected_networks', options.deleteConnectedNetworks.toString());
153
- }
154
- }
155
- const queryString = queryParams.toString();
156
- const url = queryString ? `/services/${uuid}?${queryString}` : `/services/${uuid}`;
157
- return this.request(url, {
158
- method: 'DELETE',
159
- });
160
- }
161
- }
@@ -1,56 +0,0 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
3
- import type { ServerInfo, ServerResources, ServerDomain, ValidationResponse, Project, CreateProjectRequest, UpdateProjectRequest, Environment, Deployment, Database, DatabaseUpdateRequest, Service, CreateServiceRequest, DeleteServiceOptions } from '../types/coolify.js';
4
- export declare class CoolifyMcpServer extends McpServer {
5
- private client;
6
- constructor(config: {
7
- baseUrl: string;
8
- accessToken: string;
9
- });
10
- private setupTools;
11
- connect(transport: Transport): Promise<void>;
12
- list_servers(): Promise<ServerInfo[]>;
13
- get_server(uuid: string): Promise<ServerInfo>;
14
- get_server_resources(uuid: string): Promise<ServerResources>;
15
- get_server_domains(uuid: string): Promise<ServerDomain[]>;
16
- validate_server(uuid: string): Promise<ValidationResponse>;
17
- list_projects(): Promise<Project[]>;
18
- get_project(uuid: string): Promise<Project>;
19
- create_project(project: CreateProjectRequest): Promise<{
20
- uuid: string;
21
- }>;
22
- update_project(uuid: string, project: UpdateProjectRequest): Promise<Project>;
23
- delete_project(uuid: string): Promise<{
24
- message: string;
25
- }>;
26
- get_project_environment(projectUuid: string, environmentNameOrUuid: string): Promise<Environment>;
27
- deploy_application(params: {
28
- uuid: string;
29
- }): Promise<Deployment>;
30
- list_databases(): Promise<Database[]>;
31
- get_database(uuid: string): Promise<Database>;
32
- update_database(uuid: string, data: DatabaseUpdateRequest): Promise<Database>;
33
- delete_database(uuid: string, options?: {
34
- deleteConfigurations?: boolean;
35
- deleteVolumes?: boolean;
36
- dockerCleanup?: boolean;
37
- deleteConnectedNetworks?: boolean;
38
- }): Promise<{
39
- message: string;
40
- }>;
41
- list_services(): Promise<Service[]>;
42
- get_service(uuid: string): Promise<Service>;
43
- create_service(data: CreateServiceRequest): Promise<{
44
- uuid: string;
45
- domains: string[];
46
- }>;
47
- delete_service(uuid: string, options?: DeleteServiceOptions): Promise<{
48
- message: string;
49
- }>;
50
- resources_list(): Promise<{
51
- resources: string[];
52
- }>;
53
- prompts_list(): Promise<{
54
- prompts: string[];
55
- }>;
56
- }
@@ -1,423 +0,0 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { CoolifyClient } from './coolify-client.js';
3
- import debug from 'debug';
4
- import { z } from 'zod';
5
- const log = debug('coolify:mcp');
6
- // Define valid service types
7
- const serviceTypes = [
8
- 'activepieces',
9
- 'appsmith',
10
- 'appwrite',
11
- 'authentik',
12
- 'babybuddy',
13
- 'budge',
14
- 'changedetection',
15
- 'chatwoot',
16
- 'classicpress-with-mariadb',
17
- 'classicpress-with-mysql',
18
- 'classicpress-without-database',
19
- 'cloudflared',
20
- 'code-server',
21
- 'dashboard',
22
- 'directus',
23
- 'directus-with-postgresql',
24
- 'docker-registry',
25
- 'docuseal',
26
- 'docuseal-with-postgres',
27
- 'dokuwiki',
28
- 'duplicati',
29
- 'emby',
30
- 'embystat',
31
- 'fider',
32
- 'filebrowser',
33
- 'firefly',
34
- 'formbricks',
35
- 'ghost',
36
- 'gitea',
37
- 'gitea-with-mariadb',
38
- 'gitea-with-mysql',
39
- 'gitea-with-postgresql',
40
- 'glance',
41
- 'glances',
42
- 'glitchtip',
43
- 'grafana',
44
- 'grafana-with-postgresql',
45
- 'grocy',
46
- 'heimdall',
47
- 'homepage',
48
- 'jellyfin',
49
- 'kuzzle',
50
- 'listmonk',
51
- 'logto',
52
- 'mediawiki',
53
- 'meilisearch',
54
- 'metabase',
55
- 'metube',
56
- 'minio',
57
- 'moodle',
58
- 'n8n',
59
- 'n8n-with-postgresql',
60
- 'next-image-transformation',
61
- 'nextcloud',
62
- 'nocodb',
63
- 'odoo',
64
- 'openblocks',
65
- 'pairdrop',
66
- 'penpot',
67
- 'phpmyadmin',
68
- 'pocketbase',
69
- 'posthog',
70
- 'reactive-resume',
71
- 'rocketchat',
72
- 'shlink',
73
- 'slash',
74
- 'snapdrop',
75
- 'statusnook',
76
- 'stirling-pdf',
77
- 'supabase',
78
- 'syncthing',
79
- 'tolgee',
80
- 'trigger',
81
- 'trigger-with-external-database',
82
- 'twenty',
83
- 'umami',
84
- 'unleash-with-postgresql',
85
- 'unleash-without-database',
86
- 'uptime-kuma',
87
- 'vaultwarden',
88
- 'vikunja',
89
- 'weblate',
90
- 'whoogle',
91
- 'wordpress-with-mariadb',
92
- 'wordpress-with-mysql',
93
- 'wordpress-without-database'
94
- ];
95
- export class CoolifyMcpServer extends McpServer {
96
- client;
97
- constructor(config) {
98
- super({
99
- name: 'coolify',
100
- version: '0.1.18',
101
- capabilities: {
102
- tools: true,
103
- resources: true,
104
- prompts: true
105
- }
106
- });
107
- log('Initializing server with config: %o', config);
108
- this.client = new CoolifyClient(config);
109
- this.setupTools();
110
- }
111
- setupTools() {
112
- log('Setting up tools');
113
- this.tool('list_servers', 'List all Coolify servers', {}, async (_args, _extra) => {
114
- const servers = await this.client.listServers();
115
- return {
116
- content: [{ type: 'text', text: JSON.stringify(servers, null, 2) }]
117
- };
118
- });
119
- this.tool('get_server', 'Get details about a specific Coolify server', {
120
- uuid: z.string().describe('UUID of the server to get details for')
121
- }, async (args) => {
122
- const server = await this.client.getServer(args.uuid);
123
- return {
124
- content: [{ type: 'text', text: JSON.stringify(server, null, 2) }]
125
- };
126
- });
127
- this.tool('get_server_resources', 'Get the current resources running on a specific Coolify server', {
128
- uuid: z.string()
129
- }, async (args, _extra) => {
130
- const resources = await this.client.getServerResources(args.uuid);
131
- return {
132
- content: [{ type: 'text', text: JSON.stringify(resources, null, 2) }]
133
- };
134
- });
135
- this.tool('get_server_domains', 'Get domains for a specific Coolify server', {
136
- uuid: z.string()
137
- }, async (args, _extra) => {
138
- const domains = await this.client.getServerDomains(args.uuid);
139
- return {
140
- content: [{ type: 'text', text: JSON.stringify(domains, null, 2) }]
141
- };
142
- });
143
- this.tool('validate_server', 'Validate a specific Coolify server', {
144
- uuid: z.string()
145
- }, async (args, _extra) => {
146
- const validation = await this.client.validateServer(args.uuid);
147
- return {
148
- content: [{ type: 'text', text: JSON.stringify(validation, null, 2) }]
149
- };
150
- });
151
- this.tool('list_projects', 'List all Coolify projects', {}, async (_args, _extra) => {
152
- const projects = await this.client.listProjects();
153
- return {
154
- content: [{ type: 'text', text: JSON.stringify(projects, null, 2) }]
155
- };
156
- });
157
- this.tool('get_project', 'Get details about a specific Coolify project', {
158
- uuid: z.string()
159
- }, async (args, _extra) => {
160
- const project = await this.client.getProject(args.uuid);
161
- return {
162
- content: [{ type: 'text', text: JSON.stringify(project, null, 2) }]
163
- };
164
- });
165
- this.tool('create_project', 'Create a new Coolify project', {
166
- name: z.string(),
167
- description: z.string().optional()
168
- }, async (args, _extra) => {
169
- const result = await this.client.createProject({
170
- name: args.name,
171
- description: args.description
172
- });
173
- return {
174
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
175
- };
176
- });
177
- this.tool('update_project', 'Update an existing Coolify project', {
178
- uuid: z.string(),
179
- name: z.string(),
180
- description: z.string().optional()
181
- }, async (args, _extra) => {
182
- const { uuid, ...updateData } = args;
183
- const result = await this.client.updateProject(uuid, updateData);
184
- return {
185
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
186
- };
187
- });
188
- this.tool('delete_project', 'Delete a Coolify project', {
189
- uuid: z.string()
190
- }, async (args, _extra) => {
191
- const result = await this.client.deleteProject(args.uuid);
192
- return {
193
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
194
- };
195
- });
196
- this.tool('get_project_environment', 'Get environment details for a Coolify project', {
197
- project_uuid: z.string(),
198
- environment_name_or_uuid: z.string()
199
- }, async (args, _extra) => {
200
- const environment = await this.client.getProjectEnvironment(args.project_uuid, args.environment_name_or_uuid);
201
- return {
202
- content: [{ type: 'text', text: JSON.stringify(environment, null, 2) }]
203
- };
204
- });
205
- this.tool('list_databases', 'List all Coolify databases', {}, async (_args, _extra) => {
206
- const databases = await this.client.listDatabases();
207
- return {
208
- content: [{ type: 'text', text: JSON.stringify(databases, null, 2) }]
209
- };
210
- });
211
- this.tool('get_database', 'Get details about a specific Coolify database', {
212
- uuid: z.string()
213
- }, async (args, _extra) => {
214
- const database = await this.client.getDatabase(args.uuid);
215
- return {
216
- content: [{ type: 'text', text: JSON.stringify(database, null, 2) }]
217
- };
218
- });
219
- this.tool('update_database', 'Update a Coolify database', {
220
- uuid: z.string(),
221
- data: z.record(z.unknown())
222
- }, async (args, _extra) => {
223
- const result = await this.client.updateDatabase(args.uuid, args.data);
224
- return {
225
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
226
- };
227
- });
228
- const deleteOptionsSchema = {
229
- deleteConfigurations: z.boolean().optional(),
230
- deleteVolumes: z.boolean().optional(),
231
- dockerCleanup: z.boolean().optional(),
232
- deleteConnectedNetworks: z.boolean().optional()
233
- };
234
- this.tool('delete_database', 'Delete a Coolify database', {
235
- uuid: z.string(),
236
- options: z.object(deleteOptionsSchema).optional()
237
- }, async (args, _extra) => {
238
- const result = await this.client.deleteDatabase(args.uuid, args.options);
239
- return {
240
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
241
- };
242
- });
243
- this.tool('deploy_application', 'Deploy a Coolify application', {
244
- uuid: z.string()
245
- }, async (args, _extra) => {
246
- const result = await this.client.deployApplication(args.uuid);
247
- return {
248
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
249
- };
250
- });
251
- this.tool('list_services', 'List all Coolify services', {}, async (_args, _extra) => {
252
- const services = await this.client.listServices();
253
- return {
254
- content: [{ type: 'text', text: JSON.stringify(services, null, 2) }]
255
- };
256
- });
257
- this.tool('get_service', 'Get details about a specific Coolify service', {
258
- uuid: z.string()
259
- }, async (args, _extra) => {
260
- const service = await this.client.getService(args.uuid);
261
- return {
262
- content: [{ type: 'text', text: JSON.stringify(service, null, 2) }]
263
- };
264
- });
265
- this.tool('create_service', 'Create a new Coolify service', {
266
- type: z.enum(serviceTypes),
267
- project_uuid: z.string(),
268
- server_uuid: z.string(),
269
- name: z.string().optional(),
270
- description: z.string().optional(),
271
- environment_name: z.string().optional(),
272
- environment_uuid: z.string().optional(),
273
- destination_uuid: z.string().optional(),
274
- instant_deploy: z.boolean().optional()
275
- }, async (args, _extra) => {
276
- const result = await this.client.createService(args);
277
- return {
278
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
279
- };
280
- });
281
- this.tool('delete_service', 'Delete a Coolify service', {
282
- uuid: z.string(),
283
- options: z.object(deleteOptionsSchema).optional()
284
- }, async (args, _extra) => {
285
- const result = await this.client.deleteService(args.uuid, args.options);
286
- return {
287
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
288
- };
289
- });
290
- }
291
- async connect(transport) {
292
- log('Starting server...');
293
- log('Validating connection...');
294
- await this.client.validateConnection();
295
- await super.connect(transport);
296
- log('Server started successfully');
297
- }
298
- async list_servers() {
299
- return this.client.listServers();
300
- }
301
- async get_server(uuid) {
302
- return this.client.getServer(uuid);
303
- }
304
- async get_server_resources(uuid) {
305
- return this.client.getServerResources(uuid);
306
- }
307
- async get_server_domains(uuid) {
308
- return this.client.getServerDomains(uuid);
309
- }
310
- async validate_server(uuid) {
311
- return this.client.validateServer(uuid);
312
- }
313
- async list_projects() {
314
- return this.client.listProjects();
315
- }
316
- async get_project(uuid) {
317
- return this.client.getProject(uuid);
318
- }
319
- async create_project(project) {
320
- return this.client.createProject(project);
321
- }
322
- async update_project(uuid, project) {
323
- return this.client.updateProject(uuid, project);
324
- }
325
- async delete_project(uuid) {
326
- return this.client.deleteProject(uuid);
327
- }
328
- async get_project_environment(projectUuid, environmentNameOrUuid) {
329
- return this.client.getProjectEnvironment(projectUuid, environmentNameOrUuid);
330
- }
331
- async deploy_application(params) {
332
- return this.client.deployApplication(params.uuid);
333
- }
334
- async list_databases() {
335
- return this.client.listDatabases();
336
- }
337
- async get_database(uuid) {
338
- return this.client.getDatabase(uuid);
339
- }
340
- async update_database(uuid, data) {
341
- return this.client.updateDatabase(uuid, data);
342
- }
343
- async delete_database(uuid, options) {
344
- return this.client.deleteDatabase(uuid, options);
345
- }
346
- async list_services() {
347
- return this.client.listServices();
348
- }
349
- async get_service(uuid) {
350
- return this.client.getService(uuid);
351
- }
352
- async create_service(data) {
353
- return this.client.createService(data);
354
- }
355
- async delete_service(uuid, options) {
356
- return this.client.deleteService(uuid, options);
357
- }
358
- async resources_list() {
359
- return {
360
- resources: [
361
- 'coolify/servers/list',
362
- 'coolify/servers/{id}',
363
- 'coolify/servers/{id}/resources',
364
- 'coolify/servers/{id}/domains',
365
- 'coolify/servers/{id}/validate',
366
- 'coolify/projects/list',
367
- 'coolify/projects/{id}',
368
- 'coolify/projects/create',
369
- 'coolify/projects/{id}/update',
370
- 'coolify/projects/{id}/delete',
371
- 'coolify/projects/{id}/environments/{env}',
372
- 'coolify/databases/list',
373
- 'coolify/databases/{id}',
374
- 'coolify/databases/{id}/update',
375
- 'coolify/databases/{id}/delete',
376
- 'coolify/services/list',
377
- 'coolify/services/{id}',
378
- 'coolify/services/create',
379
- 'coolify/services/{id}/delete',
380
- 'coolify/applications/deploy/{id}'
381
- ]
382
- };
383
- }
384
- async prompts_list() {
385
- return {
386
- prompts: [
387
- 'Show me all Coolify servers in my instance',
388
- 'What\'s the status of server {uuid}?',
389
- 'Show me the resources running on server {uuid}',
390
- 'What domains are configured for server {uuid}?',
391
- 'Can you validate the connection to server {uuid}?',
392
- 'How much CPU and memory is server {uuid} using?',
393
- 'List all resources running on server {uuid}',
394
- 'Show me the current status of all servers',
395
- 'List all my Coolify projects',
396
- 'Create a new project called "{name}" with description "{description}"',
397
- 'Show me the details of project {uuid}',
398
- 'Update project {uuid} to change its name to "{name}"',
399
- 'Delete project {uuid}',
400
- 'Show me the environments in project {uuid}',
401
- 'Get details of the {env} environment in project {uuid}',
402
- 'What variables are set in the {env} environment of project {uuid}?',
403
- 'List all applications',
404
- 'Show me details of application {uuid}',
405
- 'Create a new application called "{name}"',
406
- 'Delete application {uuid}',
407
- 'Show me all running services',
408
- 'Create a new {type} service',
409
- 'What\'s the status of service {uuid}?',
410
- 'Delete service {uuid} and clean up its resources',
411
- 'List all databases',
412
- 'Show me the configuration of database {uuid}',
413
- 'Update database {uuid}',
414
- 'Delete database {uuid} and clean up volumes',
415
- 'Show me all active deployments',
416
- 'What\'s the status of deployment {uuid}?',
417
- 'Deploy application {uuid}',
418
- 'Force rebuild and deploy application {uuid}',
419
- 'List recent deployments for application {uuid}'
420
- ]
421
- };
422
- }
423
- }