Skip to main content
Glama
README.mdβ€’7.02 kB
# Coolify MCP Server A Model Context Protocol (MCP) server that exposes Coolify API functionality as safe, structured tools for AI agents. This enables AI-driven app marketplaces where users can deploy applications on Coolify with a single click. ## πŸš€ Features - **Project Management**: List, create, and manage Coolify projects - **Application Lifecycle**: Create, update, delete, and manage applications - **Deployment Control**: Deploy applications and monitor their status - **Template Marketplace**: Pre-configured templates for popular applications - **Safety Guardrails**: Quota checking, name conflict detection, and resource limits - **Comprehensive Logging**: Full audit trail of all AI operations ## πŸ“‹ Prerequisites - Node.js 18+ - A running Coolify instance - Coolify API token with appropriate permissions - Docker (for running the MCP server) ## πŸ› οΈ Installation ### Option 1: Clone and Build ```bash git clone https://github.com/your-org/coolify-mcp-server.git cd coolify-mcp-server npm install npm run build ``` ### Option 2: Docker (Recommended) ```bash docker pull ghcr.io/your-org/coolify-mcp-server:latest ``` ## βš™οΈ Configuration Create a `.env` file based on `.env.example`: ```env # Required COOLIFY_API_URL=https://your-coolify-instance.com COOLIFY_API_TOKEN=your-api-token-here # Optional COOLIFY_DEFAULT_TEAM_ID= COOLIFY_MAX_APPS_PER_PROJECT=10 LOG_LEVEL=info ``` ### Getting Your Coolify API Token 1. Log into your Coolify instance 2. Go to Settings β†’ API Tokens 3. Create a new token with permissions for: - Projects: Read/Write - Applications: Read/Write/Delete - Deployments: Read/Write ## πŸƒ Running the Server ### Development ```bash npm run dev ``` ### Production ```bash npm run build npm start ``` ### Docker ```bash docker run \ -e COOLIFY_API_URL=https://coolify.example.com \ -e COOLIFY_API_TOKEN=your-token \ -e COOLIFY_MAX_APPS_PER_PROJECT=20 \ ghcr.io/your-org/coolify-mcp-server:latest ``` ## πŸ”§ MCP Client Configuration Add to your MCP client configuration: ```json { "mcpServers": { "coolify": { "command": "node", "args": ["/path/to/coolify-mcp-server/dist/index.js"], "env": { "COOLIFY_API_URL": "https://your-coolify-instance.com", "COOLIFY_API_TOKEN": "your-api-token", "COOLIFY_MAX_APPS_PER_PROJECT": "10" } } } } ``` ## πŸ“š Available Tools ### Projects - `coolify.list_projects` - List all projects - `coolify.create_project` - Create a new project ### Applications - `coolify.list_apps` - List applications in a project - `coolify.get_app` - Get application details - `coolify.create_app` - Create a new application - `coolify.update_app` - Update an application - `coolify.delete_app` - Delete an application ### Deployments - `coolify.deploy_app` - Deploy an application - `coolify.get_deployment_status` - Check deployment status - `coolify.get_deployment_logs` - Get deployment logs ### Templates - `coolify.deploy_template` - Deploy from a pre-configured template - `coolify.list_templates` - List available templates ### Safety - `coolify.check_quota` - Check project quota - `coolify.check_name_conflicts` - Check if application name is available ## 🎯 Quick Start Examples ### Deploy Plausible Analytics ```javascript // First, check if the name is available await checkNameConflicts({ projectId: "proj-123", name: "plausible-analytics" }); // Deploy the template const result = await deployTemplate({ templateName: "plausible", projectId: "proj-123", appName: "plausible-analytics", environment: { BASE_URL: "https://analytics.example.com", SECRET_KEY_BASE: "your-secret-key", POSTGRES_URL: "postgresql://..." } }); ``` ### Deploy Custom Application ```javascript // Create a new application const app = await createApp({ projectId: "proj-123", name: "my-react-app", type: "dockerfile", gitRepository: { url: "https://github.com/user/react-app.git", branch: "main" }, environment: { NODE_ENV: "production" }, ports: [3000] }); // Deploy it const deployment = await deployApp({ id: app.id }); ``` ## πŸ“¦ Available Templates | Template | Description | Type | Services | |----------|-------------|------|----------| | plausible | Privacy-friendly analytics | Docker Image | PostgreSQL | | strapi | Headless CMS | Git | PostgreSQL, MySQL | | saleor | E-commerce platform | Docker Image | PostgreSQL, Redis | | n8n | Workflow automation | Docker Image | PostgreSQL, Redis | | uptime-kuma | Monitoring tool | Docker Image | - | | gitlab | Git repository manager | Docker Image | PostgreSQL, Redis | | rocketchat | Communication platform | Docker Image | MongoDB | | bookstack | Documentation platform | Docker Image | MySQL, PostgreSQL | See [examples/tool-calls.md](./examples/tool-calls.md) for detailed examples. ## πŸ”’ Security - API tokens are stored server-side and never exposed to AI agents - All inputs are validated with strict schemas - Project-level isolation prevents cross-project access - Built-in quota and rate limiting - Comprehensive audit logging See [docs/SECURITY.md](./docs/SECURITY.md) for detailed security considerations. ## πŸ“ API Reference The MCP server exposes the following endpoints through the Model Context Protocol: ### Response Format All responses follow this structure: ```json { "success": true, "data": { ... } } ``` Or for errors: ```json { "success": false, "error": { "code": "ERROR_CODE", "message": "Human-readable error description" } } ``` ### Error Codes - `UNAUTHORIZED` - Invalid API token - `FORBIDDEN` - Insufficient permissions - `NOT_FOUND` - Resource doesn't exist - `CONFLICT` - Resource conflict (e.g., duplicate name) - `VALIDATION_ERROR` - Invalid input data - `RATE_LIMIT` - Too many requests - `QUOTA_EXCEEDED` - Project quota exceeded - `NETWORK_ERROR` - Failed to connect to Coolify - `UNKNOWN_ERROR` - Unexpected error ## 🀝 Contributing 1. Fork the repository 2. Create a feature branch: `git checkout -b feature/amazing-feature` 3. Commit your changes: `git commit -m 'Add amazing feature'` 4. Push to the branch: `git push origin feature/amazing-feature` 5. Open a Pull Request ### Development Setup ```bash # Install dependencies npm install # Run in development mode npm run dev # Run tests npm test # Lint code npm run lint # Format code npm run format ``` ## πŸ“„ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## πŸ†˜ Support - πŸ“– [Documentation](./docs/) - πŸ› [Issue Tracker](https://github.com/your-org/coolify-mcp-server/issues) - πŸ’¬ [Discussions](https://github.com/your-org/coolify-mcp-server/discussions) ## πŸ™ Acknowledgments - [Coolify](https://coolify.io) - The amazing self-hosting platform - [Model Context Protocol](https://modelcontextprotocol.io) - The protocol that makes this possible - All contributors and users of this project --- Built with ❀️ by the community

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/Thedurancode/Coolify-MCP'

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