Skip to main content
Glama

projects

Manage Coolify deployment projects by listing, creating, updating, or deleting them, and configure environments and resources for application deployment.

Input Schema

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

Implementation Reference

  • Core handler function implementing all operations (list, get, create, update, delete, environment, resources) for the projects tool 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}`); } }
  • MCP server registration of the 'projects' tool, including inline Zod input schema and a thin wrapper handler that calls the core projectsHandler and formats the response.
    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 }; } } );
  • Zod-based input schema defining parameters for the projects tool.
    { 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") },

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