Skip to main content
Glama

projects

Manage Coolify deployments by listing, creating, updating, deleting projects, and handling environments or resources via a structured API or CLI interface.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON request body
environmentNameOrUuidNoEnvironment name or UUID (for environment operation)
idNoProject UUID
operationYesOperation to perform

Implementation Reference

  • projectsHandler function that executes the core logic for the 'projects' tool, handling operations like list, get, create, update, delete, environment, and resources by delegating to generated API calls wrapped in safeApiCall.
    export async function projectsHandler(args: ProjectsToolArgs) { const { operation, id, environmentNameOrUuid, body } = args; switch (operation) { case 'list': return await safeApiCall(() => listProjects()); case 'get': if (!id) throw new Error('ID required for get operation'); return await safeApiCall(() => getProjectByUuid({ path: { uuid: id } })); case 'create': if (!body) throw new Error('Body required for create operation'); const createData = JSON.parse(body); return await safeApiCall(() => createProject({ body: createData })); case 'update': if (!id || !body) throw new Error('ID and body required for update operation'); const updateData = JSON.parse(body); return await safeApiCall(() => updateProjectByUuid({ path: { uuid: id }, body: updateData } as any)); case 'delete': if (!id) throw new Error('ID required for delete operation'); return await safeApiCall(() => deleteProjectByUuid({ path: { uuid: id } })); case 'environment': if (!id || !environmentNameOrUuid) throw new Error('ID and environmentNameOrUuid required for environment operation'); return await safeApiCall(() => getEnvironmentByNameOrUuid({ path: { uuid: id, environment_name_or_uuid: environmentNameOrUuid } })); case 'resources': return await safeApiCall(() => listResources()); default: throw new Error(`Unknown operation: ${operation}`); } }
  • Input schema for the 'projects' tool using Zod validation for parameters: operation, id, environmentNameOrUuid, body.
    { operation: z.enum([ 'list', 'get', 'create', 'update', 'delete', 'environment', 'resources' ]).describe("Operation to perform"), id: z.string().optional().describe("Project UUID"), environmentNameOrUuid: z.string().optional().describe("Environment name or UUID (for environment operation)"), body: z.string().optional().describe("JSON request body") },
  • Registration of the 'projects' MCP tool on the McpServer instance, providing name 'projects', Zod input schema, and an async wrapper handler that logs input, calls projectsHandler, formats output as text content, and handles errors.
    // Register projects tool with proper Zod schema format server.tool( 'projects', { operation: z.enum([ 'list', 'get', 'create', 'update', 'delete', 'environment', 'resources' ]).describe("Operation to perform"), id: z.string().optional().describe("Project UUID"), environmentNameOrUuid: z.string().optional().describe("Environment name or UUID (for environment operation)"), body: z.string().optional().describe("JSON request body") }, async ({ operation, id, environmentNameOrUuid, body }) => { try { console.error('Projects tool received args:', JSON.stringify({ operation, id, environmentNameOrUuid, body }, null, 2)); const result = await projectsHandler({ operation, id, environmentNameOrUuid, body }); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], isError: true }; } } );

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/FelixAllistar/coolify-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server