# Coolify MCP Server A robust TypeScript MCP (Model Context Protocol) server for integrating with Coolify, the self-hostable alternative to Netlify and Vercel. ## Features - **Complete Coolify API Integration**: Manage applications, databases, servers, projects, and services - **Type-Safe**: Full TypeScript support with comprehensive type definitions - **MCP Protocol**: Compatible with Claude and other MCP clients - **Resource Access**: Expose Coolify resources through MCP resource endpoints - **Tool Support**: Comprehensive set of tools for Coolify operations ## Installation ```bash npm install npm run build ``` ## Configuration ### Environment Variables The server requires environment variables to connect to your Coolify instance: ```bash export COOLIFY_API_URL="http://localhost:8000" export COOLIFY_API_TOKEN="your-api-token-here" export COOLIFY_TEAM_ID="optional-team-id" # Optional ``` Or create a `.env` file: ```env COOLIFY_API_URL=http://localhost:8000 COOLIFY_API_TOKEN=your-api-token-here COOLIFY_TEAM_ID=optional-team-id ``` ### MCP Client Configuration #### Claude Desktop Add the server to your Claude Desktop configuration file: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%/Claude/claude_desktop_config.json` ```json { "mcpServers": { "coolify": { "command": "node", "args": ["/path/to/coolify-mcp-server/dist/index.js"], "env": { "COOLIFY_API_URL": "http://localhost:8000", "COOLIFY_API_TOKEN": "your-api-token-here", "COOLIFY_TEAM_ID": "optional-team-id" } } } } ``` #### Alternative: NPX Usage If you publish to npm, users can run via npx: ```json { "mcpServers": { "coolify": { "command": "npx", "args": ["@joshuarileydev/coolify-mcp-server", "--yes"], "env": { "COOLIFY_API_URL": "http://localhost:8000", "COOLIFY_API_TOKEN": "your-api-token-here", "COOLIFY_TEAM_ID": "optional-team-id" } } } } ``` Or use the executable name directly: ```json { "mcpServers": { "coolify": { "command": "npx", "args": ["coolify-mcp-server", "--yes"], "env": { "COOLIFY_API_URL": "http://localhost:8000", "COOLIFY_API_TOKEN": "your-api-token-here", "COOLIFY_TEAM_ID": "optional-team-id" } } } } ``` #### Development Setup For development, you can use the TypeScript source directly: ```json { "mcpServers": { "coolify": { "command": "npx", "args": ["tsx", "/path/to/coolify-mcp-server/src/index.ts"], "env": { "COOLIFY_API_URL": "http://localhost:8000", "COOLIFY_API_TOKEN": "your-api-token-here", "COOLIFY_TEAM_ID": "optional-team-id" } } } } ``` #### Other MCP Clients For other MCP clients that support environment variables, ensure the following variables are set: - `COOLIFY_API_URL` (required) - `COOLIFY_API_TOKEN` (required) - `COOLIFY_TEAM_ID` (optional) **Example shell script:** ```bash #!/bin/bash export COOLIFY_API_URL="http://localhost:8000" export COOLIFY_API_TOKEN="your-api-token-here" export COOLIFY_TEAM_ID="your-team-id" node /path/to/coolify-mcp-server/dist/index.js ``` ### Available Tools #### Applications - `list_applications` - List all applications - `get_application` - Get application details - `create_application` - Create new application - `start_application` - Start an application - `stop_application` - Stop an application - `restart_application` - Restart an application - `deploy_application` - Deploy an application #### Databases - `list_databases` - List all databases - `create_database` - Create new database #### Servers - `list_servers` - List all servers - `create_server` - Create new server - `validate_server` - Validate server connection #### Projects - `list_projects` - List all projects - `create_project` - Create new project #### Services - `list_services` - List all services - `start_service` - Start a service - `stop_service` - Stop a service #### System - `get_version` - Get Coolify version ### Available Resources The server exposes these MCP resources: - `coolify://applications` - All applications - `coolify://databases` - All databases - `coolify://servers` - All servers - `coolify://projects` - All projects - `coolify://services` - All services - `coolify://teams` - All teams ## API Token Setup 1. Log into your Coolify instance 2. Navigate to "Keys & Tokens" > "API tokens" 3. Click "Create New Token" 4. Choose appropriate permissions: - `read-only`: Read data only - `read:sensitive`: Read with sensitive data - `*`: Full access (recommended for MCP server) 5. Copy the generated token ### Security Note When using the MCP server with Claude Desktop or other clients, your API token will be stored in the configuration file. Ensure this file has appropriate permissions: ```bash # macOS/Linux chmod 600 ~/Library/Application\ Support/Claude/claude_desktop_config.json # Or set environment variables in your shell profile instead echo 'export COOLIFY_API_TOKEN="your-token-here"' >> ~/.bashrc ``` ## Development ```bash # Install dependencies npm install # Run in development mode (requires env vars) COOLIFY_API_URL=http://localhost:8000 COOLIFY_API_TOKEN=your-token npm run dev # Build for production npm run build # Run built version npm start # Lint code npm run lint # Type check npm run typecheck ``` ## Troubleshooting ### Common Issues 1. **"COOLIFY_API_URL and COOLIFY_API_TOKEN environment variables are required"** - Ensure environment variables are set before starting the server - Check that your `.env` file is in the correct location - Verify variable names are spelled correctly 2. **"Tool execution failed: Request failed"** - Verify your Coolify instance is running and accessible - Check that the API URL is correct (include protocol: `http://` or `https://`) - Ensure your API token has the necessary permissions 3. **MCP server not appearing in Claude Desktop** - Restart Claude Desktop after updating configuration - Check the configuration file path is correct for your OS - Verify JSON syntax in the configuration file ### Debug Mode To see detailed error messages, run the server with debug output: ```bash DEBUG=* node dist/index.js ``` ## License MIT