Skip to main content
Glama
README.md15.6 kB
# Liara MCP Server > **Note**: This is an **unofficial** MCP server for the Liara cloud platform. It is not affiliated with or endorsed by Liara. A Model Context Protocol (MCP) server for the Liara cloud platform. This server enables AI assistants to deploy and manage applications, databases, and infrastructure on Liara through natural language. <div align="center"> <img src="assets/liara-mcp-logo.jpg" alt="Liara MCP Server" width="600"> </div> ## Features ### Current Capabilities - **App Management**: Create, deploy, start, stop, restart, and delete apps across 14+ platforms - **Environment Variables**: Set and update environment variables for apps - **Deployment**: Deploy releases, upload sources, rollback to previous versions - **Database Management**: Create, manage, and backup databases (MySQL, PostgreSQL, MongoDB, Redis, etc.) - **Object Storage**: Manage S3-compatible storage buckets and objects - **DNS Management**: Complete DNS zone and record management - **Domain Management**: Add, remove, and verify domains for apps - **Disk Management**: Create and manage disks with FTP access - **Mail Servers**: Create and manage mail servers, send emails - **Virtual Machines (IaaS)**: Full VM lifecycle management with snapshots - **Network Management**: Create and manage networks for VMs - **Observability**: Retrieve app metrics and logs - **Plans**: List and view available resource plans ### Supported Platforms Node.js, Next.js, Laravel, PHP, Django, Flask, .NET, Static sites, React, Angular, Vue, Docker, Python, Go ### Supported Databases MariaDB, MySQL, PostgreSQL, MSSQL, MongoDB, Redis, ElasticSearch, RabbitMQ ## Installation ```bash npm install -g liara-mcp ``` Or use directly with npx (no installation required). ## Configuration The server supports multiple ways to configure your API token: ### Option 1: Environment Variables (Recommended for MCP clients) Set the token directly in your MCP client configuration (see Usage section below). ### Option 2: .env File (For local development) 1. Copy the example environment file: ```bash cp .env.example .env ``` 2. Configure your Liara API credentials in `.env`: ``` LIARA_API_TOKEN=your_api_token_here LIARA_TEAM_ID=optional_team_id LIARA_API_BASE_URL=https://api.iran.liara.ir ``` The server automatically loads `.env` files using dotenv, so no additional setup is required. ### Getting Your API Token 1. Go directly to the [API section](https://console.liara.ir/API) in Liara Console (or log in to [Liara Console](https://console.liara.ir) and navigate to the API section) 2. Select an expiration timeline for your API key (options: 1 hour, 1 day, 7 days, 1 month, 6 months, or 1 year) 3. Click "Create new key" (ساخت کلید جدید) to generate your API token 4. Copy the generated token immediately - it will only be shown once ### Team ID (Optional) If you're working with a team account, you can find your Team ID in the API section of the Liara console when viewing your team. ## Usage ### With Claude Desktop / Cursor / VS Code Add the following to your MCP configuration file: - **Claude Desktop:** `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows) - **Cursor:** `.cursor/mcp.json` ```json { "mcpServers": { "liara": { "command": "npx", "args": ["-y", "liara-mcp"], "env": { "LIARA_API_TOKEN": "your_api_token_here" } } } } ``` **Alternative Configuration (For nvm/fnm users):** If you're using **nvm** or **fnm** to manage Node.js versions, use this configuration instead to avoid PATH issues: ```json { "mcpServers": { "liara": { "command": "/bin/zsh", "args": [ "-c", "source ~/.nvm/nvm.sh && npx -y liara-mcp" ], "env": { "LIARA_API_TOKEN": "your_api_token_here" } } } } ``` **For bash users**, replace `/bin/zsh` with `/bin/bash` and `~/.nvm/nvm.sh` with your nvm init script path. **For fnm users**: ```json { "mcpServers": { "liara": { "command": "/bin/zsh", "args": [ "-c", "eval \"$(fnm env --use-on-cd --shell zsh)\" && npx -y liara-mcp" ], "env": { "LIARA_API_TOKEN": "your_api_token_here" } } } } ``` ### Why Use the Alternative Configuration? Many IDE and editor applications (like Claude Desktop, Cursor, Windsurf, etc.) start MCP servers in a **restricted environment** without your shell's PATH configuration. This causes the error: ``` Error: failed to create mcp stdio client: exec: "npx": executable file not found in $PATH ``` **The problem:** When you use nvm/fnm, Node.js and npx are installed in version-specific directories that are added to PATH by your shell initialization scripts (`~/.zshrc`, `~/.bashrc`, etc.). However, MCP clients don't load these files, so they can't find npx. **The solution:** Using a shell wrapper (`/bin/zsh -c` or `/bin/bash -c`) explicitly sources the nvm/fnm initialization script before running npx. This ensures the Node.js environment is properly configured. **When to use each:** - **Basic config**: If you installed Node.js via system package manager (`brew`, `apt`, etc.) or official installer - **Alternative config**: If you use nvm, nodenv, fnm, or similar version managers ### Troubleshooting: PATH Issues (nvm/nodenv users) If you see `spawn npx ENOENT` error, run the setup wizard: ```bash npx liara-mcp-setup ``` This will generate the correct configuration with absolute paths for your system. ### Available Tools #### App Management - `liara_list_apps` - List all apps - `liara_get_app` - Get app details - `liara_create_app` - Create a new app - `liara_delete_app` - Delete an app - `liara_start_app` - Start an app - `liara_stop_app` - Stop an app - `liara_restart_app` - Restart an app - `liara_resize_app` - Change app plan #### Environment Variables - `liara_set_env_vars` - Set environment variables (single or multiple) - `liara_get_env_vars` - Get all environment variables - `liara_delete_env_vars` - Delete environment variables (single or multiple) #### Deployment - `liara_upload_source` - Upload source code for deployment - `liara_deploy_release` - Deploy a release - `liara_list_releases` - List all releases - `liara_get_release` - Get release details - `liara_rollback_release` - Rollback to a previous release - `liara_list_sources` - List uploaded sources - `liara_delete_source` - Delete an uploaded source #### Database Management - `liara_list_databases` - List all databases - `liara_get_database` - Get database details - `liara_create_database` - Create a new database - `liara_delete_database` - Delete a database - `liara_start_database` - Start a database - `liara_stop_database` - Stop a database - `liara_restart_database` - Restart a database - `liara_get_database_connection` - Get database connection info (host, port, credentials). Tries multiple API endpoints to retrieve complete connection info including passwords. Returns warnings if password is not available. - `liara_reset_database_password` - Reset or update database password. If newPassword is not provided, generates a new random password. - `liara_update_database` - Update database settings (plan/resize or version) - `liara_create_backup` - Create a database backup - `liara_list_backups` - List database backups - `liara_get_backup_download_url` - Get backup download URL - `liara_restore_backup` - Restore database from backup - `liara_delete_backup` - Delete a database backup #### Object Storage - `liara_list_buckets` - List all buckets - `liara_get_bucket` - Get bucket details - `liara_create_bucket` - Create a new bucket - `liara_delete_bucket` - Delete a bucket - `liara_get_bucket_credentials` - Get S3 credentials for a bucket - `liara_list_objects` - List objects in a bucket - `liara_upload_object` - Upload an object to a bucket - `liara_get_object_download_url` - Get download URL for an object - `liara_delete_object` - Delete an object from a bucket #### App Settings - `liara_set_zero_downtime` - Enable/disable zero-downtime deployment - `liara_set_default_subdomain` - Enable/disable default subdomain - `liara_set_fixed_ip` - Enable/disable static IP - `liara_set_read_only` - Enable/disable read-only mode #### Disk Management - `liara_list_disks` - List disks for an app - `liara_get_disk` - Get disk details - `liara_create_disk` - Create a new disk - `liara_delete_disk` - Delete a disk - `liara_resize_disk` - Resize a disk - `liara_create_ftp_access` - Create FTP access for a disk - `liara_list_ftp_accesses` - List FTP accesses for a disk - `liara_delete_ftp_access` - Delete FTP access #### DNS Management - `liara_list_zones` - List all DNS zones - `liara_get_zone` - Get zone details - `liara_create_zone` - Create a DNS zone - `liara_delete_zone` - Delete a DNS zone - `liara_list_dns_records` - List DNS records - `liara_create_dns_record` - Create a DNS record - `liara_get_dns_record` - Get DNS record details - `liara_update_dns_record` - Update a DNS record - `liara_delete_dns_record` - Delete a DNS record #### Domain Management - `liara_list_domains` - List all domains - `liara_get_domain` - Get domain details - `liara_add_domain` - Add a domain to an app - `liara_remove_domain` - Remove a domain from an app #### Mail Server - `liara_list_mail_servers` - List all mail servers - `liara_get_mail_server` - Get mail server details - `liara_create_mail_server` - Create a mail server - `liara_delete_mail_server` - Delete a mail server - `liara_start_mail_server` - Start a mail server - `liara_stop_mail_server` - Stop a mail server - `liara_restart_mail_server` - Restart a mail server - `liara_send_email` - Send an email #### Virtual Machines (IaaS) - `liara_list_vms` - List all VMs - `liara_get_vm` - Get VM details - `liara_create_vm` - Create a new VM - `liara_start_vm` - Start a VM - `liara_stop_vm` - Stop a VM - `liara_restart_vm` - Restart a VM - `liara_delete_vm` - Delete a VM - `liara_resize_vm` - Resize a VM - `liara_create_snapshot` - Create a VM snapshot - `liara_list_snapshots` - List VM snapshots - `liara_restore_snapshot` - Restore VM from snapshot - `liara_delete_snapshot` - Delete a VM snapshot - `liara_attach_network` - Attach network to VM - `liara_detach_network` - Detach network from VM #### Network Management - `liara_list_networks` - List all networks - `liara_get_network` - Get network details - `liara_create_network` - Create a network - `liara_delete_network` - Delete a network #### Observability - `liara_get_metrics` - Get app metrics - `liara_get_logs` - Get app logs #### Plans - `liara_list_plans` - List available plans - `liara_get_plan` - Get plan details #### User - `liara_get_user` - Get user information ## Examples ### Example Conversations **Create and deploy an app:** ``` User: Create a Node.js app called "my-api" with the basic plan Assistant: [Uses liara_create_app tool] User: Set the NODE_ENV to production for my-api Assistant: [Uses liara_set_env_var tool] User: Start the app Assistant: [Uses liara_start_app tool] ``` **Create a database:** ``` User: Create a PostgreSQL database called "my-db" with the starter plan Assistant: [Uses liara_create_database tool] User: Create a backup of my-db Assistant: [Uses liara_create_backup tool] ``` **Get database credentials:** ``` User: Get connection info for my-db Assistant: [Uses liara_get_database_connection tool] Returns: host, port, username, password, connection string Includes warnings if password is not available from API User: Reset the password for my-db Assistant: [Uses liara_reset_database_password tool] Generates new password and returns it in the response ``` **Manage storage:** ``` User: Create a bucket called "my-files" Assistant: [Uses liara_create_bucket tool] User: Get the S3 credentials for my-files Assistant: [Uses liara_get_bucket_credentials tool] ``` ## Development ```bash # Watch mode for development npm run dev # Type checking npm run type-check # Build npm run build # Clean build artifacts npm run clean ``` ## Project Structure ``` liara-mcp/ ├── src/ │ ├── index.ts # MCP server entry point │ ├── api/ │ │ ├── client.ts # Liara API client │ │ └── types.ts # TypeScript types │ ├── services/ │ │ ├── apps.ts # App management │ │ ├── databases.ts # Database management │ │ ├── storage.ts # Object storage │ │ ├── deployment.ts # Deployment operations │ │ ├── environment.ts # Environment variables │ │ └── plans.ts # Plan information │ └── utils/ │ └── errors.ts # Error handling & validation ├── package.json ├── tsconfig.json └── README.md ``` ## Error Handling The server provides user-friendly error messages for common scenarios: - Invalid API token - Missing required parameters - Resource not found - API rate limiting - Network connectivity issues ## Requirements - Node.js >= 18.0.0 - Valid Liara API token ## License MIT ## API Coverage This MCP server implements comprehensive coverage of the [Liara API](https://openapi.liara.ir), including: ### Implemented Services (15 modules, 100 tools) - **Apps** - Full lifecycle management (create, deploy, start, stop, restart, resize) - **Databases** - Complete database management with backup/restore (8 database types) - **Deployment** - Source upload, release management, rollback - **Environment Variables** - Set, get, delete environment variables - **Object Storage** - S3-compatible bucket and object management - **Disks** - Disk management with FTP access - **DNS** - Complete DNS zone and record management - **Domains** - Domain management and verification - **Mail Servers** - Mail server management and email sending - **Virtual Machines (IaaS)** - VM lifecycle, snapshots, network attachment - **Networks** - Network management for VMs - **Observability** - Metrics and logs retrieval - **Plans** - Resource plan information - **Settings** - App configuration (zero-downtime, subdomain, IP, read-only) - **User** - User account information ### API Documentation Reference This implementation is based on the [Liara OpenAPI specification](https://openapi.liara.ir) and covers: - All major platform services (PaaS, DBaaS, IaaS, Object Storage, DNS, Mail) - CI/CD capabilities through deployment tools - Complete resource lifecycle management - Error handling aligned with Liara API responses ## Resources - [Liara Documentation](https://docs.liara.ir) - [Liara API Reference](https://openapi.liara.ir) - [Liara Console](https://console.liara.ir) - [Model Context Protocol](https://modelcontextprotocol.io) ## Disclaimer This is an **unofficial** MCP server implementation for Liara. It is: - Not affiliated with, endorsed by, or supported by Liara - Maintained by the community - Provided as-is without warranty For official Liara support, please contact [Liara Support](https://liara.ir). ## Contributing Contributions are welcome! Please feel free to submit issues or pull requests on [GitHub](https://github.com/razavioo/liara-mcp). ## Support For issues related to: - **This MCP server**: Open an issue on [GitHub](https://github.com/razavioo/liara-mcp/issues) - **Liara platform**: Contact [Liara Support](https://liara.ir) - **MCP protocol**: See [MCP Documentation](https://modelcontextprotocol.io)

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/razavioo/liara-mcp'

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