Edgegap

dev.edgegapPublished by edgegap.devOfficial publisherv0.17.0Updated Nov 5, 2026

Deploy and operate multiplayer game servers on Edgegap's global edge network.

VerifiedStreamable HTTPWeb executableCloud & InfrastructureDeveloper ToolsMedia & Design

Overview

AI-generated overview

Edgegap's MCP server lets an assistant containerize, deploy, inspect and stop multiplayer game servers on Edgegap's edge network.

What you can do
  • Prepare server builds: generate a Dockerfile, validate Dockerfile, ports and resources, read engine-specific skill guides.
  • Manage container images: get registry push credentials, list and delete registry tags.
  • Manage applications and versions: list, create, update and delete apps and app versions, list deployable locations and ping beacons.
  • Run dedicated servers: deploy near players, wait for readiness, read status, logs and CPU/memory metrics, tag, report and stop deployments.
  • Configure log export and file pulls through S3-compatible Endpoint Storage and pull profiles.
  • Run host-client relays: create, read, list, authorize or revoke players, and delete relay sessions; also generate…
When to use it
Use it when a game studio wants an AI agent to take a headless server build from Dockerfile to a running dedicated server near players, to debug failed deployments via logs and metrics, or to set up relay sessions for host-client games.
Requirements
An Edgegap account and an organization-wide API token, sent as the Authorization header on the hosted endpoint or as EDGEGAP_API_TOKEN for the local server. The local server runs via npx and needs Node.js 18 or newer. Clients that cannot send an Authorization header must use the local server. Network access to Edgegap's API.
Before you install
Deployments and relay sessions are billed while running, so test servers and sessions should be stopped or deleted. The token is organization-wide and cannot be scoped to one application, and the README warns it grants unlimited account access, so it should not go into a game client. Write tools create, update and delete apps, versions, registry tags, storage and relay sessions; dry_run and read-only mode help limit this. Endpoint Storage registration requires bucket access keys.

Installation

