Edgegap
offiziellStelle Multiplayer-Spielserver direkt aus deinem Coding-Agenten bereit. Zehn Tools, die einen Unity-, Unreal- oder Godot-Dedicated-Server vom Container-Image zu verbundenen Spielern führen.
Was kann man mit Edgegap MCP machen?
- Dockerfile schreiben — Lass deinen Agenten ein Dockerfile für einen Unity-, Unreal-, Godot- oder anderen Server-Build mit Headless-Flags und passenden Ports erstellen.
- Vor dem Build validieren — Prüfe ein vorhandenes Dockerfile, Ports, Ressourcen und Image-Tag auf Probleme wie ARM-Images oder Server, die an localhost gebunden sind.
- Einen dedizierten Server bereitstellen — Registriere ein Image als App-Version, wähle einen Standort, stelle den Server in der Nähe der Spieler bereit und rufe die Server-IP und Ports ab.
- Eine fehlgeschlagene Bereitstellung diagnostizieren — Lies Container-Logs, Absturzdaten und CPU-/Speicher-Metriken, um herauszufinden, warum ein Server fehlgeschlagen ist oder abgestürzt ist.
- Eine Relay-Sitzung einrichten — Erstelle ein Relay für Host-Client-Spiele und rufe die Relay-Adresse sowie das Autorisierungstoken jedes Spielers ab.
Gehosteter MCP-Server
npx add-mcp 'https://mcp.edgegap.dev/mcp'Installiert in Claude Code, Codex, Cursor und mehr
Dokumentation
Edgegap MCP Server
Verbinde KI-Coding-Agenten über unseren MCP-Server mit Edgegap. Dein Agent kann einen Headless-Server-Build bis zu dem Punkt bringen, an dem sich Spieler verbinden können: die Dockerfile schreiben oder prüfen, das Image in deine private Edgegap-Registry übertragen, einen autoritativen Dedicated Server in der Nähe der Spieler bereitstellen und bei Problemen Logs auslesen.
👉 Unterstützte Funktionen
[!TIP] Verwendest du Unity, Unreal Engine oder Godot? Unsere Anleitungen und Plugins für Unity, Unreal Engine und Godot sind für diese Engines weiterhin der schnellste Weg. Der MCP-Server funktioniert parallel dazu und eigenständig mit jeder Engine.
Verwende unseren MCP-Server, wenn du:
- Deinen Game-Server containerisierst – dein Agent schreibt eine Dockerfile für deinen Build (oder prüft deine vorhandene) anhand bewährter Methoden, überträgt das Image in unsere private Container-Registry und entfernt ungenutzte alte Image-Tags, um Registry-Kapazität freizugeben.
- Einen Dedicated Server bereitstellst – App-Versionen erstellen und aktualisieren, verfügbare Standorte prüfen, Server in der Nähe deiner Spieler bereitstellen und die Server-IP mit Ports abrufen, um die Clientverbindung zu testen.
- Eine CI/CD-Pipeline aufbaust – deine Bereitstellungen und den Abbau über ein Build-System testen.
- Ein Problem mit einem Game-Server behebst – App-Versionen und Bereitstellungsstatus prüfen, Container-Logs und CPU-/Speicherauslastung auslesen oder eine fehlgeschlagene Bereitstellung reproduzieren.
- Client-Host- und Peer-to-Peer-Spiele betreibst – Relay-Sitzungen erstellen, die NAT-Traversal ermöglichen und Verbindungsblockierungen vermeiden. Lies vor deiner Entscheidung Orchestration Models und Dedicated Servers or Relays?.
[!WARNING] Nicht im Umfang enthalten / vom MCP nicht unterstützt: Erstellen einer ausführbaren Linux-Serverdatei; Erstellen, Starten oder Stoppen eines Matchmakers (lade die generierte Konfiguration im Dashboard hoch); Serverbrowser; Lobbys; verwaltete Cluster; private Flotten oder Abrechnung.
[!NOTE] Wenn du Hilfe brauchst, kontaktiere uns bitte über Discord. Für Support zu Live-Spielen nutze unser Ticketsystem.
⚖️ Dedicated Servers oder Relays?
Edgegap kann dein Multiplayer-Spiel auf zwei Arten hosten. Wir empfehlen Dedicated Server, ebenso wie unser MCP-Server: Dein Agent verwendet standardmäßig einen Dedicated Server und greift nur dann auf ein Relay zurück, wenn du dich für ein Host-Client-Setup entschieden hast.
| Dedicated Server (empfohlen) | Relay | |
|---|---|---|
| Was Edgegap ausführt | Deinen Headless-Server-Build in der Nähe der Spieler | Nur eine Weiterleitung des Datenverkehrs, kein Spielcode |
| Wer das Spiel ausführt | Der Server | Das Spiel eines Spielers (des Hosts) |
| Cheating | Viel schwieriger, der Server hat die Autorität | Der Host kann alles ändern |
| Fairness | Jeder Spieler verbindet sich direkt mit dem Server | Der Host hat keine Latenz, alle anderen durchlaufen zwei Hops |
| Wenn der Host geht | Das Match läuft weiter | Das Match endet, sofern dein Spiel keine Host-Migration unterstützt |
| Leistung begrenzt durch | Die zugewiesene CPU und der Speicher des Servers | Den PC und den Upload des Heim-Internetanschlusses des Hosts |
| Du brauchst | Einen Server-Build in einem Container-Image | Netcode, der als Listen-Server (Host-Client) eingerichtet ist |
[!NOTE] Noch kein Server-Image? Das ist kein Grund, Relays zu wählen. Dein Agent kann mit
edgegap_generate_dockerfiledie Dockerfile für deinen Build schreiben. Weitere Informationen zu Relays findest du unter Distributed Relay.
🚀 Installation
Die Installation des MCP-Servers ist ganz einfach:
- Installiere den MCP-Server für gängige Agenten oder über eine benutzerdefinierte Integration.
- Generiere ein API-Token und stelle es deinem Agenten zur Verwendung mit unserem MCP-Server bereit.
Generiere deine geheimen Tokens für die Edgegap API und zeige sie an unter Dashboard - User Settings / Tokens.
Füge dein geheimes Token jeder API-Anfrage als HTTP-Header hinzu (einschließlich des Worts token):
Authorization: token xxxxxxxx-e458-4592-b607-c2c28afd8b62
[!CAUTION] Integriere Edgegap-API-Endpunkte nicht in einen Game-Client, da dein API-Token uneingeschränkten Zugriff auf dein Konto ermöglicht. Informationen zu sicheren, clientseitigen API-Endpunkten und Funktionen findest du unter Integration.
[!TIP] Falls deine geheimen Tokens kompromittiert oder offengelegt werden, lösche sie und erstelle sie im Dashboard neu.
Das Token gilt für die gesamte Organisation und kann nicht auf eine einzelne Anwendung beschränkt werden. Lies DESIGN.md, bevor du es einem unbeaufsichtigten Agenten gibst.
Gängige Agenten
Installiere den Edgegap MCP-Server in deiner bevorzugten agentischen IDE über die Schaltflächen Cursor oder VS Code oben auf dieser Seite und füge dann dein Token zum Header Authorization hinzu.
Claude Code
claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp \
-H "Authorization: token xxxxxxxx-e458-4592-b607-c2c28afd8b62" --scope user
ChatGPT Codex
Codex liest das Token aus einer Umgebungsvariable und sendet es als Authorization: Bearer <token>, was der gehostete Endpunkt akzeptiert. In ~/.codex/config.toml:
[mcp_servers.edgegap]
url = "https://mcp.edgegap.dev/mcp"
bearer_token_env_var = "EDGEGAP_API_TOKEN"
Lege anschließend EDGEGAP_API_TOKEN in der Umgebung, aus der Codex gestartet wird, auf dein Token fest.
Claude Desktop und claude.ai
Benutzerdefinierte Connectors in claude.ai und Claude Desktop können keinen Header Authorization senden. Daher erhält der gehostete Endpunkt dein Token nicht von ihnen: Der Connector wird als verbunden angezeigt, aber jeder Tool-Aufruf schlägt fehl. Verwende stattdessen den lokalen Server.
Öffne in Claude Desktop Settings → Developer → Edit Config und füge den lokalen Server zu claude_desktop_config.json hinzu:
{
"mcpServers": {
"edgegap": {
"command": "npx",
"args": ["-y", "@edgegap/mcp"]
}
}
}
Lass das Token weg, dann wirst du bei der ersten Verwendung danach gefragt. claude.ai im Browser kann keinen lokalen Server ausführen und daher Edgegap MCP erst verwenden, wenn der gehostete Endpunkt OAuth unterstützt.
Cursor
Die Schaltfläche Cursor oben auf dieser Seite installiert den Server. Um ihn manuell einzurichten, füge Folgendes zu ~/.cursor/mcp.json hinzu (oder zu .cursor/mcp.json in einem Projekt):
{
"mcpServers": {
"edgegap": {
"url": "https://mcp.edgegap.dev/mcp",
"headers": { "Authorization": "token xxxxxxxx-e458-4592-b607-c2c28afd8b62" }
}
}
}
VS Code (Copilot-Agentmodus)
Die Schaltfläche VS Code oben auf dieser Seite installiert den Server. Um ihn manuell einzurichten, füge Folgendes zu .vscode/mcp.json hinzu (VS Code verwendet servers, nicht mcpServers):
{
"servers": {
"edgegap": {
"type": "http",
"url": "https://mcp.edgegap.dev/mcp",
"headers": { "Authorization": "token xxxxxxxx-e458-4592-b607-c2c28afd8b62" }
}
}
}
Windsurf
Führe in ~/.codeium/windsurf/mcp_config.json den lokalen Server aus, der mit jedem Client funktioniert, der MCP-Server als Befehle startet:
{
"mcpServers": {
"edgegap": {
"command": "npx",
"args": ["-y", "@edgegap/mcp"],
"env": { "EDGEGAP_API_TOKEN": "xxxxxxxx-e458-4592-b607-c2c28afd8b62" }
}
}
}
mcp.json
Die meisten agentischen IDEs unterstützen auch die Integration durch Einfügen einer JSON-Konfiguration:
{
"mcpServers": {
"Edgegap": {
"type": "http",
"url": "https://mcp.edgegap.dev/mcp",
"headers": {
"Authorization": "token xxxxxxxx-e458-4592-b607-c2c28afd8b62"
}
}
}
}
Benutzerdefinierte Integration
Installiere den gehosteten Edgegap MCP-Server in der virtualisierten Umgebung deines Agenten (niemals in deinem Projekt!):
Node mit dem npx-Paket mcp-remote
{
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.edgegap.dev/mcp", "--transport", "http-only"]
}
Python mit dem uvx-Paket mcp-proxy
{
"command": "uvx",
"args": ["mcp-proxy", "--transport", "streamablehttp", "https://mcp.edgegap.dev/mcp"]
}
Installation mit einem Klick (Claude Desktop)
Lade edgegap-mcp.mcpb herunter und öffne die Datei: Claude Desktop installiert den lokalen Server als Erweiterung und fragt nach deinem API-Token, das sicher im Betriebssystem gespeichert wird. In den Einstellungen der Erweiterung kannst du außerdem den Nur-Lese-Modus, die Zulassungsliste für Anwendungen, die maximale Laufzeitbegrenzung und die Bereitstellungsobergrenze festlegen (die unten aufgeführten Variablen). Jede Version enthält das aus dem Code dieser Version erstellte Bundle. Jede andere App, die MCPB-Bundles installiert, funktioniert genauso.
Lokaler Server
Um dein API-Token auf deinem eigenen Rechner zu behalten, führe stattdessen den Server lokal aus. Lass das Token weg, dann fragt dein Agent bei der ersten Verwendung danach und behält es nur für diese Sitzung im Arbeitsspeicher:
{
"mcpServers": {
"Edgegap": {
"command": "npx",
"args": ["-y", "@edgegap/mcp"],
"env": { "EDGEGAP_API_TOKEN": "xxxxxxxx-e458-4592-b607-c2c28afd8b62" }
}
}
}
Erfordert Node 18+. Lege in der Produktion eine Version fest (@edgegap/mcp@0.15.4), statt die neueste Version zu verwenden. In der offiziellen MCP-Registry registriert als dev.edgegap/mcp.
Der lokale Server kann außerdem einschränken, was ein Agent tun darf. Diese Variablen haben keine Auswirkungen auf den gehosteten Endpunkt unter mcp.edgegap.dev:
| Variable | Standardwert | Zweck |
|---|---|---|
EDGEGAP_API_TOKEN | (wird abgefragt) | API-Token. Optional: Lass es weg, dann wirst du bei der ersten Verwendung danach gefragt. Das Präfix token wird automatisch hinzugefügt. Niemals als Befehlszeilenargument übergeben. |
EDGEGAP_READ_ONLY | 0 | Auf 1 setzen: Die Tools, die Änderungen vornehmen (in Tools mit ● markiert), werden nicht registriert, sodass der Agent nicht dazu gebracht werden kann, sie aufzurufen. |
EDGEGAP_APP_ALLOWLIST | (leer) | Durch Kommas getrennte Anwendungsnamen. Beschränkt, welche Anwendungen der Agent erstellen und für welche er Bereitstellungen vornehmen kann. Lesezugriffe (Auflisten von Apps und Versionen) sind nicht beschränkt; ebenso wenig der Zugriff auf bereits laufende Bereitstellungen. Siehe DESIGN.md. |
EDGEGAP_MAX_DURATION_MINUTES | 60 | Obergrenze für max_duration, die der Agent für eine Version festlegen darf. edgegap_deploy lehnt außerdem eine Version ab, deren max_duration darüber liegt oder unbegrenzt ist, sofern der Agent nicht nach deiner Zustimmung allow_long_running: true übergibt. |
EDGEGAP_MAX_AGENT_DEPLOYMENTS | 5 | edgegap_deploy lehnt Bereitstellungen ab, solange diese Anzahl von Bereitstellungen mit dem Tag edgegap-mcp läuft. 0 deaktiviert die Obergrenze. |
EDGEGAP_MAX_DEPLOYS_PER_RUN | 20 | Anzahl der Serverprozesse, die Bereitstellungen starten dürfen, einschließlich fehlgeschlagener. Starte den Server neu, um den Zähler zurückzusetzen. 0 deaktiviert die Begrenzung. |
EDGEGAP_STOP_OWN_ONLY | 0 | Auf 1 setzen: edgegap_stop_deployment stoppt dann nur Bereitstellungen mit dem Tag edgegap-mcp, sodass ein Agent keine Server stoppen kann, die er nicht gestartet hat. |
EDGEGAP_ENABLE_SKILLS_UPDATE | 0 | Auf 1 setzen, damit edgegap_update_skills npx skills@1.7.4 update oder claude plugin update mit apply: true ausführen kann. Andernfalls werden dir diese Befehle zur Ausführung angezeigt. Manuell kopierte Skills werden in jedem Fall durch die Version aus dem Bundle ersetzt. Die Updater erhalten nur Pfad-, Home-, Temp-, Locale-, Proxy- und npm-Einstellungen, niemals EDGEGAP_*-Variablen oder Variablen mit Namen wie Token, Secret, Password oder Key. |
EDGEGAP_TIMEOUT_MS | 30000 | HTTP-Timeout pro Anfrage. |
EDGEGAP_SKILLS_CHECK | on | Auf off setzen, damit die Skill-Tools nicht die neueste Skill-Version von GitHub abrufen. |
Windows
Der lokale Server läuft unter Windows mit Node.js 18 oder neuer. CI führt den Build und die stdio-Tests unter Windows aus.
- Viele Windows-MCP-Clients können
npxnicht direkt starten, da es sich um ein.cmd-Skript handelt. Starte es übercmd /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. - Gib in PowerShell
npx.cmdstattnpxein, um den Server manuell zu starten: Eine neue Windows-Installation blockiert dasnpx-PowerShell-Skript („Die Ausführung von Skripts ist auf diesem System deaktiviert“). - Beim ersten Start wird das Paket heruntergeladen, was eine Weile dauern kann. Spätere Starts sind schnell.
edgegap_update_skillsfindet Skills, die in%USERPROFILE%installiert sind, genauso wie unter macOS und Linux.
📚 Skills
Der Server enthält die Edgegap-Agent-Skills: getestete Schritt-für-Schritt-Abläufe, um ein Multiplayer-Spiel online zu bringen, mit Vorlagen (Dockerfiles, Matchmaker-Konfigurationen, Unity-C#- und Unreal-C++-Einfügungen) und bekannten Fallstricken. Jeder mit Edgegap MCP verbundene Agent erhält sie ohne separate Installation und ohne Token und wird angewiesen, vor der Arbeit an einem Spielprojekt den passenden Skill zu laden.
| Skill | Für |
|---|---|
edgegap | Hier starten bei Fragen zu einer Engine außer Unity oder Unreal Engine oder zu Plattformen. Verweist auf die übrigen Skills. |
edgegap-unity | Unity von Anfang bis Ende: Server-Build, Matchmaker, Client, End-to-End-Test. |
edgegap-ngo | Unity mit Netcode for GameObjects von Anfang bis Ende: Serverstart und automatisches Beenden, Find-Match-Panel, Boss-Room-Adapter, Matchmaker. |
edgegap-fishnet | Unity mit FishNet von Anfang bis Ende: Headless-Server, Bayou/WebGL, Matchmaker, End-to-End-Test. |
edgegap-purrnet | Unity mit PurrNet von Anfang bis Ende: dedizierter Server, Verbindungs-Panel, Matchmaker, End-to-End-Test. |
edgegap-fusion | Unity mit Photon Fusion 2 von Anfang bis Ende: IL2CPP-Linux-Server, Server an 0.0.0.0 gebunden, Edgegap-Bereitstellung, BR200-Kit. |
edgegap-fusion-simplefps | Photons Simple-FPS-Beispiel auf dedizierten Edgegap-Servern. |
edgegap-godot | Godot 4 mit einem dedizierten Godot-Server: Headless-Export, ENet oder WebSocket, Matchmaker. |
edgegap-colyseus | Colyseus-Server auf Edgegap, direkt oder über den Matchmaker. |
edgegap-nakama | Nakama als Backend, das Edgegap-Server für seine Matches startet. |
edgegap-playfab | PlayFab Matchmaking mit Edgegap-Servern. |
edgegap-threejs | Three.js und andere Browserspiele mit eigenem Node.js-Server. |
edgegap-matchmaking | Matchmaking-Design für jede Engine: Zuständigkeit, Profile, Gruppen, Regionsauswahl, Backfill, Matchmaker von Drittanbietern. |
edgegap-manus | Mit Manus erstellte Browserspiele: Backend-Matchmaking, Steam-Anmeldung, signierte Beitrittstokens, Node-WebSocket-Server. |
edgegap-unreal | Unreal Engine von Anfang bis Ende: Engine aus dem Quellcode, Linux-Server, Matchmaker, End-to-End-Test. |
edgegap-eos-voice | Voice-Chat für ein Unreal-Spiel auf Edgegap mit EOS Voice: serverseitige Raum-Tokens, Match- und Teamräume. |
edgegap-server-design | Design autoritativer Server und Bereitstellungslebenszyklus. |
edgegap-containerize | Container-Vertrag, Dockerfiles, Registries, App-Versionen. |
edgegap-local-testing | Paritätstests auf deinem Rechner, danach eine Smoke-Test-Bereitstellung. |
edgegap-troubleshoot | Pull-Fehler, Absturzschleifen, Speichermangel, Clients, die keine Verbindung herstellen können. |
edgegap-deployments-api | Backend-Code, der Server bereitstellt: Webhooks, Bereinigung, Nakama, PlayFab, UGS, EOS. |
edgegap-launch | Checkliste für den Start, Rollouts, Caching, Kostenkontrolle. |
Sie werden auf drei Arten bereitgestellt, damit jeder MCP-Client darauf zugreifen kann:
- Tools:
edgegap_list_skillsundedgegap_get_skill, das denSKILL.mdeines Skills oder eines seiner Referenzdokumente oder Vorlagen mitfilelädt. - Prompts:
deploy-game-server(„Meinen Gameserver auf Edgegap bereitstellen“) ist der richtige Einstieg: Der Prompt ermittelt Engine und Netcode, lädt den passenden Skill und führt durch den empfohlenen Ablauf, einschließlich Bereinigung. Außerdem gibt es einen Prompt pro Skill, benannt nach dem jeweiligen Skill. In Claude Code werden sie als Slash-Befehle angezeigt, z. B./mcp__edgegap__deploy-game-server. - Ressourcen: Der
SKILL.mdjedes Skills ist unteredgegap-skill://<skill>/SKILL.mdaufgeführt; alle anderen Dateien werden über die Vorlageedgegap-skill://{skill}/{+path}gelesen, z. B.edgegap-skill://edgegap-unity/references/deploy.md.
Jede Version enthält die Skills aus dem in scripts/skills-pin.txt festgelegten Commit; edgegap_context meldet, welches Paket geladen ist. edgegap_list_skills ruft außerdem die neueste Paketversion von GitHub ab (eine Versionsnummer, eine Stunde lang zwischengespeichert; EDGEGAP_SKILLS_CHECK=off deaktiviert dies) und meldet, wenn eine neuere Version verfügbar ist. edgegap_get_skill fügt denselben Hinweis unter der Überschrift eines Skills hinzu.
Installierte Skills aktuell halten. Wenn du die Skills auch in deinem Agent installiert hast (das Claude-Code-Plugin edgegap@edgegap, npx skills add edgegap/llm-agent-skills oder in ~/.claude/skills kopierte Ordner), vergleicht edgegap_update_skills jeden Skill mit der neuesten Version auf GitHub. Auf dem lokalen Server findet es diese Installationen selbst; mit apply: true führt es npx skills update (nur Edgegap-Skills) oder claude plugin update aus und ersetzt manuell kopierte Skills durch die in dieser Version enthaltenen Dateien. Dabei bleiben von dir hinzugefügte Dateien erhalten, Symlinks und Git-Checkouts werden nicht verändert. Skill-Texte werden niemals heruntergeladen. Der gehostete Server kann nicht auf deine Festplatte zugreifen: Übergib die geladenen Versionen in installed_versions, und er meldet, welche veraltet sind und wie du sie aktualisieren kannst.
🧰 Tools
Dein Agent wählt anhand deiner Anfrage das passende Tool aus. Du musst die Tools nicht benennen, aber es ist hilfreich zu wissen, welche verfügbar sind. Mit ● markierte Tools ändern etwas in deinem Konto, erfordern dry_run und sind ausgeblendet, wenn EDGEGAP_READ_ONLY=1.
| Tool | Funktion |
|---|---|
edgegap_context | Zeigt an, mit welcher API dieser Server kommuniziert, welche Version er hat, ob er lokal oder gehostet ist und welche Schutzmaßnahmen gelten. Kein API-Aufruf; das Token wird niemals angezeigt. |
Vor deiner ersten Bereitstellung
| Tool | Funktion |
|---|---|
edgegap_generate_dockerfile | Erstellt ein Dockerfile für deinen Server-Build: Build-Ordner, Server-Binärdatei oder Startskript, Ports und Startargumente, mit den passenden Headless-Flags (Unity -batchmode -nographics, Godot --headless), einem Nicht-Root-Benutzer für Unreal und passenden Ports. Listet alle Annahmen auf, damit dein Agent sie bestätigen kann. Funktioniert mit Unity, Unreal Engine, Godot und jeder anderen Engine. |
edgegap_validate_server_config | Prüft ein vorhandenes Dockerfile, Ports, Ressourcen und Image-Tag vor dem Build. Erkennt ARM- oder Windows-Images (Edgegap führt linux/amd64 aus), als Root laufende Unreal-Server, fehlendes Unity--batchmode -nographics, an localhost gebundene Server, Ports, die nicht zum Netcode-Transport passen, und das latest-Tag. |
edgegap_get_registry_credentials ● | Gibt Zugangsdaten für deine private Edgegap-Container-Registry sowie die genauen docker login-, Build- und Push-Befehle zurück. Edgegap stellt diese nur über das Quick-Start-Token der Unity-/Unreal-Plugins bereit. Bei einem regulären API-Token weist es deinen Agent an, dich stattdessen nach den Anmeldedaten von der Dashboard-Seite Container Registry zu fragen. |
edgegap_list_registry_tags | Bestätigt, dass dein Image-Push angekommen ist, bevor du es registrierst. Benötigt nur den Image-Namen, z. B. my-game-server: Das Projekt wird anhand deines Tokens ermittelt. |
edgegap_delete_registry_tag ● | Löscht ein einzelnes Tag und das Image, auf das es verweist, um alte Builds zu bereinigen. Pro Aufruf genau ein Tag; latest, Platzhalter und Listen werden abgelehnt. |
Dedizierte Server (empfohlen)
| Tool | Funktion |
|---|---|
edgegap_list_apps | Listet deine Anwendungen auf. |
edgegap_create_app ● | Erstellt eine Anwendung. |
edgegap_update_app ● | Aktiviert oder deaktiviert eine Anwendung für neue Bereitstellungen. |
edgegap_list_app_versions | Listet Versionen mit Image, Ressourcen, Ports (mit TLS Upgrade) und Angabe, ob eine Registry-Anmeldung eingerichtet ist. |
edgegap_get_app_version | Liest eine Version vollständig aus: Image, Ressourcen, Ports, maximale Laufzeit, Image-Caching, Neustartrichtlinie und Namen der Umgebungsvariablen (niemals deren Werte). |
edgegap_create_app_version ● | Registriert ein Container-Image als bereitstellbare Version. Unterstützt TLS Upgrade für WS- und HTTP-Ports, das Browser-Clients (WebGL) für wss:// benötigen. |
edgegap_update_app_version ● | Ändert eine vorhandene Version: neues Image-Tag, Aktivierung/Deaktivierung, CPU und Arbeitsspeicher (beides zusammen), maximale Laufzeit, Registry-Anmeldung, Image-Caching (force_cache), Kulanzzeitraum beim Herunterfahren, Ports, Umgebungsvariablen und den Endpoint Storage, in dem die Logs gespeichert werden. Nur die übergebenen Felder werden geändert, aber ports und env ersetzen die gesamte Liste. Laufende Bereitstellungen behalten die alten Einstellungen. |
edgegap_delete_app_version ● | Löscht eine einzelne Version, um Testversionen zu bereinigen. Wird abgelehnt, solange eine Bereitstellung dieser Version läuft. Das Registry-Image bleibt erhalten. |
edgegap_delete_app ● | Löscht eine Anwendung und ihre Versionen. Wird abgelehnt, solange eine ihrer Bereitstellungen läuft oder sie mehr Versionen als max_versions hat (Standardwert 0). |
edgegap_list_locations | Listet die Städte auf, in denen Edgegap bereitstellt, oder bei Angabe einer Version nur die Städte, in denen gerade Kapazität verfügbar ist. |
edgegap_list_ping_beacons | Listet die Ping-Beacons auf, anhand derer Spiel-Clients ihre Latenz zu den einzelnen Regionen messen. |
edgegap_deploy ● | Stellt einen autoritativen dedizierten Server in der Nähe deiner Spieler bereit. Wird immer mit edgegap-mcp markiert und meldet, wann Edgegap ihn stoppt. Optional: CPU und Arbeitsspeicher nur für diese Bereitstellung, Webhooks, die Edgegap aufruft, wenn der Server bereit ist, fehlschlägt oder beendet wird, require_cached_locations für schnellere Starts und private_host_ids, um ihn zuerst auf deiner privaten Flotte bereitzustellen. |
edgegap_list_fleet_hosts | Listet die Hosts einer deiner privaten Flotten mit Status und Standort auf, um Bereitstellungen auf ihnen vorzunehmen. |
edgegap_wait_for_deployment | Wartet, bis der Server bereit ist, und gibt die Verbindungsadresse zurück. |
edgegap_get_deployment | Liest den Status einer Bereitstellung aus. |
edgegap_list_deployments | Listet laufende Bereitstellungen, gefiltert nach Anwendung, Version, Status, Tags und mehr und nach Alter sortiert. Findet Server, die noch laufen; only_agent_deployments: true listet alle Bereitstellungen auf, die ein Agent gestartet hat. Siehe Bereitstellungen filtern. |
edgegap_get_deployment_logs | Liest Container-Logs und Absturzdaten aus, solange die Bereitstellung läuft. Nach dem Stoppen bleiben Logs nur erhalten, wenn Endpoint Storage eingerichtet wurde. |
edgegap_get_deployment_metrics | Fasst CPU-Auslastung, CPU-Drosselung, Arbeitsspeicher- und Netzwerknutzung zusammen (aktuell, durchschnittlich, Spitzenwert), um eine Version zu dimensionieren oder einen Absturz zu untersuchen. |
edgegap_stop_deployment ● | Stoppt eine einzelne Bereitstellung anhand ihrer exakten Request-ID. Kein Massenstopp. |
edgegap_tag_deployment ● | Fügt einer laufenden Bereitstellung Tags hinzu oder entfernt sie, z. B. um ein Match zu kennzeichnen. Das Tag edgegap-mcp bleibt erhalten. |
edgegap_report_deployment ● | Meldet eine Bereitstellung mit Angabe eines Grundes an Edgegap, etwa für das Moderations-Backend eines Studios. Die Bereitstellung läuft weiter. |
Logs und Dateien (Endpoint Storage)
Container-Logs verschwinden mit der Bereitstellung, sofern sie nicht in deinen eigenen S3-kompatiblen Bucket exportiert werden.
| Tool | Funktion |
|---|---|
edgegap_list_endpoint_storage | Listet deine Endpoint-Storage-Buckets und deren Pull-Profile auf. Geheime Schlüssel werden niemals zurückgegeben. |
edgegap_create_endpoint_storage ● | Registriert einen Bucket (AWS S3, Cloudflare R2, DigitalOcean Spaces …) für den Log-Export. Setze endpoint_storage für eine Version, um den Export zu aktivieren. Der geheime Schlüssel wird niemals zurückgegeben. |
edgegap_create_pull_profile ● | Kopiert beim Start eine Datei oder einen Ordner aus dem Bucket in den Container (Karten, Konfigurationen, große Assets). |
edgegap_link_pull_profile ● | Verknüpft ein Pull-Profil mit einer Version oder hebt die Verknüpfung auf. |
edgegap_delete_pull_profile ● | Löscht ein einzelnes Pull-Profil. Der Bucket und seine Dateien bleiben erhalten. |
edgegap_delete_endpoint_storage ● | Löscht einen einzelnen Endpoint Storage. Wird abgelehnt, solange Pull-Profile vorhanden sind, es sei denn, max_pull_profiles erlaubt deren Löschung. Der Bucket und seine Logs bleiben erhalten. |
Relays (nur Host-Client-Spiele)
Ein Relay ist kein Gameserver: Es leitet Datenverkehr weiter, während das Spiel eines Spielers das Match hostet. Siehe Dedizierte Server oder Relays?.
| Tool | Funktion |
|---|---|
edgegap_create_relay_session ● | Erstellt eine Relay-Sitzung für deine Spieler und gibt die Relay-Adresse sowie das Autorisierungstoken jedes Spielers zurück. |
edgegap_get_relay_session | Liest eine Relay-Sitzung aus. |
edgegap_list_relay_sessions | Listet offene Relay-Sitzungen auf, um noch laufende Sitzungen zu finden. Keine Autorisierungstokens. |
edgegap_authorize_relay_user ● | Fügt einen Spieler hinzu, der später beitritt. |
edgegap_revoke_relay_user ● | Entfernt einen Spieler aus einer Relay-Sitzung. |
edgegap_delete_relay_session ● | Schließt eine Relay-Sitzung. |
[!WARNING] Für Bereitstellungen und Relay-Sitzungen fallen Gebühren an, solange sie laufen. Bitte deinen Agent, Testbereitstellungen zu stoppen und Test-Relay-Sitzungen zu löschen, wenn er fertig ist.
Beispiel-Prompts
- „Erstelle ein Dockerfile für meinen Unity-Server-Build, pushe es und stelle dann einen Server in meiner Nähe bereit.“
- „Prüfe mein Dockerfile für Edgegap und behebe alle Probleme.“
- „Meine Bereitstellung ist fehlgeschlagen. Lies die Logs und sag mir, warum.“
- „Wie viel CPU und Arbeitsspeicher hat mein letztes Match verbraucht? Dimensioniere meine Version entsprechend.“
- „Mein Spiel verwendet Host-Client-Netzwerk. Richte ein Edgegap-Relay für zwei Spieler ein.“
🛡️ Schutzmaßnahmen
Dein API-Token kann alles in deiner Organisation tun. Deshalb setzt der Server eigene Grenzen dafür, was ein Agent damit tun kann. Sie gelten sowohl für den lokalen Server als auch für den gehosteten Endpunkt.
| Schutzmaßnahme | Wirkung |
|---|---|
| Probelauf | Jedes Tool, das etwas ändert, akzeptiert dry_run: true: Es gibt die genaue Methode, den Host, den Pfad und den Body zurück, wobei der Token, Registry-Tokens und Env-Werte maskiert werden, und sendet nichts. Lokale Prüfungen werden weiterhin ausgeführt. |
| Kein Token in Containern | Ein Deploy oder eine Version wird abgelehnt, ohne etwas zu senden, wenn dein API-Token im Namen oder Wert einer Env-Variablen, in einem Tag oder in einer Webhook-URL vorkommt. Env-Werte werden niemals zurückgegeben. |
| Agent-Tag | Jedes Deployment erhält das Tag edgegap-mcp, auch wenn der Agent eigene Tags übergibt. edgegap_list_deployments mit only_agent_deployments: true findet sie alle. |
| Automatischer Stopp | Bei jedem Deploy wird angegeben, wann Edgegap es stoppt: anhand von max_duration der Version, begrenzt auf EDGEGAP_MAX_DURATION_MINUTES (Standardwert 60) für vom Agent erstellte Versionen. Edgegap hat kein Zeitlimit pro Deployment. Daher wird das Deploy einer Version abgelehnt, deren max_duration über diesem Grenzwert liegt oder unbegrenzt ist (bei einer anderswo erstellten Version beträgt der Standardwert 1440 Minuten), es sei denn, der Agent übergibt allow_long_running: true. Der Agent wird angewiesen, dies nur zu tun, nachdem er dich gefragt hat. |
| Deploys pro Ausführung | Der lokale Server sendet pro Prozess höchstens EDGEGAP_MAX_DEPLOYS_PER_RUN Deploys (Standardwert 20), einschließlich fehlgeschlagener, da ein abgelehntes Deploy trotzdem ein Deployment erstellen kann. Wenn die API ein Deploy ablehnt, aber trotzdem eines erstellt, wird es in der Fehlermeldung benannt, damit der Agent es stoppen kann. |
| Keine veränderlichen Image-Tags | edgegap_create_app_version lehnt latest (unabhängig von Groß- und Kleinschreibung), ein leeres Tag oder ein von Docker abgelehntes Tag ab, ohne etwas zu senden: Edgegap speichert Images anhand des Tags zwischen, sodass ein erneut gepushtes Tag einen veralteten Build deployen kann. Auch das Deploy einer vorhandenen Version auf latest wird abgelehnt, ebenso die Anforderung von Registry-Push-Befehlen für latest. |
| Prüfung der Image-Referenz | Ein docker_image, das zugleich einen Registry-Host, ein Tag oder einen Digest enthält (z. B. registry.edgegap.com/proj/server:v2), wird abgelehnt. Die Fehlermeldung nennt die korrekte Aufteilung in docker_repository / docker_image / docker_tag. edgegap_validate_server_config kennzeichnet dieselben Fälle. |
| Deployment-Obergrenze | edgegap_deploy wird abgelehnt, wenn bereits EDGEGAP_MAX_AGENT_DEPLOYMENTS (Standardwert 5) Deployments mit dem Tag edgegap-mcp laufen, damit ein Agent in einer Schleife nicht immer mehr kostenpflichtige Server startet. Die Ablehnung erklärt, wie sie aufgelistet und gestoppt werden können. |
| Verborgene geheime Env-Variablen | Env-Variablen, deren Namen auf Geheimnisse hindeuten (TOKEN, SECRET, PASSWORD, API_KEY, CREDENTIAL, AUTH …), werden mit is_hidden gesendet, damit das Dashboard ihre Werte nicht im Klartext anzeigt. |
| Striktes Stoppen | edgegap_stop_deployment stoppt ein Deployment anhand seiner exakten Request-ID. Leere IDs, Platzhalter und Listen werden abgelehnt. Es gibt kein Massenstoppen. Mit EDGEGAP_STOP_OWN_ONLY=1 werden nur Deployments mit dem Tag edgegap-mcp gestoppt. |
| Vorsichtiges Löschen | edgegap_delete_app_version und edgegap_delete_app akzeptieren jeweils einen exakten Namen und werden abgelehnt, solange ein Deployment davon läuft. Eine Anwendung mit Versionen wird nur gelöscht, wenn max_versions diese abdeckt. |
| Webhook- und Bucket-URLs | Deploy-Webhooks und Endpoint-Storage-Endpunkte müssen https-URLs ohne Zugangsdaten sein und werden abgelehnt, wenn sie dein API-Token enthalten. |
| Host in jedem Ergebnis | Jedes Ergebnis beginnt mit dem API-Host, z. B. [api.edgegap.com] oder [custom · host], wenn EDGEGAP_BASE_URL auf einen anderen Host verweist. Eine Basis-URL mit api.edgegap.com muss exakt https://api.edgegap.com lauten, andernfalls verweigert der Server den Start. |
| Schwärzung | Der Token wird aus jeder Fehlermeldung entfernt, bevor sie den Agent erreicht. |
Der Server weist sich bei jedem API-Aufruf mit User-Agent: edgegap-mcp/<version> (<MCP client name>) aus.
Nutzungsanalysen. Der lokale Server und das selbst gehostete Docker-Image senden nichts außer den API-Aufrufen selbst. Der gehostete Endpunkt unter mcp.edgegap.dev verwendet PostHog MCP Analytics (@posthog/mcp) und sendet Nutzungsereignisse an das PostHog von Edgegap: welcher MCP-Client verbunden war, welches Tool, welcher Prompt oder welche Skill-Ressource verwendet wurde, die Namen (nicht die Werte) der übergebenen Argumente, ob ein Aufruf erfolgreich war, sein Fehlercode, die Phase, in der er fehlgeschlagen ist, und den Status der Edgegap-API, wie lange er gedauert hat, ob es sich um einen Probelauf handelte, einige Angaben zum Aufruf (wie das Warten auf ein Deployment endete, ein Validierungsergebnis, welcher Skill geladen wurde), welcher Schritt des Golden Path erreicht wurde, außerdem die Serverversion und den Ländercode von Cloudflare. Bei einem fehlgeschlagenen Aufruf werden außerdem die Fehlermeldung nach Entfernung deines Tokens, die Werte der von dir übergebenen Argumente sowie alles, was wie Zugangsdaten, eine IP-Adresse oder eine ID aussieht, auf 300 Zeichen gekürzt, gesendet. Deployment-IDs werden nur als schlüsselgebundener Hash gesendet. Es werden ausschließlich ausdrücklich benannte Metadateneigenschaften durchgelassen. Dein Token, die Werte von Tool-Argumenten (IP-Adressen, Env-Variablen, Anwendungs- oder Image-Namen) und Ergebnisse werden niemals gesendet; GeoIP ist deaktiviert. Den Tools werden keine Parameter hinzugefügt. Ereignisse eines Tokens werden unter einem schlüsselgebundenen, nicht umkehrbaren Hash dieses Tokens gruppiert. Die vollständige Liste steht in docs/analytics.md. Um dich abzumelden, sende den Header X-Edgegap-Telemetry: off (oder DNT: 1) oder verwende den lokalen Server.
🚨 Fehlerbehebung
Sieh dir häufige Fehlercodes an und erfahre, wie du deine Integration freischaltest.
401 Unauthorized
Deine MCP-Integration fügt den Authorization-Header höchstwahrscheinlich nicht korrekt hinzu.
Tool Call Failed
Deinem Client fehlt ein Edgegap-Token. Das tritt bei benutzerdefinierten Connectors von claude.ai und Claude Desktop auf, die keinen Header Authorization senden können. Die Alternative findest du unter Claude Desktop und claude.ai.
[!WARNING] Dies ist eine bekannte Einschränkung, die in naher Zukunft behoben wird. Bleib auf dem Laufenden!
403 Forbidden
Deine MCP-Integration verwendet wahrscheinlich den Vorlagen-Token oder einen gelöschten Token. Bitte überprüfe, ob der von deiner Integration verwendete Token exakt mit dem im Dashboard angezeigten Token übereinstimmt.
424 Image Could Not Be Pulled
Edgegap konnte dein Container-Image nicht abrufen. Überprüfe das Repository, den Image-Namen und das Tag und stelle sicher, dass das Tag gepusht wurde (bitte deinen Agenten, die Registry-Tags aufzulisten). Bei Images in der Edgegap-Registry muss der Image-Name dein Projekt enthalten, z. B. my-project/my-game-server.
Registry Credentials Unavailable
Edgegap stellt Registry-Zugangsdaten nur für den Quick-Start-Token bereit, den die Unity- und Unreal-Plugins verwenden. Mit einem regulären API-Token kann dein Agent sie daher nicht abrufen und fragt dich stattdessen danach. Kopiere Project, Username und Token aus dem Dashboard unter Container Registry oder pushe zu einer anderen Registry, aus der Edgegap Images abrufen kann (Docker Hub, GitHub, AWS ECR, GCP, GitLab). Siehe Externe Registries.
"status": "empty" oder "not_configured"
Kein Fehler. Eine leere Liste (noch keine Anwendungen, keine laufenden Deployments, noch nie ein Image gepusht) oder eine Funktion, die diese Organisation nicht eingerichtet hat (Relays, eine Registry, auf die dieser Token nicht zugreifen kann), wird als normales Ergebnis mit status und einem next_step zurückgegeben. Dein Agent sollte den nächsten Schritt ausführen, statt es erneut zu versuchen.
Noch kein Token
Die Skills (edgegap_list_skills, edgegap_get_skill), edgegap_context, edgegap_generate_dockerfile und edgegap_validate_server_config funktionieren ohne Token, sodass ein Agent zuerst den Server-Build vorbereiten kann. Erstelle ein Konto unter app.edgegap.com und einen Token unter User Settings → Tokens. edgegap_context mit check_token: true zeigt an, ob ein Token für die Sitzung vorhanden und gültig ist, und zeigt seine letzten vier Zeichen an, damit du ihn auf dieser Seite findest.
Läuft lokal, aber nicht auf Edgegap
Bitte deinen Agenten, deine Serverkonfiguration zu validieren oder eine neue Dockerfile zu erstellen. Die häufigsten Ursachen sind ein auf Apple Silicon erstelltes Image ohne docker build --platform linux/amd64, ein Server, der an einem anderen Port lauscht als dem, den die Version freigibt, oder ein als TCP konfigurierter UDP-Transport.
Andere API-Fehler
Mögliche Fehlerantworten für einzelne API-Endpunkte findest du in unserer API-Referenz.
[!NOTE] Wenn du Hilfe brauchst, kontaktiere uns bitte über Discord. Support für Live-Spiele erhältst du über unser Ticketsystem.
🛠️ Selbst hosten
Der gehostete Endpunkt unter mcp.edgegap.dev läuft als Cloudflare Worker (siehe worker/INSTALL.md). Um denselben zustandslosen HTTP-Server auf deiner eigenen Infrastruktur auszuführen, verwende das Docker-Image:
docker build -t edgegap-mcp .
docker run --rm -p 8080:8080 edgegap-mcp
Clients verbinden sich mit http://<host>:8080/mcp und übergeben ihren eigenen Header Authorization, genauso wie bei der Verbindung mit dem gehosteten Endpunkt. Das Image enthält keine Zugangsdaten, und /health antwortet auch ohne Token. PORT, HOST, EDGEGAP_READ_ONLY, EDGEGAP_APP_ALLOWLIST, EDGEGAP_MAX_DURATION_MINUTES, EDGEGAP_MAX_AGENT_DEPLOYMENTS und EDGEGAP_STOP_OWN_ONLY gelten; übergib jeden davon mit -e NAME=value. Übergib niemals einen API-Token an den Container: Jeder Client sendet seinen eigenen bei jeder Anfrage. Lies worker/DECISION.md, bevor du ihn außerhalb eines privaten Netzwerks verfügbar machst.
Vorgefertigte Images für linux/amd64 und linux/arm64 werden unter ghcr.io/edgegap/llm-mcp-server (und für bestehende Setups unter dem alten Namen ghcr.io/edgegap/edgegap-mcp) veröffentlicht. Bei jedem Push zu main erhalten sie die Tags main und sha-<commit>, außerdem das Versions-Tag bei v*-Tags:
docker run --rm -p 8080:8080 ghcr.io/edgegap/llm-mcp-server:main
Entwicklung
Unter CONTRIBUTING.md findest du die Prüfungen, die eine Änderung bestehen muss, unter CHANGELOG.md die Änderungen jeder Version und unter SECURITY.md Informationen zum Melden einer Sicherheitslücke.
npm ci
npm run build
npm test # mock-API tests; none reach Edgegap
npm run typecheck:worker
So aktualisierst du die gebündelten Skills auf den neuesten Commit von llm-agent-skills und veröffentlichst anschließend wie gewohnt:
npm run sync-skills -- --ref main
npm run check-skills # exit 1 if src/skills.generated.ts differs from the pin
| Test | Prüft |
|---|---|
test/unit.test.mjs | Unit-Tests für Tag-, Image-, Geheimnisnamen-, URL- und Schwärzungsregeln |
test/package.mjs | Paketierung: ein bin, Laufzeitabhängigkeiten, Versionen in step |
test/skills.mjs | Skills über MCP: Tools, Prompts, Ressourcen, Pfadsicherheit, Bundle entspricht dem Pin |
test/smoke.mjs | Handshake, Tool-Registrierung, schreibgeschützter Modus |
test/guards.mjs | Lokale Validierung und Durchsetzung der Allowlist |
test/elicit.mjs | Token-Abfrage: akzeptieren, Bestätigung ablehnen, ablehnen, keine Unterstützung |
test/newtools.mjs | Validator-, Dockerfile-Generator-, Registry-, Deployment-, Relay- und Matchmaker-Tools gegen eine lokale Mock-API |
test/http.mjs | Selbst gehosteter HTTP-Server: Discovery ohne Token, Tokens pro Anfrage, fremde Zugangsdaten |
test/spec.mjs | Jeder vom Server gesendete Endpunkt und jedes Request-Body-Feld ist in spec/ enthalten (Schreib-Tools werden per Probelauf geprüft) |
test/snapshot.mjs | Tool-Namen, Beschreibungen, Schemas und Anweisungen stimmen mit test/tools.snapshot.json überein; npm run snapshot:update nach einer absichtlichen Änderung |
test/live-check.mjs | Nicht in npm test. Wird mit einem Token einer Nicht-Produktionsorganisation gegen die echte API ausgeführt |
Designentscheidungen, das Sicherheitsmodell und bewusst nicht berücksichtigte Bereiche findest du in DESIGN.md.