coolify_projects
Manage Coolify projects by listing, creating, retrieving, updating, or deleting them through CRUD operations.
Instructions
Project CRUD operations - list, create, get, update, and delete projects
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform: list (list all projects), create (create new project), get (get project by UUID), update (update project), delete (delete project) | |
| uuid | No | Project UUID (required for get, update, delete actions) | |
| name | No | Project name (required for create, optional for update) | |
| description | No | Project description (optional for create and update) | |
| page | No | Page number (optional for list action) | |
| per_page | No | Items per page (optional for list action) |
Implementation Reference
- src/handlers.ts:54-84 (handler)The handler function that executes the coolify_projects tool logic, handling list, create, get, update, and delete actions via API calls to Coolify projects endpoint.async projects(action: string, args: any) { switch (action) { case 'list': const queryString = this.apiClient.buildQueryString(args); const response = await this.apiClient.get(`/projects?${queryString}`); return { content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }] }; case 'create': const createResponse = await this.apiClient.post('/projects', { name: args.name, description: args.description }); return { content: [{ type: 'text', text: JSON.stringify(createResponse.data, null, 2) }] }; case 'get': if (!args.uuid) throw new Error('Project UUID is required for get action'); const getResponse = await this.apiClient.get(`/projects/${args.uuid}`); return { content: [{ type: 'text', text: JSON.stringify(getResponse.data, null, 2) }] }; case 'update': if (!args.uuid) throw new Error('Project UUID is required for update action'); const updateResponse = await this.apiClient.patch(`/projects/${args.uuid}`, { name: args.name, description: args.description, }); return { content: [{ type: 'text', text: JSON.stringify(updateResponse.data, null, 2) }] }; case 'delete': if (!args.uuid) throw new Error('Project UUID is required for delete action'); await this.apiClient.delete(`/projects/${args.uuid}`); return { content: [{ type: 'text', text: 'Project deleted successfully' }] }; default: throw new Error(`Unknown projects action: ${action}`); } }
- src/tools.ts:43-77 (schema)The input schema definition for the coolify_projects tool, specifying parameters for various CRUD actions.{ name: 'coolify_projects', description: 'Project CRUD operations - list, create, get, update, and delete projects', inputSchema: { type: 'object', properties: { action: { type: 'string', enum: ['list', 'create', 'get', 'update', 'delete'], description: 'Action to perform: list (list all projects), create (create new project), get (get project by UUID), update (update project), delete (delete project)' }, uuid: { type: 'string', description: 'Project UUID (required for get, update, delete actions)' }, name: { type: 'string', description: 'Project name (required for create, optional for update)' }, description: { type: 'string', description: 'Project description (optional for create and update)' }, page: { type: 'number', description: 'Page number (optional for list action)' }, per_page: { type: 'number', description: 'Items per page (optional for list action)' }, }, required: ['action'], }, },
- src/index.ts:96-97 (registration)The switch case in handleToolCall that registers and dispatches calls to the coolify_projects handler.case 'coolify_projects': return await this.handlers.projects(args.action, args);