coolify_servers
Manage servers in Coolify infrastructure: list, create, retrieve, update, and delete server configurations with SSH details and metadata.
Instructions
Server CRUD operations - list, create, get, update, and delete servers
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform: list (list all servers), create (create new server), get (get server by UUID), update (update server), delete (delete server) | |
| uuid | No | Server UUID (required for get, update, delete actions) | |
| name | No | Server name (required for create, optional for update) | |
| description | No | Server description (optional for create and update) | |
| ip | No | Server IP address (required for create, optional for update) | |
| port | No | SSH port (optional for create and update, default: 22) | |
| user | No | SSH user (optional for create and update, default: root) | |
| private_key_id | No | Private key ID (optional for create action) | |
| page | No | Page number (optional for list action) | |
| per_page | No | Items per page (optional for list action) |
Implementation Reference
- src/handlers.ts:305-342 (handler)Handler function implementing the logic for the 'coolify_servers' tool. It handles CRUD operations (list, create, get, update, delete) for servers by making API calls to Coolify endpoints.async servers(action: string, args: any) { switch (action) { case 'list': const queryString = this.apiClient.buildQueryString(args); const response = await this.apiClient.get(`/servers?${queryString}`); return { content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }] }; case 'create': const createResponse = await this.apiClient.post('/servers', { name: args.name, description: args.description, ip: args.ip, port: args.port || 22, user: args.user || 'root', private_key_id: args.private_key_id, }); return { content: [{ type: 'text', text: JSON.stringify(createResponse.data, null, 2) }] }; case 'get': if (!args.uuid) throw new Error('Server UUID is required for get action'); const getResponse = await this.apiClient.get(`/servers/${args.uuid}`); return { content: [{ type: 'text', text: JSON.stringify(getResponse.data, null, 2) }] }; case 'update': if (!args.uuid) throw new Error('Server UUID is required for update action'); const updateResponse = await this.apiClient.patch(`/servers/${args.uuid}`, { name: args.name, description: args.description, ip: args.ip, port: args.port, user: args.user, }); return { content: [{ type: 'text', text: JSON.stringify(updateResponse.data, null, 2) }] }; case 'delete': if (!args.uuid) throw new Error('Server UUID is required for delete action'); await this.apiClient.delete(`/servers/${args.uuid}`); return { content: [{ type: 'text', text: 'Server deleted successfully' }] }; default: throw new Error(`Unknown servers action: ${action}`); } }
- src/tools.ts:484-534 (schema)Input schema definition for the 'coolify_servers' tool, specifying parameters for server CRUD operations.{ name: 'coolify_servers', description: 'Server CRUD operations - list, create, get, update, and delete servers', inputSchema: { type: 'object', properties: { action: { type: 'string', enum: ['list', 'create', 'get', 'update', 'delete'], description: 'Action to perform: list (list all servers), create (create new server), get (get server by UUID), update (update server), delete (delete server)' }, uuid: { type: 'string', description: 'Server UUID (required for get, update, delete actions)' }, name: { type: 'string', description: 'Server name (required for create, optional for update)' }, description: { type: 'string', description: 'Server description (optional for create and update)' }, ip: { type: 'string', description: 'Server IP address (required for create, optional for update)' }, port: { type: 'number', description: 'SSH port (optional for create and update, default: 22)' }, user: { type: 'string', description: 'SSH user (optional for create and update, default: root)' }, private_key_id: { type: 'string', description: 'Private key ID (optional for create action)' }, 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:122-123 (registration)Registration of the 'coolify_servers' tool handler in the MCP server's tool call dispatcher switch statement.case 'coolify_servers': return await this.handlers.servers(args.action, args);