@felixallistar/coolify-mcp
Version:
Model Context Protocol server for Coolify API integration
41 lines (40 loc) • 1.82 kB
JavaScript
import { listDeployments, getDeploymentByUuid, deployByTagOrUuid, listDeploymentsByAppUuid } from '../../generated/index.js';
import { safeApiCall } from '../../core/api-wrapper.js';
export async function deploymentsHandler(args) {
const { operation, id, applicationUuid, query } = args;
switch (operation) {
case 'list':
return await safeApiCall(() => listDeployments());
case 'get':
if (!id)
throw new Error('ID required for get operation');
return await safeApiCall(() => getDeploymentByUuid({ path: { uuid: id } }));
case 'deploy':
return await safeApiCall(() => deployByTagOrUuid({ query: query ? JSON.parse(query) : {} }));
case 'list_by_app':
if (!applicationUuid)
throw new Error('applicationUuid required for list_by_app operation');
return await safeApiCall(() => listDeploymentsByAppUuid({ path: { uuid: applicationUuid } }));
default:
throw new Error(`Unknown operation: ${operation}`);
}
}
export const deploymentsTool = {
name: "deployments_tool",
description: "Manage application deployments and deployment history",
inputSchema: {
type: "object",
properties: {
operation: {
type: "string",
description: "Operation to perform",
enum: ["list", "get", "deploy", "list_by_app"]
},
id: { type: "string", description: "Deployment UUID" },
applicationUuid: { type: "string", description: "Application UUID (for list_by_app operation)" },
query: { type: "string", description: "JSON query parameters for deploy operation" }
},
required: ["operation"]
},
handler: deploymentsHandler
};