Skip to main content
Glama
GoCoder7
by GoCoder7
README.md
# Coolify MCP Server

A **4-tool unified** Model Context Protocol (MCP) server for [Coolify](https://coolify.io/) deployment platform integration. This server enables AI assistants to interact with Coolify Self-hosted instances for application deployment, management, and monitoring.

**๐ŸŽฏ Optimized for VS Code's 128-tool limit with 87% reduction (19โ†’4 tools)**

## Features

### ๐Ÿš€ Application Management
- Deploy applications with optional force deployment and branch selection
- Get detailed application information and status
- List applications with filtering capabilities
- Start, stop, and restart applications
- Monitor deployment status and health
- Create new applications

### ๐Ÿ”ง Environment & Configuration
- Update and retrieve environment variables
- Configure domains and SSL certificates
- Retrieve application logs for debugging
- Manage sensitive and build-time variables

### ๐Ÿ–ฅ๏ธ System Management
- List and monitor servers
- Manage teams and permissions
- View deployed services (databases, caches, etc.)
- Test API connectivity and system health

### ๐Ÿ“š Built-in Documentation
- **Search Documentation**: Find relevant Coolify guides and references
- **API Reference**: Access comprehensive API documentation with examples
- **Troubleshooting Guides**: Get help for common deployment and configuration issues
- **Topic-specific Help**: Get targeted documentation for specific features

*Perfect for AI agents without Context7 MCP access - no external documentation dependencies required!*

### ๐Ÿงช Complete Testing Suite
- **100% Test Success Rate**: Comprehensive integration tests
- **Demo Environment**: Full Coolify setup with Docker Compose
- **Browser Automation**: MCP Playwright integration
- **Real API Testing**: Direct Coolify instance validation

## Prerequisites

- Node.js 18+ 
- A running Coolify Self-hosted instance
- Coolify API token with appropriate permissions

## Installation

1. **Clone or download this repository**
   ```bash
   git clone <repository-url>
   cd coolify-mcp-server
   ```

2. **Install dependencies**
   ```bash
   npm install
   ```

3. **Configure environment variables**
   ```bash
   cp .env.example .env
   # Edit .env with your Coolify instance details
   ```

4. **Build the project**
   ```bash
   npm run build
   ```

## Configuration

### Environment Variables

Create a `.env` file with the following variables:

```env
# Required: Your Coolify instance URL
COOLIFY_BASE_URL=https://your-coolify-instance.com

# Required: API token from Coolify
COOLIFY_API_TOKEN=your-api-token-here

# Optional: Team ID for scoped access
COOLIFY_TEAM_ID=your-team-id
```

### Getting Your API Token

1. Log into your Coolify dashboard
2. Go to **Settings** โ†’ **Keys & Tokens** โ†’ **API Tokens**
3. Click **Create New Token**
4. Choose permissions:
   - `read-only`: View data only
   - `read:sensitive`: View sensitive data
   - `*`: Full access (recommended for automation)
5. Copy the generated token to your `.env` file

โš ๏ธ **Security Note**: API tokens are shown only once. Store them securely and never commit them to version control.

## Usage

### Development Mode
```bash
npm run dev
```

### Production Mode
```bash
npm start
```

### Integration with AI Assistants

This MCP server provides **4 unified tools** for AI assistants, optimized for the 128-tool limit in VS Code:

#### ๐Ÿ“ฑ Application Management (`coolify_application_management`)
**Unified tool with 8 actions:**
- `deploy` - Deploy an application with optional force deployment and branch selection
- `get` - Get detailed application information
- `list` - List all applications with filtering capabilities
- `status` - Get deployment status and health
- `start` - Start an application
- `stop` - Stop an application
- `restart` - Restart an application
- `create` - Create a new application

#### โš™๏ธ Environment Configuration (`coolify_environment_configuration`) 
**Unified tool for environment and domain management:**
- `env_vars` - Update and retrieve environment variables
- `domains` - Configure domains and SSL certificates
- `logs` - Retrieve application logs for debugging

#### ๐Ÿ–ฅ๏ธ System Management (`coolify_system_management`)
**Unified tool for server and infrastructure:**
- `servers` - List and monitor servers
- `teams` - Manage teams and permissions
- `services` - View deployed services (databases, caches, etc.)
- `health_check` - Test API connectivity and system health

#### ๐Ÿ“š Documentation (`coolify_documentation`)
**Unified documentation tool with 6 actions:**
- `search` - Search built-in Coolify documentation
- `get` - Get documentation for specific topics
- `api_reference` - Get API reference documentation with examples
- `troubleshooting` - Get troubleshooting guides for common issues
- `topics` - List available documentation topics
- `api` - Get API endpoint documentation

*Perfect for AI agents without Context7 MCP access - no external documentation dependencies required!*

### Example Usage

Here are some example commands you can use with AI assistants using the **unified tools**:

**Application Management:**
```
"Deploy my application with ID 'app-123' using force deployment"
"Get details for application 'my-web-app'"
"List all running applications"
"Check the status of application 'app-456'"
"Start application 'my-backend'"
"Restart application 'frontend-app'"
```

**Environment Configuration:**
```
"Update environment variables for 'app-789': set DATABASE_URL and REDIS_URL"
"Get current environment variables for 'my-app'"
"Set the domain 'example.com' for application 'app-456' with HTTPS enabled"
"Get the logs for application 'my-web-app'"
```

**System Management:**
```
"List all servers and their status"
"Get information about teams"
"Show all running services"
"Check system health and API connectivity"
```

**Documentation:**
```
"Search documentation for 'deployment failed'"
"Get troubleshooting help for SSL certificate issues"
"Show me API reference for environment variables"
"List all available documentation topics"
"Get API documentation for applications endpoint"
```

### Documentation Features

The MCP server includes comprehensive built-in documentation accessed through the unified `coolify_documentation` tool:

```javascript
// Search for deployment-related documentation
await callTool('coolify_documentation', { action: 'search', query: 'deployment failed' });

// Get API reference for applications endpoint
await callTool('coolify_documentation', { action: 'api_reference', endpoint: 'applications' });

// Get troubleshooting help for SSL issues
await callTool('coolify_documentation', { action: 'troubleshooting', issue: 'ssl certificate' });

// List all available topics
await callTool('coolify_documentation', { action: 'topics' });

// Get general documentation on environment variables
await callTool('coolify_documentation', { action: 'get', topic: 'environment variables' });
```

**Built-in Documentation Covers:**
- API Reference with examples
- Step-by-step deployment guides
- Environment variable configuration
- Domain and SSL setup
- Common troubleshooting scenarios

## API Reference

This MCP server interacts with the Coolify API. For detailed API documentation, visit:
- [Coolify API Documentation](https://coolify.io/docs/api)
- [Coolify Documentation](https://coolify.io/docs/)

## Architecture

```
coolify-mcp-server/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts              # Main MCP server (unified version)
โ”‚   โ”œโ”€โ”€ types/
โ”‚   โ”‚   โ”œโ”€โ”€ coolify.ts        # Coolify API types
โ”‚   โ”‚   โ””โ”€โ”€ mcp.ts           # MCP tool schemas
โ”‚   โ”œโ”€โ”€ utils/
โ”‚   โ”‚   โ””โ”€โ”€ coolify-client.ts # Coolify API client
โ”‚   โ””โ”€โ”€ tools/
โ”‚       โ”œโ”€โ”€ application-unified.ts    # Unified application management
โ”‚       โ”œโ”€โ”€ environment-unified.ts    # Unified environment & domain tools
โ”‚       โ”œโ”€โ”€ system-unified.ts        # Unified system management
โ”‚       โ””โ”€โ”€ documentation-unified.ts  # Unified documentation tools
โ”œโ”€โ”€ demo-server/
โ”‚   โ”œโ”€โ”€ docker-compose.yml    # Complete Coolify demo environment
โ”‚   โ””โ”€โ”€ DEMO-SETUP.md        # Demo setup instructions
โ”œโ”€โ”€ .env.example             # Environment configuration template
โ”œโ”€โ”€ test-*.js               # Comprehensive test suites
โ”œโ”€โ”€ tsconfig.json           # TypeScript configuration
โ””โ”€โ”€ package.json           # Project dependencies
```

## Demo Environment

This project includes a **complete Coolify demo environment** for testing:

```bash
cd demo-server
docker compose up -d
```

**Includes:**
- โœ… Coolify latest version
- โœ… PostgreSQL database
- โœ… Redis cache
- โœ… Soketi WebSocket server
- โœ… Pre-configured demo users
- โœ… Web interface at http://localhost:8000

**Demo Credentials:**
- Email: `test@example.com`
- Password: `password123`

## Development

### Building
```bash
npm run build
```

### Type Checking
```bash
npm run type-check
```

### Testing Documentation Features
```bash
node test-docs.js
```

This will test all built-in documentation features without requiring a Coolify connection.

### Testing with Demo Environment
```bash
# Start the demo environment
cd demo-server && docker compose up -d

# Run comprehensive tests
npm test
```

**Test Suites:**
- `test-integration.js` - Docker environment and build tests
- `test-mcp-simple.js` - MCP server functionality tests  
- `test-web-interface.js` - Playwright browser automation tests
- `test-real-coolify.js` - Real Coolify integration tests

**Expected Results:** 100% test success rate

### Cleaning
```bash
npm run clean
```

## Supported Coolify Versions

This MCP server is designed to work with:
- Coolify v4.x (Self-hosted)
- API version: v1

## Security Considerations

- **API Tokens**: Store API tokens securely using environment variables
- **Network Access**: Ensure your Coolify instance is accessible from where this MCP server runs
- **Permissions**: Use appropriate API token permissions based on your use case
- **HTTPS**: Always use HTTPS for production Coolify instances

## Troubleshooting

### Common Issues

1. **Connection Failed**
   - Verify `COOLIFY_BASE_URL` is correct and accessible
   - Check that API token has proper permissions
   - Ensure Coolify instance is running

2. **Permission Denied**
   - Verify API token has sufficient permissions
   - Check if team ID is required for your setup

3. **Application Not Found**
   - Verify application ID is correct
   - Ensure you have access to the application

### Debug Mode

Enable debug logging by setting:
```bash
NODE_ENV=development npm run dev
```

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

## License

MIT License - see LICENSE file for details

## Support

- [Coolify Documentation](https://coolify.io/docs/)
- [Coolify GitHub](https://github.com/coollabsio/coolify)
- [Model Context Protocol](https://modelcontextprotocol.io/)

## Changelog

### v1.0.0
- โœ… **4 Unified Tools**: Optimized for VS Code's 128-tool limit
- โœ… **Complete Demo Environment**: Docker Compose setup with working Coolify instance
- โœ… **100% Test Coverage**: Comprehensive test suites with 100% success rate
- โœ… **Built-in Documentation**: No external dependencies required
- โœ… **Browser Automation**: MCP Playwright integration for testing
- โœ… **Application Management**: Deploy, manage, and monitor applications
- โœ… **Environment Configuration**: Manage env vars, domains, and logs
- โœ… **System Management**: Server, team, and service management
- โœ… **Full TypeScript Support**: Complete type safety with Zod validation

TDQS

A3.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: application management, documentation access, environment configuration, and system management. The descriptions specify unique scopes (e.g., deploy apps vs. manage environment variables vs. system-level operations), making it easy for an agent to select the correct tool without confusion.

Naming Consistency5/5

All tool names follow a consistent 'coolify_*' prefix with descriptive noun phrases (e.g., 'application_management', 'documentation', 'environment_configuration', 'system_management'). This uniform pattern enhances readability and predictability, with no deviations in style or convention across the set.

Tool Count5/5

With 4 tools, the count is well-scoped for a Coolify management server, covering core domains like applications, documentation, environment, and system. Each tool earns its place by addressing a distinct aspect of the platform, avoiding bloat or thin coverage, which is typical for a focused set of 3-15 tools.

Completeness4/5

The tool set provides comprehensive coverage for key Coolify operations, including CRUD-like actions for applications (deploy, manage), environment configuration, system management, and documentation access. A minor gap exists in not explicitly covering update or delete for non-application resources (e.g., servers or teams), but agents can likely work around this with the available tools.

Maintenance

ActivityInactive
ResponsivenessNo issues