Deploy a game server
edgegap_deployStarts a dedicated authoritative game server from an application version near specified players and returns a request_id; then call edgegap_wait_for_deployment for connection details.
Instructions
Start one authoritative dedicated game server from an application version, placed near the players you specify. This is the recommended way to host a multiplayer match: the server owns the game state, so no player hosts it. Returns immediately with a request_id; the server is still starting and has no connection details yet. Follow this call with edgegap_wait_for_deployment to get the address players connect to. Always stop deployments you started for testing. Every deployment is tagged "edgegap-mcp" in addition to any tags you pass, so edgegap_list_deployments with only_agent_deployments: true finds them all. Runs until stopped or until the version's max_duration, which the result reports. Refused, with nothing sent, if the API token appears in an env var or tag, if the version uses the "latest" docker tag, or when too many agent deployments are already running (EDGEGAP_MAX_AGENT_DEPLOYMENTS, default 5): stop finished ones first. Also refused when the version's max_duration is unlimited or above EDGEGAP_MAX_DURATION_MINUTES, unless allow_long_running is true (ask the developer first), and on the local server after EDGEGAP_MAX_DEPLOYS_PER_RUN deploys (default 20). Env vars named like secrets are hidden in the dashboard. Optional: webhooks Edgegap calls when the server is ready, errors or ends (instead of polling), require_cached_locations for faster starts, and private_host_ids to place it on your private fleet first.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"application": "<application>",
"version": "<version>",
"users": "<users>"
},
"name": "edgegap_deploy"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| env | No | Environment variables for this deployment only. Values are never echoed back. | |
| tags | No | Extra tags for filtering later, e.g. ["agent-test"]. "edgegap-mcp" is always added. | |
| users | Yes | Where the players are. Exactly one of these two is required. | |
| dry_run | No | Show the exact request (method, host, path, body) with secrets masked, and send nothing. Local checks still run. Use it to confirm a billable or destructive call before making it. | |
| version | Yes | Version name within the application. | |
| cpu_units | No | Override the version's CPU for this deployment only, with memory_mb. 1024 = 1 vCPU. | |
| memory_mb | No | Override the version's memory for this deployment only, with cpu_units. At most 2x cpu_units. | |
| application | Yes | Application name. | |
| private_host_ids | No | Private fleet host IDs to try first, in order (from edgegap_list_fleet_hosts); Edgegap overflows to its cloud when they are full. Omit for a normal cloud deployment. | |
| webhook_on_error | No | https URL Edgegap POSTs to when the deployment fails. | |
| webhook_on_ready | No | https URL Edgegap POSTs to when the server is ready. | |
| allow_long_running | No | Deploy even though the version's max_duration is unlimited or above EDGEGAP_MAX_DURATION_MINUTES. Only after the developer agreed: the server bills until it is stopped or that limit. | |
| webhook_on_terminated | No | https URL Edgegap POSTs to when the deployment ends. | |
| require_cached_locations | No | Only place it where the image is already cached: starts faster, fewer places to choose from. Needs force_cache on the version (edgegap_update_app_version); without it the API refuses the deploy. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| status | No | ||
| warning | No | ||
| auto_stop | No | ||
| next_step | No | ||
| resources | No | ||
| request_id | No | ||
| auto_stop_after_minutes | No |