Coolify MCP Server
The Coolify MCP Server provides comprehensive management of Coolify deployments with 100% API coverage, offering both MCP integration for AI editors and CLI commands for terminal usage.
Core Capabilities:
Applications (21 operations): Full lifecycle management including listing, creating (6 deployment types: public repos, private GitHub/GitLab, Dockerfile, Docker image, Docker Compose), updating, deleting, and control operations (start, stop, restart, logs). Includes environment variable management (list, create, update bulk/single, delete).
Services (14 operations): Deploy and manage 70+ one-click services (WordPress, Ghost, MinIO, etc.) with full lifecycle control, environment variable management, and service type queries.
Databases (13 operations): Create and manage 8 database types (PostgreSQL, MySQL, MariaDB, MongoDB, Redis, KeyDB, ClickHouse, Dragonfly) with complete lifecycle control.
Projects & Infrastructure: Manage projects (list, create, update, delete) and their environments/resources. Server management includes creation, validation, domain management, and resource monitoring.
Deployments: List all or application-specific deployments, view deployment details, and trigger new deployments with custom parameters.
Private Keys: Full management for secure repository access (list, create, update, delete).
System Administration: Monitor system health and version, enable/disable API access, view system resources, and check configuration status.
Utilities: Connectivity testing (ping) and configuration validation.
Key Features: Identical functionality through both MCP tools and CLI commands, automated API updates to stay current with Coolify.
Supports creating and managing ClickHouse databases within Coolify deployments
Enables one-click deployment and management of Ghost CMS instances through Coolify
Supports application deployment from GitHub repositories via Coolify
Provides tools for creating and managing MariaDB databases in Coolify environments
Enables deployment and management of MinIO object storage services through Coolify
Supports creation and management of MongoDB databases within Coolify deployments
Provides tools for creating and managing MySQL databases in Coolify environments
Enables creation and management of PostgreSQL databases through Coolify
Supports creation and management of Redis databases in Coolify deployments
Enables one-click deployment and management of WordPress instances through Coolify
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Coolify MCP Serverlist my applications and show their current status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DEPERECATED USE THE SKILL NOW: https://github.com/FelixAllistar/coolify-manager
Coolify MCP Server
A Model Context Protocol (MCP) server for managing Coolify deployments, providing both programmatic MCP tools and comprehensive CLI commands.
Quick Start
Option 1: MCP Integration (Recommended)
MCP (Model Control Protocol) lets you manage Coolify directly from your AI editor.
1. Add to your MCP configuration
For Cursor:
Add to ~/.cursor/mcp.json or <project_folder>/.cursor/mcp.json:
{
"mcpServers": {
"coolify-mcp": {
"command": "npx",
"args": ["-y", "@felixallistar/coolify-mcp", "--server"],
"env": {
"COOLIFY_API_URL": "https://your-coolify-instance.com",
"COOLIFY_API_TOKEN": "your-coolify-api-token"
}
}
}
}For VS Code:
Add to <project_folder>/.vscode/mcp.json:
{
"servers": {
"coolify-mcp": {
"command": "npx",
"args": ["-y", "@felixallistar/coolify-mcp", "--server"],
"env": {
"COOLIFY_API_URL": "https://your-coolify-instance.com",
"COOLIFY_API_TOKEN": "your-coolify-api-token"
},
"type": "stdio"
}
}
}🔑 Replace
your-coolify-instance.comwith your actual Coolify URL andyour-coolify-api-tokenwith your API token from Coolify Settings > API.
2. (Cursor only) Enable Coolify MCP
Open Cursor Settings (Ctrl+Shift+J) ➡ Click on MCP tab ➡ Enable coolify-mcp with the toggle
3. Start managing Coolify
In your AI chat, try commands like:
List my Coolify applications
Create a new WordPress service called "my-blog"
Deploy my app with ID "app-123"
Show me all available database typesOption 2: CLI Usage
Installation
# Install globally for CLI usage
npm install -g @felixallistar/coolify-mcp
# Test the installation
coolify-mcp --helpConfiguration
Create a .env file in your project directory:
# Required: Your Coolify instance URL (include port if needed)
COOLIFY_API_URL=https://your-coolify-instance.com
# Required: Your Coolify API token (generate in Coolify Settings > API)
COOLIFY_API_TOKEN=your-coolify-api-tokenCommon Commands
# Application management
coolify-mcp apps list
coolify-mcp apps create-public --name "my-app" --repository "https://github.com/user/repo" --project "project-id"
coolify-mcp apps start app-id
# Service management (70+ one-click services)
coolify-mcp services types
coolify-mcp services create --name "my-blog" --type "wordpress-with-mysql" --project "project-id"
# Database management (8 database types)
coolify-mcp databases create-postgresql --name "main-db" --project "project-id"
coolify-mcp databases create-redis --name "cache" --project "project-id"
# Project management
coolify-mcp projects list
coolify-mcp projects create --name "My Project"
# Test connectivity
coolify-mcp system healthRelated MCP server: Coolify MCP Server
Features
🔄 Applications (21 Operations)
Complete application lifecycle management with 6 deployment types, environment variables, logs, and control operations.
🔧 Services (14 Operations)
70+ one-click services including WordPress, Ghost, MinIO, and more with full environment management.
🗄️ Databases (13 Operations)
8 database types: PostgreSQL, MySQL, MariaDB, MongoDB, Redis, KeyDB, ClickHouse, Dragonfly.
📂 Projects, Servers, Deployments
Complete infrastructure management including private keys, system administration, and deployment monitoring.
MCP Tools vs CLI Commands
This package provides two interaction methods with complete feature parity:
🤖 MCP Tools: For AI agents and Cursor integration (recommended)
💻 CLI Commands: For direct terminal usage
Both interfaces provide identical functionality - choose based on your workflow.
Development
Automated API Updates
Stay in sync with Coolify's latest API:
npm run refresh # Download latest API spec and rebuild
npm run check-updates # Check for API changesManual Development
git clone https://github.com/FelixAllistar/coolify-mcp.git
cd coolify-mcp
npm install
npm run refresh
npm run devAPI Coverage
✅ 100% Coolify API Coverage - Applications, Services, Databases, Projects, Servers, Deployments, Private Keys, System Administration
License
GLWTPL (Good Luck With That Public License) - see LICENSE file for details.
This software might just work or not, there is no third option. Good luck and Godspeed.
MCP Configuration
Option 1: Using npx (Recommended - Simple!)
{
"mcpServers": {
"coolify-mcp": {
"command": "npx",
"args": ["-y", "@felixallistar/coolify-mcp", "--server"],
"env": {
"COOLIFY_API_URL": "https://your-coolify-instance.com",
"COOLIFY_API_TOKEN": "your-coolify-api-token"
}
}
}
}Option 2: Direct node execution
{
"mcpServers": {
"coolify-mcp": {
"command": "node",
"args": ["node_modules/@felixallistar/coolify-mcp/dist/index.js", "--server"],
"env": {
"COOLIFY_API_URL": "https://your-coolify-instance.com",
"COOLIFY_API_TOKEN": "your-coolify-api-token"
}
}
}
}Option 3: Global installation
npm install -g @felixallistar/coolify-mcpThen use the MCP server binary:
{
"mcpServers": {
"coolify-mcp": {
"command": "coolify-mcp",
"env": {
"COOLIFY_API_URL": "https://your-coolify-instance.com",
"COOLIFY_API_TOKEN": "your-coolify-api-token"
}
}
}
}CLI Usage
For CLI commands, simply add arguments to the coolify-mcp command:
# Using npx (no installation needed)
npx @felixallistar/coolify-mcp --help
npx @felixallistar/coolify-mcp apps list
# Or install globally for easier CLI usage
npm install -g @felixallistar/coolify-mcp
coolify-mcp --help
coolify-mcp apps listAvailable Tools
10 toolsapplicationsD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Application UUID | |
| env_id | No | Environment variable ID | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config-statusD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
databasesD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Database UUID | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploymentsD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Deployment UUID | |
| applicationUuid | No | Application UUID (for list_by_app operation) | |
| query | No | JSON query parameters for deploy operation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingD
| Name | Required | Description | Default |
|---|---|---|---|
| random_string | No | Dummy parameter for no-parameter tools |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
private-keysD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Private Key UUID | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projectsD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Project UUID | |
| environmentNameOrUuid | No | Environment name or UUID (for environment operation) | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serversD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Server UUID | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
servicesD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform | |
| id | No | Service UUID | |
| env_id | No | Environment variable UUID | |
| body | No | JSON request body |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
systemD
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Operation to perform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
- First observed
applications - First observed
config-status - First observed
databases - First observed
deployments - First observed
ping - First observed
private-keys - First observed
projects - First observed
servers - First observed
services - First observed
system
TDQS
The tools have distinct names like 'applications', 'databases', and 'servers', which suggest different resources, but without descriptions, it's unclear if there's overlap in functionality (e.g., 'services' vs 'applications'). This ambiguity could lead to misselection by an agent, as the boundaries between tools are not defined.
Most tool names follow a consistent kebab-case pattern (e.g., 'config-status', 'private-keys'), with 'ping' being a minor deviation as a single word. Overall, the naming is predictable and readable, though not perfectly uniform across all tools.
With 10 tools, this server is well-scoped for a system management domain like Coolify, covering various aspects such as applications, databases, and deployments. Each tool appears to earn its place by targeting a specific resource or function, making the count appropriate.
Inferring from tool names, this server likely manages infrastructure resources, but without descriptions, it's impossible to assess if there are gaps in CRUD operations. For example, 'applications' might lack update or delete actions, leading to potential dead ends for agents trying to perform full lifecycle management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Deploy and manage applications, databases, domains, and git repos
Deploy full-stack apps (Postgres, Redis, S3, workers, backups) from Claude or curl. 59 MCP tools.
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
Related MCP Servers
- FlicenseAqualityFmaintenanceEnables interaction with Coolify applications and resources through the Coolify API via a standardized interface, supporting application management operations such as listing, starting, stopping, restarting, and deploying.1113-
- AlicenseBqualityFmaintenanceEnables AI assistants to interact with Coolify for complete infrastructure management including applications, databases, servers, deployments, and team operations. Provides 100% API coverage with 64 tools for managing the entire Coolify ecosystem through natural language.18256MIT
- AlicenseBqualityCmaintenanceEnables control and management of Coolify self-hosted PaaS instances, allowing you to deploy applications, manage databases, monitor servers, and execute operations directly from AI assistants.893228MIT
- AlicenseBqualityDmaintenanceEnables management of Coolify instances to control applications, databases, and servers through the Model Context Protocol. It provides a comprehensive set of tools for deploying services and monitoring self-hosted infrastructure using natural language.18213MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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