In SourceWeft

  1. Open Edgegap in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/dev.edgegap%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "edgegap": {
      "type": "http",
      "url": "https://mcp.edgegap.dev/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

Edgegap MCP Server

Connect AI coding agents to Edgegap through our MCP server. Your agent can take a headless server build all the way to players connecting: write or check the Dockerfile, push the image to your private Edgegap registry, deploy an authoritative dedicated server close to players, and read logs when something breaks.

[Install in Cursor] [Install in VS Code]

👉 Supported Features

[!TIP] Using Unity, Unreal Engine, or Godot? Our Unity, Unreal Engine, and Godot guides and plugins remain the fastest path for those engines. The MCP server works alongside them, and on its own for any engine.

Use our MCP server when:

  • Containerizing your game server - your agent writes a Dockerfile for your build (or reviews the one you have) against best practices, pushes the image to our private container registry, and removes unused old image tags to reclaim registry capacity.
  • Deploying a dedicated server - create and update app versions, review available locations, deploy close to your players, and get server IP with ports to test client connection.
  • Building a CI/CD pipeline - test your deployments and teardown from a build system.
  • Troubleshooting a game server issue - inspect app versions and deployment status, read container logs and CPU/memory utilization, or reproduce a failed deployment.
  • Running client-host and peer-to-peer games - create relay sessions providing NAT punchthrough and avoid connection blocking. Review Orchestration Models and Dedicated Servers or Relays? before deciding.

[!WARNING] Out of scope / not supported by MCP: building Linux server executable; creating, starting or stopping a matchmaker (upload the generated configuration in the dashboard); server browser; lobbies; managed clusters; private fleets; or billing.

[!NOTE] If you need help, please reach out to us over Discord. For live games support see our ticketing system.

⚖️ Dedicated Servers or Relays?

Edgegap can host your multiplayer game in two ways. We recommend dedicated servers, and so does our MCP server: your agent will default to a dedicated server and only use a relay when you've chosen a host-client setup.

Dedicated server (recommended)Relay
What Edgegap runsYour headless server build, close to playersA traffic forwarder only, no game code
Who runs the gameThe serverOne player's game (the host)
CheatingMuch harder, the server has authorityThe host can change anything
FairnessEvery player connects directly to the serverThe host has no latency, everyone else goes through two hops
When the host leavesThe match continuesThe match ends, unless your game supports host migration
Performance limited byThe server's allocated CPU and memoryThe host's PC and home internet upload
You needA server build in a container imageNetcode built as a listen server (host-client)

[!NOTE] No server image yet? That's not a reason to choose relays. Your agent can write the Dockerfile for your build with edgegap_generate_dockerfile. Learn more about relays in Distributed Relay.

🚀 Installation

MCP server installation is very simple:

  1. Install the MCP server for Popular Agents or with Custom Integration.
  2. Generate and attach an API token for your agent to use with our MCP server.

Generate (and view) your secret tokens for Edgegap API in Dashboard - User Settings / Tokens.

Add your secret token with each API request as an HTTP header (include the word token):

Authorization: token xxxxxxxx-e458-4592-b607-c2c28afd8b62

[!CAUTION] Do not integrate Edgegap API endpoints in game client, as your API token provides unlimited access to your account. See Integration for secure client-facing API endpoints and functions.

[!TIP] In case your secret tokens are compromised or leaked, delete and re-create them from dashboard.

The token is organization-wide and cannot be scoped to one application. Read DESIGN.md before giving it to an unattended agent.

Popular Agents

Install Edgegap MCP server in your preferred agentic IDE with the Cursor or VS Code buttons at the top of this page, then add your token to the Authorization header.

Claude Code
bash
claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp \  -H "Authorization: token xxxxxxxx-e458-4592-b607-c2c28afd8b62" --scope user
ChatGPT Codex

Codex reads the token from an environment variable and sends it as Authorization: Bearer <token>, which the hosted endpoint accepts. In ~/.codex/config.toml:

toml
[mcp_servers.edgegap]url = "https://mcp.edgegap.dev/mcp"bearer_token_env_var = "EDGEGAP_API_TOKEN"

Then set EDGEGAP_API_TOKEN to your token in the environment Codex starts from.

Claude Desktop and claude.ai

Custom connectors in claude.ai and Claude Desktop cannot send an Authorization header, so the hosted endpoint never receives your token from them: the connector shows as connected, but every tool call fails. Use the Local Server instead.

In Claude Desktop, open Settings → Developer → Edit Config and add the local server to claude_desktop_config.json:

json
{  "mcpServers": {    "edgegap": {      "command": "npx",      "args": ["-y", "@edgegap/mcp"]    }  }}

Leave the token out and you're asked for it on first use. claude.ai in the browser can't run a local server, so it can't use Edgegap MCP until the hosted endpoint supports OAuth.

Cursor

The Cursor button at the top of this page installs it; to do it by hand, add this to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

json
{  "mcpServers": {    "edgegap": {      "url": "https://mcp.edgegap.dev/mcp",      "headers": { "Authorization": "token xxxxxxxx-e458-4592-b607-c2c28afd8b62" }    }  }}
VS Code (Copilot agent mode)

The VS Code button at the top of this page installs it; to do it by hand, add this to .vscode/mcp.json (VS Code uses servers, not mcpServers):

json
{  "servers": {    "edgegap": {      "type": "http",      "url": "https://mcp.edgegap.dev/mcp",      "headers": { "Authorization": "token xxxxxxxx-e458-4592-b607-c2c28afd8b62" }    }  }}
Windsurf

In ~/.codeium/windsurf/mcp_config.json, run the Local Server, which works in every client that starts MCP servers as commands:

json
{  "mcpServers": {    "edgegap": {      "command": "npx",      "args": ["-y", "@edgegap/mcp"],      "env": { "EDGEGAP_API_TOKEN": "xxxxxxxx-e458-4592-b607-c2c28afd8b62" }    }  }}
mcp.json

Most agentic IDEs also support integration by pasting JSON configuration:

json
{    "mcpServers": {        "Edgegap": {            "type": "http",            "url": "https://mcp.edgegap.dev/mcp",            "headers": {                "Authorization": "token xxxxxxxx-e458-4592-b607-c2c28afd8b62"            }        }    }}

Custom Integration

Install remote Edgegap MCP server in your agent's virtualized environment (never in your project!):

Node, using the mcp-remote npx package

json
{  "command": "npx",  "args": ["-y", "mcp-remote", "https://mcp.edgegap.dev/mcp", "--transport", "http-only"]}

Python, using the mcp-proxy uvx package

json
{  "command": "uvx",  "args": ["mcp-proxy", "--transport", "streamablehttp", "https://mcp.edgegap.dev/mcp"]}

One-Click Install (Claude Desktop)

Download edgegap-mcp.mcpb and open it: Claude Desktop installs the local server as an extension and asks for your API token, which it keeps in the operating system's secure storage. The extension's settings also hold read-only mode, the application allowlist, the max duration ceiling and the deployment cap (the variables below). Each release attaches the bundle, built from that release's code. Any other app that installs MCPB bundles works the same way.

Local Server

To keep your API token on your own machine, run the server locally instead. Leave the token out and your agent asks you for it on first use, holding it in memory only for that session:

json
{  "mcpServers": {    "Edgegap": {      "command": "npx",      "args": ["-y", "@edgegap/mcp"],      "env": { "EDGEGAP_API_TOKEN": "xxxxxxxx-e458-4592-b607-c2c28afd8b62" }    }  }}

Needs Node 18+. Pin a version in production (@edgegap/[email protected]) rather than floating on latest. Registered in the official MCP registry as dev.edgegap/mcp.

The local server can also limit what an agent can do. These variables have no effect on the hosted endpoint at mcp.edgegap.dev:

VariableDefaultPurpose
EDGEGAP_API_TOKEN(prompted)API token. Optional: omit it and you're asked at first use. The token prefix is added for you. Never pass it as a command-line argument.
EDGEGAP_READ_ONLY0Set to 1 and the tools that change something (marked ● in Tools) are never registered, so the agent cannot be talked into calling them.
EDGEGAP_APP_ALLOWLIST(empty)Comma-separated application names. Limits what the agent can create and deploy into. Reading (listing apps and versions) is not limited, and neither is touching deployments once running. See DESIGN.md.
EDGEGAP_MAX_DURATION_MINUTES60Ceiling on max_duration the agent may set on a version. edgegap_deploy also refuses a version whose max_duration is above it, or unlimited, unless the agent passes allow_long_running: true after asking you.
EDGEGAP_MAX_AGENT_DEPLOYMENTS5edgegap_deploy refuses while this many deployments tagged edgegap-mcp are running. 0 turns the cap off.
EDGEGAP_MAX_DEPLOYS_PER_RUN20Deploys one server process may send, failed ones included. Restart the server to reset it. 0 turns it off.
EDGEGAP_STOP_OWN_ONLY0Set to 1 and edgegap_stop_deployment only stops deployments tagged edgegap-mcp, so an agent cannot stop servers it did not start.
EDGEGAP_ENABLE_SKILLS_UPDATE0Set to 1 to let edgegap_update_skills run npx [email protected] update or claude plugin update with apply: true. Without it, it lists those commands for you to run. Hand-copied skills are rewritten from the bundle either way. The updaters get only path, home, temp, locale, proxy and npm settings, never EDGEGAP_* variables or anything named like a token, secret, password or key.
EDGEGAP_TIMEOUT_MS30000Per-request HTTP timeout.
EDGEGAP_SKILLS_CHECKonSet to off and the skill tools never read the latest skills version from GitHub.
Windows

The local server runs on Windows with Node.js 18 or newer, and CI runs the build and the stdio tests on Windows.

  • Many Windows MCP clients cannot start npx directly, because it is a .cmd script. Start it through cmd /c: "command": "cmd", "args": ["/c", "npx", "-y", "@edgegap/mcp"]. In Claude Code: claude mcp add Edgegap --env EDGEGAP_API_TOKEN=<token> -- cmd /c npx -y @edgegap/mcp.
  • In PowerShell, type npx.cmd instead of npx to run it by hand: a new Windows install blocks the npx PowerShell script ("running scripts is disabled on this system").
  • The first start downloads the package and can take a while; later starts are fast.
  • edgegap_update_skills finds skills installed in %USERPROFILE%, the same way as on macOS and Linux.

📚 Skills

The server includes the Edgegap agent skills: tested, step-by-step workflows for getting a multiplayer game online, with templates (Dockerfiles, matchmaker configs, Unity C# and Unreal C++ drop-ins) and known pitfalls. Any agent connected to Edgegap MCP gets them, with no separate install and no token needed, and is told to load the matching skill before working on a game project.

SkillFor
edgegapStart here for any engine other than Unity or Unreal Engine, or platform questions. Routes to the rest.
edgegap-unityUnity end to end: server build, matchmaker, client, end-to-end test.
edgegap-ngoUnity with Netcode for GameObjects end to end: server start and self-stop, Find Match panel, Boss Room adapter, matchmaker.
edgegap-fishnetUnity with FishNet end to end: headless server, Bayou/WebGL, matchmaker, end-to-end test.
edgegap-purrnetUnity with PurrNet end to end: dedicated server, connect panel, matchmaker, end-to-end test.
edgegap-fusionUnity with Photon Fusion 2 end to end: IL2CPP Linux server, server bound to 0.0.0.0, Edgegap deployment, BR200 kit.
edgegap-fusion-simplefpsPhoton's Simple FPS sample on Edgegap dedicated servers.
edgegap-godotGodot 4 with a Godot dedicated server: headless export, ENet or WebSocket, matchmaker.
edgegap-colyseusColyseus servers on Edgegap, direct or through the matchmaker.
edgegap-nakamaNakama as the backend, starting Edgegap servers for its matches.
edgegap-playfabPlayFab Matchmaking with Edgegap servers.
edgegap-threejsThree.js and other browser games with their own Node.js server.
edgegap-matchmakingMatchmaking design for any engine: who owns it, profiles, parties, region selection, backfill, third-party matchmakers.
edgegap-manusBrowser games built with Manus: backend matchmaking, Steam sign-in, signed join tokens, Node WebSocket server.
edgegap-unrealUnreal Engine end to end: source engine, Linux server, matchmaker, end-to-end test.
edgegap-eos-voiceVoice chat for an Unreal game on Edgegap with EOS Voice: server-side room tokens, match and team rooms.
edgegap-server-designAuthoritative server design and the deployment lifecycle.
edgegap-containerizeThe container contract, Dockerfiles, registries, app versions.
edgegap-local-testingParity tests on your machine, then one smoke-test deployment.
edgegap-troubleshootPull errors, crash loops, out-of-memory, clients that can't connect.
edgegap-deployments-apiBackend code that deploys servers: webhooks, cleanup, Nakama, PlayFab, UGS, EOS.
edgegap-launchLaunch checklist, rollouts, caching, cost control.

They're served three ways, so every MCP client can reach them:

  • Tools: edgegap_list_skills and edgegap_get_skill, which loads a skill's SKILL.md, or one of its reference documents or templates with file.
  • Prompts: deploy-game-server ("Deploy my game server to Edgegap") is the place to start: it finds the engine and netcode, loads the matching skill and walks the golden path, cleanup included. There is also one prompt per skill, named after it. In Claude Code they show up as slash commands, e.g. /mcp__edgegap__deploy-game-server.
  • Resources: each skill's SKILL.md is listed, at edgegap-skill://<skill>/SKILL.md; every other file is read through the edgegap-skill://{skill}/{+path} template, e.g. edgegap-skill://edgegap-unity/references/deploy.md.

Each release bundles the skills at the commit pinned in scripts/skills-pin.txt; edgegap_context reports which pack is loaded. edgegap_list_skills also reads the latest pack version from GitHub (one version number, cached for an hour; EDGEGAP_SKILLS_CHECK=off turns it off) and says when a newer one is out, and edgegap_get_skill adds the same note under a skill's header.

Keeping installed skills current. If you also installed the skills in your agent (the Claude Code plugin edgegap@edgegap, npx skills add edgegap/llm-agent-skills, or folders copied into ~/.claude/skills), edgegap_update_skills compares each one with the latest on GitHub. On the local server it finds those installs itself; with apply: true it runs npx skills update (Edgegap skills only) or claude plugin update, and rewrites hand-copied skills from the files bundled in this release, keeping files you added and leaving symlinks and git checkouts alone. It never downloads skill text. The hosted server cannot see your disk: pass the versions you have loaded in installed_versions and it says which are behind and how to update them.

🧰 Tools

Your agent picks the right tool from your request. You don't need to name them, but knowing what's available helps you ask. Tools marked ● change something in your account, accept dry_run, and are hidden when EDGEGAP_READ_ONLY=1.

ToolWhat it does
edgegap_contextShows which API this server talks to, its version, local or hosted, and the guardrails in force. No API call; never shows the token.

Before Your First Deployment

ToolWhat it does
edgegap_generate_dockerfileWrites a Dockerfile for your server build: your build folder, server binary or start script, ports, and launch arguments, with the right headless flags (Unity -batchmode -nographics, Godot --headless), a non-root user for Unreal, and matching ports. Lists anything it had to assume so your agent can confirm it. Works for Unity, Unreal Engine, Godot, and any other engine.
edgegap_validate_server_configChecks an existing Dockerfile, ports, resources, and image tag before you build. Catches ARM or Windows images (Edgegap runs linux/amd64), Unreal servers running as root, missing Unity -batchmode -nographics, servers bound to localhost, ports that don't match your netcode transport, and the latest tag.
edgegap_get_registry_credentials ●Returns push credentials for your private Edgegap container registry, with the exact docker login, build, and push commands. Edgegap only gives these to the Unity/Unreal plugins' quick-start token; with a regular API token, it tells your agent to ask you for the login from the dashboard's Container Registry page instead.
edgegap_list_registry_tagsConfirms your image push landed before you register it. Takes the image name only, e.g. my-game-server: the project comes from your token.
edgegap_delete_registry_tag ●Deletes one tag, and the image it points to, to clean up old builds. One exact tag per call; latest, wildcards and lists are refused.

Dedicated Servers (Recommended)

ToolWhat it does
edgegap_list_appsLists your applications.
edgegap_create_app ●Creates an application.
edgegap_update_app ●Turns an application on or off for new deployments.
edgegap_list_app_versionsLists versions with their image, resources, ports (with TLS Upgrade), and whether a registry login is set.
edgegap_get_app_versionReads one version in full: image, resources, ports, max duration, image caching, restart policy, and env var names (never values).
edgegap_create_app_version ●Registers a container image as a deployable version. Supports TLS Upgrade on WS and HTTP ports, which browser (WebGL) clients need for wss://.
edgegap_update_app_version ●Changes an existing version: a new image tag, on/off, CPU and memory (both together), max duration, registry login, image caching (force_cache), shutdown grace period, ports, env vars, and the Endpoint Storage its logs go to. Only the fields passed change, but ports and env replace the whole list. Running deployments keep the old settings.
edgegap_delete_app_version ●Deletes one version, to clean up test versions. Refused while a deployment of it runs. The registry image is kept.
edgegap_delete_app ●Deletes an application and its versions. Refused while any of its deployments runs, and while it has more versions than max_versions (default 0).
edgegap_list_locationsLists the cities Edgegap deploys to, or, for one version, only those with capacity right now.
edgegap_list_ping_beaconsLists the ping beacons game clients measure their latency to each region against.
edgegap_deploy ●Deploys an authoritative dedicated server close to your players. Always tagged edgegap-mcp, and reports when Edgegap will stop it. Optional: CPU and memory for this deployment only, webhooks Edgegap calls when the server is ready, fails or ends, require_cached_locations for faster starts, and private_host_ids to place it on your private fleet first.
edgegap_list_fleet_hostsLists the hosts of one of your private fleets, with status and location, to deploy onto them.
edgegap_wait_for_deploymentWaits until the server is ready and returns the connection address.
edgegap_get_deploymentReads a deployment's status.
edgegap_list_deploymentsLists running deployments, filtered by application, version, status, tags and more, and sorted by age. Finds servers left running; only_agent_deployments: true lists every one an agent started. See Filter Deployments.
edgegap_get_deployment_logsReads container logs and crash details while the deployment runs. After it stops, logs are only kept if Endpoint Storage was set up.
edgegap_get_deployment_metricsSummarises CPU, CPU throttling, memory and network use (latest, average, peak), to size a version or check a crash.
edgegap_stop_deployment ●Stops one deployment, by its exact request ID. No bulk stop.
edgegap_tag_deployment ●Adds or removes tags on a running deployment, e.g. to mark a match. The edgegap-mcp tag stays.
edgegap_report_deployment ●Reports a deployment to Edgegap with a reason, for a studio's moderation backend. It keeps running.

Logs and Files (Endpoint Storage)

Container logs disappear with the deployment unless they are exported to your own S3-compatible bucket.

ToolWhat it does
edgegap_list_endpoint_storageLists your Endpoint Storage buckets and their pull profiles. Secret keys are never returned.
edgegap_create_endpoint_storage ●Registers a bucket (AWS S3, Cloudflare R2, DigitalOcean Spaces…) for log export. Set endpoint_storage on a version to turn export on. The secret key is never echoed back.
edgegap_create_pull_profile ●Copies a file or folder from the bucket into the container at boot (maps, configs, large assets).
edgegap_link_pull_profile ●Links a pull profile to a version, or unlinks it.
edgegap_delete_pull_profile ●Deletes one pull profile. The bucket and its files stay.
edgegap_delete_endpoint_storage ●Deletes one Endpoint Storage; refused while it has pull profiles unless max_pull_profiles allows them. The bucket and its logs stay.

Relays (Host-Client Games Only)

A relay is not a game server: it forwards traffic while one player's game hosts the match. See Dedicated Servers or Relays?.

ToolWhat it does
edgegap_create_relay_session ●Creates a relay session for your players and returns the relay address and each player's authorization token.
edgegap_get_relay_sessionReads a relay session.
edgegap_list_relay_sessionsLists open relay sessions, to find ones left running. No authorization tokens.
edgegap_authorize_relay_user ●Adds a player who joins later.
edgegap_revoke_relay_user ●Removes one player from a relay session.
edgegap_delete_relay_session ●Closes a relay session.

[!WARNING] Deployments and relay sessions are billed while they run. Ask your agent to stop test deployments and delete test relay sessions when it's done.

Example Prompts

  • "Write a Dockerfile for my Unity server build, then push it and deploy a server near me."
  • "Check my Dockerfile for Edgegap and fix any problems."
  • "My deployment failed. Read the logs and tell me why."
  • "How much CPU and memory did my last match use? Size my version for it."
  • "My game uses host-client networking. Set up an Edgegap relay for two players."

🛡️ Guardrails

Your API token can do anything in your organization, so the server adds its own limits around what an agent does with it. They apply in both the local server and the hosted endpoint.

GuardrailWhat it does
Dry runEvery tool that changes something takes dry_run: true: it returns the exact method, host, path and body, with the token, registry tokens and env values masked, and sends nothing. Local checks still run.
No token in containersA deploy or version is refused, with nothing sent, if your API token appears in an env var name or value, a tag, or a webhook URL. Env values are never echoed back.
Agent tagEvery deployment gets the edgegap-mcp tag, even when the agent passes its own tags. edgegap_list_deployments with only_agent_deployments: true finds them all.
Auto-stopEvery deploy reports when Edgegap will stop it: the version's max_duration, capped at EDGEGAP_MAX_DURATION_MINUTES (default 60) for versions the agent creates. Edgegap has no per-deployment time limit, so deploying a version whose max_duration is above that ceiling or unlimited (a version made elsewhere defaults to 1440 minutes) is refused unless the agent passes allow_long_running: true, which it is told to do only after asking you.
Deploys per runThe local server sends at most EDGEGAP_MAX_DEPLOYS_PER_RUN (default 20) deploys per process, failed ones included, since a refused deploy can still create a deployment. When the API refuses a deploy but created one anyway, the error names it so the agent can stop it.
No moving image tagsedgegap_create_app_version refuses latest (any case), an empty tag, or a tag Docker would reject, with nothing sent: Edgegap caches images by tag, so a re-pushed tag can deploy a stale build. Deploying an existing version on latest is refused too, and so is asking for registry push commands for latest.
Image reference checkA docker_image that also holds a registry host, tag or digest (e.g. registry.edgegap.com/proj/server:v2) is refused, and the error gives the right docker_repository / docker_image / docker_tag split. edgegap_validate_server_config flags the same things.
Deployment capedgegap_deploy is refused while EDGEGAP_MAX_AGENT_DEPLOYMENTS (default 5) deployments tagged edgegap-mcp are already running, so a looping agent cannot pile up billing servers. The refusal says how to list and stop them.
Hidden secret env varsEnv vars whose names look like secrets (TOKEN, SECRET, PASSWORD, API_KEY, CREDENTIAL, AUTH…) are sent with is_hidden, so the dashboard does not show their values in plain text.
Strict stopedgegap_stop_deployment stops one deployment by its exact request ID. Empty IDs, wildcards and lists are refused. There is no bulk stop. With EDGEGAP_STOP_OWN_ONLY=1, it only stops deployments tagged edgegap-mcp.
Careful deletesedgegap_delete_app_version and edgegap_delete_app take one exact name, and are refused while a deployment of it is running. An application with versions is only deleted when max_versions covers them.
Webhook and bucket URLsDeploy webhooks and Endpoint Storage endpoints must be https URLs without credentials, and are refused if they contain your API token.
Host on every resultEvery result starts with the API host, e.g. [api.edgegap.com], or [custom · host] when EDGEGAP_BASE_URL points elsewhere. A base URL naming api.edgegap.com must be exactly https://api.edgegap.com, or the server refuses to start.
RedactionThe token is stripped from every error before it reaches the agent.

The server identifies itself with User-Agent: edgegap-mcp/<version> (<MCP client name>) on every API call.

Usage analytics. The local server and the self-hosted Docker image send nothing beyond the API calls themselves. The hosted endpoint at mcp.edgegap.dev uses PostHog MCP Analytics (@posthog/mcp) and sends usage events to Edgegap's PostHog: which MCP client connected, which tool, prompt or skill resource was used, the names (not values) of the arguments passed, whether a call succeeded, its error code, the stage it failed at and the Edgegap API status, how long it took, whether it was a dry run, a few facts about the call (how a wait for a deployment ended, a validation result, which skill was loaded), which golden-path step was reached, plus the server version and Cloudflare's country code. On a failed call it also sends the error message, after removing your token, the values of the arguments you passed, and anything shaped like a credential, an IP address or an ID, cut to 300 characters. Deployment IDs are only sent as a keyed hash. Only named metadata properties are let through. It never sends your token, tool argument values (IP addresses, env vars, app or image names) or results, and GeoIP is off. It adds no parameters to the tools. Events from one token are grouped under a keyed, non-reversible hash of it. The full list is in docs/analytics.md. To opt out, send the header X-Edgegap-Telemetry: off (or DNT: 1), or use the local server.

🚨 Troubleshooting

Review common error codes and learn how to unlock your integration.

401 Unauthorized

Your MCP integration is most likely not including the Authorization header correctly.

Tool Call Failed

Your client is missing an Edgegap token. This happens with claude.ai and Claude Desktop custom connectors, which can't send an Authorization header. See Claude Desktop and claude.ai for the alternative.

[!WARNING] This is a known limitation which will be resolved in the near term, stay tuned for updates!

403 Forbidden

Your MCP integration is likely using the template token or a deleted token. Please validate that the token value used by your integration matches exactly the token displayed in dashboard.

424 Image Could Not Be Pulled

Edgegap could not pull your container image. Check the repository, image name, and tag, and that the tag was pushed (ask your agent to list registry tags). For images in the Edgegap registry, the image name must include your project, e.g. my-project/my-game-server.

Registry Credentials Unavailable

Edgegap only gives registry credentials to the quick-start token the Unity and Unreal plugins use, so with a regular API token your agent can't retrieve them and asks you instead. Copy the Project, Username and Token from the dashboard under Container Registry, or push to another registry Edgegap can pull from (Docker Hub, GitHub, AWS ECR, GCP, GitLab). See External Registries.

"status": "empty" or "not_configured"

Not an error. A list with nothing in it (no applications yet, no deployments running, an image never pushed) or a feature this organization has not set up (relays, a registry this token cannot read) comes back as a normal result with status and a next_step. Your agent should do the next step instead of retrying.

No Token Yet

The skills (edgegap_list_skills, edgegap_get_skill), edgegap_context, edgegap_generate_dockerfile and edgegap_validate_server_config work without a token, so an agent can prepare the server build first. Create an account at app.edgegap.com and a token under User Settings → Tokens. edgegap_context with check_token: true says whether the session's token is present and accepted, and shows its last four characters so you can find it on that page.

Starts Locally but Not on Edgegap

Ask your agent to validate your server configuration, or to generate a new Dockerfile. The most common causes are an image built on Apple Silicon without docker build --platform linux/amd64, a server listening on a different port than the version exposes, or a UDP transport configured as TCP.

Other API Errors

Please consult our API Reference for possible error responses for individual API endpoints.

[!NOTE] If you need help, please reach out to us over Discord. For live games support see our ticketing system.

🛠️ Self-Hosting

The hosted endpoint at mcp.edgegap.dev runs as a Cloudflare Worker (see worker/INSTALL.md). To run the same stateless HTTP server on your own infrastructure, use the Docker image:

bash
docker build -t edgegap-mcp .docker run --rm -p 8080:8080 edgegap-mcp

Clients connect to http://<host>:8080/mcp with their own Authorization header, the same way they connect to the hosted endpoint. The image holds no credential, and /health answers without one. PORT, HOST, EDGEGAP_READ_ONLY, EDGEGAP_APP_ALLOWLIST, EDGEGAP_MAX_DURATION_MINUTES, EDGEGAP_MAX_AGENT_DEPLOYMENTS and EDGEGAP_STOP_OWN_ONLY apply; pass each with -e NAME=value. Never pass an API token to the container: each client sends its own on every request. Read worker/DECISION.md before exposing it beyond a private network.

Prebuilt images for linux/amd64 and linux/arm64 are published to ghcr.io/edgegap/llm-mcp-server (and, for existing setups, the old name ghcr.io/edgegap/edgegap-mcp), tagged main and sha-<commit> on every push to main, plus the version on v* tags:

bash
docker run --rm -p 8080:8080 ghcr.io/edgegap/llm-mcp-server:main

Development

See CONTRIBUTING.md for the checks a change has to pass, CHANGELOG.md for what each version changed, and SECURITY.md to report a vulnerability.

bash
npm cinpm run buildnpm test                  # mock-API tests; none reach Edgegapnpm run typecheck:worker

To update the bundled skills to the latest commit of llm-agent-skills, then release as usual:

bash
npm run sync-skills -- --ref mainnpm run check-skills      # exit 1 if src/skills.generated.ts differs from the pin
TestCovers
test/unit.test.mjsUnit tests for the tag, image, secret-name, URL and redaction rules
test/package.mjsPackaging: one bin, runtime dependencies, versions in step
test/skills.mjsSkills over MCP: tools, prompts, resources, path safety, bundle matches the pin
test/smoke.mjsHandshake, tool registration, read-only mode
test/guards.mjsLocal validation and allowlist enforcement
test/elicit.mjsToken prompt: accept, refuse acknowledgement, decline, no support
test/newtools.mjsValidator, Dockerfile generator, registry, deployments, relay and matchmaker tools against a local mock API
test/http.mjsSelf-hosted HTTP server: discovery without a token, per-request tokens, foreign credentials
test/spec.mjsEvery endpoint and request-body field the server sends is in spec/ (write tools checked by dry run)
test/snapshot.mjsTool names, descriptions, schemas and the instructions match test/tools.snapshot.json; npm run snapshot:update after a deliberate change
test/live-check.mjsNot in npm test. Runs against the real API with a token from a non-production organization

Design decisions, the security model, and what's deliberately out of scope are in DESIGN.md.

Source: README.md at commit b519032

Tools

43

edgegap_context

Show this Edgegap MCP server's configuration

Report which Edgegap API this server talks to, its version, whether it is the local or hosted server, and the guardrails in force: read-only mode, application allowlist, max_duration ceiling, the agent deployment cap, the tag forced onto every deployment, and which tools support dry_run. Also says whether this session has a usable token and, if not, why and how to fix it. Call it first when unsure what this session is allowed to do, before anything billable, or when tool calls fail with a token problem. Makes no API call unless check_token is true, and never shows the token.

Parameterscheck_token

edgegap_list_apps

List Edgegap applications

List the applications in the Edgegap organization. Start here before creating or deploying anything, so you reuse an existing application instead of making a duplicate. An "application" groups versions of one game server.

Parameterspagelimit

edgegap_create_app

Create an Edgegap application

Create a new application to hold game server versions. Only call this after edgegap_list_apps confirms no suitable application exists. Creating an application does not deploy anything — follow with edgegap_create_app_version.

Parametersnamerequireddry_runis_active

edgegap_update_app

Turn an application on or off

Set whether an application accepts new deployments. Turning it off stops new deployments of every version under it; running deployments keep running. Use it to pause an application without deleting anything.

Parametersdry_runis_activerequiredapplicationrequired

edgegap_list_app_versions

List versions of an application

List the versions under an application, with their container image, resources, ports (including whether TLS Upgrade is on, which browser/WebGL clients need for wss://) and whether a registry login is set for pulling the image. Use this to find the version name to deploy, to check a version is ready before deploying, or to copy the non-secret settings (image, resources, ports) of a working version when creating a new one. The registry login and secret env values are never readable: the API returns "This value is set and encrypted" for them, so get them from the dashboard's Container Registry page or the developer.

Parametersapplicationrequired

edgegap_get_app_version

Get one application version

Read one version in full: image, resources, ports, max_duration, whether image caching (force_cache) and verify_image are on, restart policy, the Endpoint Storage its logs go to, and the names of its env vars (values are never shown). Use it before edgegap_update_app_version or edgegap_deploy to check what a version will do.

Parametersversionrequiredapplicationrequired

edgegap_create_app_version

Create an application version

Register a container image as a deployable version of an application. The image must already be pushed to a registry that Edgegap can pull from (see edgegap_get_registry_credentials and edgegap_list_registry_tags). Resource units: 1024 cpu units = 1 vCPU; memory_mb must be at least 256 and at most double the cpu units. Set verify_image true on the first version so a bad image fails here rather than at deploy time. Refused, with nothing sent, for the "latest" or an empty docker tag (use a build ID so deployments are reproducible) and for a docker_image that also holds a registry host or tag. Env vars named like secrets (TOKEN, SECRET, PASSWORD, API_KEY…) are hidden in the dashboard. Images on registry.edgegap.com need no registry login: leave registry_username and registry_token out and the version gets the organization's own registry login (registry_profile "Edgegap"). When copying an existing version, copy only non-secret settings: the API returns "This value is set and encrypted" for its registry login and secret env values, and that placeholder is refused here.

Parametersenvnamerequiredportsrequireddry_runcpu_unitsrequiredmemory_mbrequireddocker_tagrequiredapplicationrequireddocker_imagerequiredverify_imageregistry_tokenrestart_policy+4 more

edgegap_update_app_version

Update an application version

Change settings on an existing version instead of creating a new one: point it at a new image tag, turn it on or off, change max_duration, set the registry login (the API cannot add registry_profile "Edgegap" to an existing version: create a new version for that), turn on image caching (force_cache: Edgegap pre-loads the image so deployments start faster), set the restart policy, or set the shutdown grace period. Only the fields you pass change. Deployments already running keep their old settings; new deployments get the new ones. Same refusals as edgegap_create_app_version: "latest" or empty tags, a docker_image holding a host or tag, and the API token in the registry login or env vars. ports and env REPLACE the version's whole list (per the API): read the current ones with edgegap_get_app_version and pass every port or variable to keep; secret env values are not readable, so get them from the developer. Refused, with nothing sent, for a registry login or env value equal to the API's "This value is set and encrypted" placeholder; leave the registry login out to keep it. cpu_units and memory_mb change together (both or neither); to try other resources for one deployment only, override them in edgegap_deploy instead.

Parametersenvportsdry_runversionrequiredcpu_unitsis_activememory_mbdocker_tagapplicationrequiredforce_cachedocker_imageverify_image+7 more

edgegap_list_locations

List where servers can run

List the cities Edgegap can deploy to. Pass application and version to see only the locations with capacity for that version right now. Use it to pick geo_coordinates for edgegap_deploy when you have no player IPs, or to tell a developer where their players can be served from. For the ping beacons game clients use to measure latency, see edgegap_list_ping_beacons.

Parameterspagelimitversionapplication

edgegap_list_ping_beacons

List ping beacons

List Edgegap's ping beacons: one host per region that a game client can ping (UDP or TCP) to measure its latency before matchmaking. The matchmaker's latency rules use these measurements. Read-only; the game client does the pinging, not this tool.

Parameterspagelimit

edgegap_deploy

Deploy a game server

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.

Parametersenvtagsusersrequireddry_runversionrequiredcpu_unitsmemory_mbapplicationrequiredprivate_host_idswebhook_on_errorwebhook_on_readyallow_long_running+2 more

edgegap_get_deployment

Get deployment status

Read the current status of one deployment, including connection address and ports once it is ready. For a deployment you just created, prefer edgegap_wait_for_deployment — it polls for you instead of making you call this in a loop.

Parametersrequest_idrequired

edgegap_wait_for_deployment

Wait for a deployment to become ready

Poll a deployment until it is ready, errors, or the timeout expires, then return the connection details. This is the tool to call right after edgegap_deploy. Do not build your own polling loop — this handles backoff and reports the container error detail if the server fails to start.

Parametersrequest_idrequiredtimeout_seconds

edgegap_list_deployments

List running deployments

List active deployments, optionally filtered and sorted. Use this to find deployments left running from earlier sessions before starting new ones — orphaned servers cost money. Filter by status, application, version, tags, request_id, created_at, fleet_name or host_name, e.g. [{field:"application",operator:"eq",value:"my-game"},{field:"status",operator:"eq",value:"ready"}]. Operators: eq and neq on every field except created_at (eq, gte, lte); in and nin with an array value on request_id, tags, application, version, fleet_name, host_name; ilike with % wildcards on fleet_name and host_name. At most one filter per field. Sort by created_at or available_session_sockets. To find every deployment an agent started through this server, pass only_agent_deployments: true (the same as filtering tags in ["edgegap-mcp", "mcp"]).

Parameterslimitfiltersorder_byonly_agent_deployments

edgegap_stop_deployment

Stop a deployment

Gracefully stop one deployment by request_id, sending SIGTERM to the container. Stop every deployment you started for testing before ending your task. This tool stops exactly one deployment, named by its exact request_id: empty IDs, wildcards and lists are refused, and bulk stop is deliberately not exposed.

Parametersdry_runrequest_idrequired

edgegap_get_deployment_logs

Get container logs for a deployment

Retrieve stdout/stderr and crash output for a deployment. Call this whenever a deployment errors or a server exits unexpectedly — the crash exit code usually identifies the problem faster than redeploying does. Logs for stopped deployments are only retained if Endpoint Storage was configured on the version beforehand.

Parametersrequest_idrequiredmax_characters

edgegap_get_deployment_metrics

Get CPU, memory and network use of a deployment

Summarise a deployment's resource use over time: CPU, CPU throttling, memory and network, each as latest, average and peak, with the API's own labels. Use it to size a version (cpu_units, memory_mb) from a real match, or to check whether a crash was memory or CPU starvation before redeploying. Defaults to the whole life of the deployment.

Parametersstepend_timerequest_idrequiredstart_time

edgegap_generate_dockerfile

Generate a game server Dockerfile

Write a Dockerfile for this project's headless game server build, ready for Edgegap: linux/amd64 base, the build folder copied in, the binary made executable, the right headless flags (Unity -batchmode -nographics, Godot --headless), a non-root user where the engine needs it (Unreal refuses root), CRLF fixes for start scripts, and EXPOSE lines matching the ports. Call this when the project has no Dockerfile, before building anything. Look at the build output first so you can pass the real build folder, binary name and port; anything you omit is assumed and listed under assumptions, which you must confirm with the developer or the project files. Write the result to Dockerfile, then build. The output is checked against edgegap_validate_server_config before it is returned. Makes no API calls.

Parametersportsenginerequirednetcodebase_imagebuild_pathexecutablelaunch_args

edgegap_validate_server_config

Validate a game server Dockerfile and port config

Check a game server Dockerfile and the ports/resources you intend to register against what Edgegap requires, BEFORE building and pushing. Catches the failures that otherwise only show up after a build, push, version and deploy: ARM or Windows images (Edgegap runs linux/amd64), Unreal running as root, missing Unity -batchmode -nographics, a server bound to localhost, EXPOSE ports that do not match the version ports, a protocol that does not match the netcode transport, the "latest" tag, and bad CPU/memory ratios. Pass the Dockerfile text (read it from disk first). If there is no Dockerfile yet, call edgegap_generate_dockerfile instead. Makes no API calls.

Parametersportsenginenetcodecpu_unitsmemory_mbdocker_tagdockerfiledocker_imagedocker_repository

edgegap_get_registry_credentials

Get Edgegap container registry push credentials

Get the push login for this organization's private Edgegap container registry (registry.edgegap.com) and the exact docker login, build and push commands for your image. Use this when the server image is not in a registry yet. Edgegap only hands these credentials to the quick-start token the Unity/Unreal plugins use; with a regular API token this tool cannot fetch them and instead returns the steps to copy them from the dashboard's Container Registry page — ask the developer for them then, do not retry. When it does return a token, it is registry-scoped (push/pull images in this project), not the org API token: pass it to docker login via --password-stdin, never as a command-line argument, and do not write it into files. Call edgegap_validate_server_config before building. Any other registry Edgegap can pull from (Docker Hub, GHCR, ECR, GitLab) works too: then skip this tool and pass that registry and its pull login to edgegap_create_app_version.

Parameterstagimage_name

edgegap_list_registry_tags

List image tags in the Edgegap registry

List the tags pushed for one image in this organization's Edgegap container registry, with push time and size. Call it after docker push to confirm the tag landed before edgegap_create_app_version, which otherwise fails later with an image-pull error. An image that was never pushed comes back as status "not_found" with no tags, not as an error. Only for registry.edgegap.com: images in Docker Hub, GHCR or another registry are not listed here.

Parameterspagelimitimage_namerequired

edgegap_delete_registry_tag

Delete one image tag from the Edgegap registry

Delete one tag, and the image it points to, from this organization's Edgegap container registry, to clean up old builds. Takes exactly one image name and one exact tag; wildcards, lists and "latest" are refused, and there is no bulk delete. A version that still uses the tag can no longer start deployments, so check edgegap_list_app_versions first. Cannot be undone.

Parameterstagrequireddry_runimage_namerequired

edgegap_tag_deployment

Add or remove tags on a running deployment

Add tags to, or remove tags from, one running deployment, e.g. to mark the match it serves or that a test is done, so edgegap_list_deployments can filter on them. Tags are labels only: the game server does not see the change. The "edgegap-mcp" tag cannot be removed, since it is how agent deployments are found and cleaned up. Returns the tags now on the deployment.

Parametersaddremovedry_runrequest_idrequired

edgegap_report_deployment

Report a deployment to Edgegap

Report a problem with one deployment to Edgegap (the API's "Report a Deployment", meant for a studio's moderation backend), with a short reason and optional key/value details. It does not stop the deployment. Use it only when the developer asks to report a deployment; for a crash, read edgegap_get_deployment_logs first.

Parametersreasonrequireddry_runmetadatarequest_idrequired

edgegap_delete_app_version

Delete one application version

Delete one version of an application, to clean up test versions. Exactly one exact version name; refused while any deployment of that version is running. The container image stays in the registry (edgegap_delete_registry_tag removes it). Cannot be undone, so confirm with the developer when the version is not one this conversation created.

Parametersdry_runversionrequiredapplicationrequired

edgegap_delete_app

Delete an application and all its versions

Delete one application and every version under it, to clean up a test application. Exactly one exact name; refused while any of its deployments is running, and refused when it has more versions than max_versions (default 0: delete its versions first with edgegap_delete_app_version, or raise max_versions after the developer agreed). Registry images are not touched. Cannot be undone.

Parametersdry_runapplicationrequiredmax_versions

edgegap_list_fleet_hosts

List the hosts of a private fleet

List the hosts in one of the organization's private fleets (dedicated machines Edgegap manages for you), with status, IP and location. Only ACTIVE hosts accept deployments. Pass their host_id values to edgegap_deploy as private_host_ids to place a server on them first. Organizations without private fleets get an error from the API.

Parametersfleet_namerequired

edgegap_list_endpoint_storage

List Endpoint Storage and pull profiles

List the organization's Endpoint Storage: S3-compatible buckets Edgegap exports container logs to when a deployment ends (so logs survive the deployment), and the pull profiles under each, which copy files from the bucket into a container at boot. Secret keys are never returned. A version uses a storage for logs through edgegap_create_app_version / edgegap_update_app_version endpoint_storage, and a pull profile through edgegap_link_pull_profile.

Takes no parameters.

edgegap_create_endpoint_storage

Create an Endpoint Storage (S3 bucket for logs)

Register an S3-compatible bucket (AWS S3, Cloudflare R2, DigitalOcean Spaces, ...) as Endpoint Storage, so container logs are exported there when deployments end. The developer supplies the bucket, endpoint URL and an access key pair scoped to that bucket; never invent or reuse other credentials, and never pass the Edgegap API token. The secret key is sent once and never echoed back. Then set endpoint_storage on the version (edgegap_update_app_version) to turn log export on.

Parametersnamerequiredbucketrequireddry_runendpointrequiredaccess_key_idrequiredoutput_formatsecret_access_keyrequiredcontainer_log_version

edgegap_create_pull_profile

Create a pull profile (copy bucket files into containers)

Create a pull profile under an Endpoint Storage: at boot, Edgegap copies a file or folder from the bucket into the container (maps, configs, large assets kept out of the image). It does nothing until linked to a version with edgegap_link_pull_profile. Avoid destination paths the image already uses.

Parametersnamerequiredsourcerequireddry_rundestinationrequiredsource_typerequiredendpoint_storagerequired

edgegap_delete_pull_profile

Delete a pull profile

Delete one pull profile from an Endpoint Storage, to clean up a test profile. Exactly one exact name. Every version linked to it stops getting its files at boot (the API cannot list those links, so ask the developer when the profile is not one this conversation created). The bucket and its files are not touched. Cannot be undone.

Parametersdry_runpull_profilerequiredendpoint_storagerequired

edgegap_delete_endpoint_storage

Delete an Endpoint Storage

Delete one Endpoint Storage, to clean up a test one. Exactly one exact name; refused when it still has more pull profiles than max_pull_profiles (default 0: delete them first with edgegap_delete_pull_profile, or raise max_pull_profiles after the developer agreed). Versions that export logs to it stop doing so, so confirm with the developer when the storage is not one this conversation created. The bucket and the logs already in it are not touched. Cannot be undone.

Parametersdry_runendpoint_storagerequiredmax_pull_profiles

edgegap_create_relay_session

Create a relay session (host-client games only)

A relay is NOT a game server and is not the recommended default — for a multiplayer match, deploy an authoritative dedicated server with edgegap_deploy instead. A relay only forwards traffic between players while one player's game acts as host and owns the game state: the host can cheat and has a latency advantage, the host's PC and connection cap the match, and the match ends if the host quits. Only use this when the developer has chosen peer-to-peer/host-client, or the netcode is already a listen server and a dedicated server is not an option; if that has not been established, ask first. Never pick it only because it needs no server image. Creates an Edgegap relay session for every player's public IP, host first, waits until it is ready, and returns the relay address plus per-player authorization tokens for the relay transport. Relay sessions are billed while open: delete test sessions with edgegap_delete_relay_session when finished.

Parametersdry_runuser_ipsrequiredwebhook_urltimeout_secondswait_until_ready

edgegap_get_relay_session

Get a relay session

Read one relay session: whether it is ready, the relay address and ports, and each authorized player with their authorization token. edgegap_create_relay_session already waits for readiness; use this to re-read a session or one created with wait_until_ready false.

Parameterssession_idrequired

edgegap_list_relay_sessions

List relay sessions

List this organization's active relay sessions: id, status, readiness and player count. Relay sessions bill while open, so use this to find ones left over from earlier sessions and delete them with edgegap_delete_relay_session. Authorization tokens are not listed; read one session with edgegap_get_relay_session.

Takes no parameters.

edgegap_authorize_relay_user

Add a player to a relay session

Authorize one more player (by public IP) on an existing relay session, for a player joining after the session was created. Returns that player's authorization token.

Parametersdry_runuser_iprequiredsession_idrequired

edgegap_revoke_relay_user

Remove a player from a relay session

Revoke one player's access to a relay session, by that player's authorization token (from edgegap_get_relay_session or edgegap_authorize_relay_user). The player loses the relay connection; the session and the other players stay.

Parametersdry_runsession_idrequireduser_authorization_tokenrequired

edgegap_delete_relay_session

Delete a relay session

Close one relay session. Connected players lose their relay connection. Delete every session you created for testing before ending your task. Takes exactly one session_id; empty IDs, wildcards and lists are refused.

Parametersdry_runsession_idrequired

edgegap_build_matchmaker_config

Build a basic matchmaker configuration

Generate a ready-to-upload Edgegap matchmaker JSON configuration with one profile: team count and size, optional latency rule, and optional expansions that relax the rules the longer a player waits. Checks the referenced application version exists and has ports. Edgegap has no API for creating a matchmaker, so this tool does NOT create one: save the returned config to a file (e.g. matchmaker-config.json) and have the developer upload it on the Matchmaker page of the dashboard. The matchmaker starts an authoritative dedicated server for each match, which is the recommended setup for multiplayer games.

Parametersinspectversionrequiredexpansionsteam_countrequiredapplicationrequiredprofile_namerequiredmax_team_sizerequiredmin_team_sizerequiredmax_latency_msverify_versionticket_expirationallowed_cors_origins+1 more

edgegap_list_skills

List the Edgegap agent skills

List the Edgegap agent skills: tested, step-by-step workflows for getting a multiplayer game online on Edgegap, with templates (Dockerfiles, matchmaker configs, Unity C# and Unreal C++ drop-ins) and known pitfalls. Each entry says which engine, netcode or backend it is for, and the server instructions map projects to skills. Before working on a game project, load the matching skill with edgegap_get_skill; "edgegap" covers any other engine and routes to the rest. Also says whether a newer skills pack is on GitHub (reads one version number, no Edgegap API call).

Takes no parameters.

edgegap_get_skill

Load an Edgegap agent skill

Load one Edgegap agent skill: its SKILL.md (the workflow to follow) by default, or one of its reference documents or templates with file. Load the skill that matches the project before acting (the server instructions and edgegap_list_skills say which; "edgegap" when unsure), then fetch the references and templates it points to as you reach them. No API call.

Parametersfileskillrequired

edgegap_update_skills

Check and update the installed Edgegap skills

Check whether the Edgegap agent skills installed in the developer's agent are the latest, and update them. This hosted server cannot see the developer's disk: pass installed_versions (each loaded skill's metadata.version from its SKILL.md frontmatter) and it compares them with the latest on GitHub and says how to update. Skill text is never downloaded by this tool. The skills served by edgegap_get_skill need no update here.

Parametersinstalled_versions

Version history

21
  1. v0.17.0LatestNov 5, 2026
  2. v0.16.2Nov 4, 2026
  3. v0.16.0Nov 4, 2026
  4. v0.15.9Nov 3, 2026
  5. v0.15.7Nov 3, 2026
  6. v0.15.4Oct 29, 2026
  7. v0.11.0Oct 26, 2026
  8. v0.10.0Oct 22, 2026
  9. v0.7.1Oct 21, 2026
  10. v0.6.2Oct 20, 2026
  11. v0.6.1Oct 20, 2026
  12. v0.5.6Oct 19, 2026
  13. v0.5.5Oct 15, 2026
  14. v0.5.2Oct 14, 2026
  15. v0.4.0Oct 13, 2026
  16. v0.3.2Oct 8, 2026
  17. v0.3.0Oct 1, 2026
  18. v0.2.2Oct 1, 2026
  19. v0.2.0Oct 1, 2026
  20. v0.1.4Sep 17, 2026
  21. v0.1.1Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts