Edgegap
oficialImplementa servidores de juegos multijugador desde tu agente de codificación. Diez herramientas que llevan un servidor dedicado de Unity, Unreal o Godot desde la imagen de contenedor hasta jugadores conectados.
¿Qué puedes hacer con Edgegap MCP?
- Escribir un Dockerfile — Pide a tu agente que genere un Dockerfile para una compilación de servidor de Unity, Unreal, Godot u otro, con opciones para modo sin interfaz gráfica y los puertos correspondientes.
- Validar antes de compilar — Comprueba si hay problemas en un Dockerfile existente, los puertos, los recursos y la etiqueta de la imagen, como imágenes ARM o servidores vinculados a localhost.
- Implementar un servidor dedicado — Registra una imagen como versión de la aplicación, elige una ubicación, implementa el servidor cerca de los jugadores y obtén la IP y los puertos del servidor.
- Diagnosticar una implementación fallida — Consulta los registros del contenedor, los detalles del fallo y las métricas de CPU y memoria para averiguar por qué falló o se bloqueó un servidor.
- Configurar una sesión de retransmisión — Crea una retransmisión para partidas de anfitrión y cliente, y obtén la dirección de retransmisión y el token de autorización de cada jugador.
Servidor MCP alojado
npx add-mcp 'https://mcp.edgegap.dev/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Servidor MCP de Edgegap
Conecta agentes de programación con IA a Edgegap mediante nuestro servidor MCP. Tu agente puede llevar una compilación de servidor sin interfaz gráfica hasta el punto en que los jugadores se conecten: escribir o revisar el Dockerfile, subir la imagen a tu registro privado de Edgegap, desplegar un servidor dedicado con autoridad cerca de los jugadores y leer los registros cuando algo falle.
👉 Funciones compatibles
[!TIP] ¿Usas Unity, Unreal Engine o Godot? Nuestras guías y complementos para Unity, Unreal Engine y Godot siguen siendo la vía más rápida para esos motores. El servidor MCP funciona junto con ellos y también por sí solo con cualquier motor.
Usa nuestro servidor MCP cuando quieras:
- Crear un contenedor para tu servidor de juego: tu agente escribe un Dockerfile para tu compilación (o revisa el que ya tienes) según las prácticas recomendadas, sube la imagen a nuestro registro privado de contenedores y elimina las etiquetas de imágenes antiguas que ya no se usan para recuperar capacidad del registro.
- Desplegar un servidor dedicado: crear y actualizar versiones de aplicaciones, revisar las ubicaciones disponibles, desplegar cerca de tus jugadores y obtener la IP del servidor y los puertos para probar la conexión del cliente.
- Crear una canalización de CI/CD: probar tus despliegues y eliminarlos desde un sistema de compilación.
- Solucionar problemas de un servidor de juego: inspeccionar las versiones de la aplicación y el estado del despliegue, leer los registros del contenedor y la utilización de CPU/memoria, o reproducir un despliegue fallido.
- Ejecutar juegos con anfitrión en el cliente y juegos entre pares: crear sesiones de retransmisión que permitan atravesar NAT y evitar bloqueos de conexión. Revisa Modelos de orquestación y ¿Servidores dedicados o retransmisiones? antes de decidir.
[!WARNING] Fuera del alcance o no compatible con MCP: compilar el ejecutable del servidor Linux; crear, iniciar o detener un emparejador (sube la configuración generada en el panel); navegador de servidores; salas; clústeres administrados; flotas privadas; o facturación.
[!NOTE] Si necesitas ayuda, contáctanos por Discord. Para recibir asistencia con juegos en producción, consulta nuestro sistema de tickets.
⚖️ ¿Servidores dedicados o retransmisiones?
Edgegap puede alojar tu juego multijugador de dos maneras. Recomendamos los servidores dedicados, al igual que nuestro servidor MCP: tu agente usará un servidor dedicado de forma predeterminada y solo recurrirá a una retransmisión si has elegido una configuración con anfitrión en el cliente.
| Servidor dedicado (recomendado) | Retransmisión | |
|---|---|---|
| Qué ejecuta Edgegap | Tu compilación de servidor sin interfaz gráfica, cerca de los jugadores | Solo un reenviador de tráfico, sin código del juego |
| Quién ejecuta el juego | El servidor | El juego de un jugador (el anfitrión) |
| Trampas | Mucho más difícil; el servidor tiene autoridad | El anfitrión puede cambiar cualquier cosa |
| Equidad | Todos los jugadores se conectan directamente al servidor | El anfitrión no tiene latencia; todos los demás pasan por dos saltos |
| Cuando el anfitrión se va | La partida continúa | La partida termina, a menos que tu juego admita la migración del anfitrión |
| Rendimiento limitado por | La CPU y la memoria asignadas al servidor | El PC del anfitrión y la velocidad de subida de su conexión a Internet |
| Necesitas | Una compilación de servidor en una imagen de contenedor | Netcode configurado como servidor de escucha (con anfitrión en el cliente) |
[!NOTE] ¿Aún no tienes una imagen de servidor? Eso no es motivo para elegir retransmisiones. Tu agente puede escribir el Dockerfile para tu compilación con
edgegap_generate_dockerfile. Obtén más información sobre las retransmisiones en Retransmisión distribuida.
🚀 Instalación
Instalar el servidor MCP es muy sencillo:
- Instala el servidor MCP para Agentes populares o mediante una Integración personalizada.
- Genera y asigna un token de API para que tu agente lo use con nuestro servidor MCP.
Genera (y consulta) tus tokens secretos para la API de Edgegap en Panel - Configuración de usuario / Tokens.
Añade tu token secreto a cada solicitud de API como encabezado HTTP (incluye la palabra token):
Authorization: token xxxxxxxx-e458-4592-b607-c2c28afd8b62
[!CAUTION] No integres los endpoints de la API de Edgegap en el cliente del juego, ya que tu token de API proporciona acceso ilimitado a tu cuenta. Consulta Integración para ver los endpoints y las funciones de API seguros para clientes.
[!TIP] Si tus tokens secretos se ven comprometidos o se filtran, elimínalos y vuelve a crearlos desde el panel.
El token abarca toda la organización y no se puede limitar a una sola aplicación. Lee DESIGN.md antes de dárselo a un agente desatendido.
Agentes populares
Instala el servidor MCP de Edgegap en tu IDE con agente preferido mediante los botones Cursor o VS Code de la parte superior de esta página y, después, añade tu token al encabezado Authorization.
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 lee el token de una variable de entorno y lo envía como Authorization: Bearer <token>, que el endpoint alojado acepta. En ~/.codex/config.toml:
[mcp_servers.edgegap]
url = "https://mcp.edgegap.dev/mcp"
bearer_token_env_var = "EDGEGAP_API_TOKEN"
Después, establece EDGEGAP_API_TOKEN con tu token en el entorno desde el que se inicia Codex.
Claude Desktop y claude.ai
Los conectores personalizados de claude.ai y Claude Desktop no pueden enviar un encabezado Authorization, por lo que el endpoint alojado nunca recibe tu token: el conector aparece como conectado, pero todas las llamadas a herramientas fallan. Usa el Servidor local en su lugar.
En Claude Desktop, abre Configuración → Desarrollador → Editar configuración y añade el servidor local a claude_desktop_config.json:
{
"mcpServers": {
"edgegap": {
"command": "npx",
"args": ["-y", "@edgegap/mcp"]
}
}
}
No incluyas el token y se te pedirá la primera vez que lo uses. claude.ai en el navegador no puede ejecutar un servidor local, así que no puede usar Edgegap MCP hasta que el endpoint alojado admita OAuth.
Cursor
El botón Cursor de la parte superior de esta página lo instala; para hacerlo manualmente, añade esto a ~/.cursor/mcp.json (o a .cursor/mcp.json en un proyecto):
{
"mcpServers": {
"edgegap": {
"url": "https://mcp.edgegap.dev/mcp",
"headers": { "Authorization": "token xxxxxxxx-e458-4592-b607-c2c28afd8b62" }
}
}
}
VS Code (modo agente de Copilot)
El botón VS Code de la parte superior de esta página lo instala; para hacerlo manualmente, añade esto a .vscode/mcp.json (VS Code usa servers, no mcpServers):
{
"servers": {
"edgegap": {
"type": "http",
"url": "https://mcp.edgegap.dev/mcp",
"headers": { "Authorization": "token xxxxxxxx-e458-4592-b607-c2c28afd8b62" }
}
}
}
Windsurf
En ~/.codeium/windsurf/mcp_config.json, ejecuta el Servidor local, que funciona en todos los clientes que inician servidores MCP como comandos:
{
"mcpServers": {
"edgegap": {
"command": "npx",
"args": ["-y", "@edgegap/mcp"],
"env": { "EDGEGAP_API_TOKEN": "xxxxxxxx-e458-4592-b607-c2c28afd8b62" }
}
}
}
mcp.json
La mayoría de los IDE con agente también admiten la integración pegando una configuración JSON:
{
"mcpServers": {
"Edgegap": {
"type": "http",
"url": "https://mcp.edgegap.dev/mcp",
"headers": {
"Authorization": "token xxxxxxxx-e458-4592-b607-c2c28afd8b62"
}
}
}
}
Integración personalizada
Instala el servidor MCP remoto de Edgegap en el entorno virtualizado de tu agente (¡nunca en tu proyecto!):
Node, con el paquete npx de mcp-remote
{
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.edgegap.dev/mcp", "--transport", "http-only"]
}
Python, con el paquete uvx de mcp-proxy
{
"command": "uvx",
"args": ["mcp-proxy", "--transport", "streamablehttp", "https://mcp.edgegap.dev/mcp"]
}
Instalación con un clic (Claude Desktop)
Descarga edgegap-mcp.mcpb y ábrelo: Claude Desktop instala el servidor local como una extensión y te pide tu token de API, que guarda en el almacenamiento seguro del sistema operativo. La configuración de la extensión también incluye el modo de solo lectura, la lista de aplicaciones permitidas, el límite máximo de duración y el límite de despliegues (las variables que aparecen a continuación). Cada versión incluye el paquete, compilado a partir del código de esa versión. Cualquier otra aplicación que instale paquetes MCPB funciona de la misma manera.
Servidor local
Para mantener tu token de API en tu propio equipo, ejecuta el servidor localmente. No incluyas el token y tu agente te lo pedirá la primera vez que lo uses; solo lo conservará en memoria durante esa sesión:
{
"mcpServers": {
"Edgegap": {
"command": "npx",
"args": ["-y", "@edgegap/mcp"],
"env": { "EDGEGAP_API_TOKEN": "xxxxxxxx-e458-4592-b607-c2c28afd8b62" }
}
}
}
Requiere Node 18 o posterior. Fija una versión en producción (@edgegap/mcp@0.15.4) en lugar de usar siempre la última. Está registrado en el registro oficial de MCP como dev.edgegap/mcp.
El servidor local también puede limitar lo que puede hacer un agente. Estas variables no tienen efecto en el endpoint alojado en mcp.edgegap.dev:
| Variable | Valor predeterminado | Propósito |
|---|---|---|
EDGEGAP_API_TOKEN | (se solicita) | Token de API. Opcional: omítelo y se te pedirá la primera vez que lo uses. El prefijo token se añade automáticamente. Nunca lo pases como argumento de línea de comandos. |
EDGEGAP_READ_ONLY | 0 | Establécelo en 1 y las herramientas que realizan cambios (marcadas con ● en Herramientas) nunca se registrarán, por lo que no se podrá convencer al agente de que las invoque. |
EDGEGAP_APP_ALLOWLIST | (vacío) | Nombres de aplicaciones separados por comas. Limita las aplicaciones en las que el agente puede crear y desplegar. La lectura (listar aplicaciones y versiones) no está limitada, ni tampoco la gestión de los despliegues una vez iniciados. Consulta DESIGN.md. |
EDGEGAP_MAX_DURATION_MINUTES | 60 | Límite máximo de max_duration que el agente puede establecer en una versión. edgegap_deploy también rechaza una versión cuyo max_duration lo supere, o sea ilimitado, a menos que el agente pase allow_long_running: true después de preguntarte. |
EDGEGAP_MAX_AGENT_DEPLOYMENTS | 5 | edgegap_deploy rechaza solicitudes mientras haya en ejecución esta cantidad de despliegues etiquetados como edgegap-mcp. 0 desactiva el límite. |
EDGEGAP_MAX_DEPLOYS_PER_RUN | 20 | Despliegues que puede enviar un proceso del servidor, incluidos los fallidos. Reinicia el servidor para restablecer el contador. 0 lo desactiva. |
EDGEGAP_STOP_OWN_ONLY | 0 | Establécelo en 1 y edgegap_stop_deployment solo detendrá los despliegues etiquetados como edgegap-mcp, para que el agente no pueda detener servidores que no haya iniciado. |
EDGEGAP_ENABLE_SKILLS_UPDATE | 0 | Establécelo en 1 para permitir que edgegap_update_skills ejecute npx skills@1.7.4 update o claude plugin update con apply: true. Si no, mostrará esos comandos para que los ejecutes. En cualquier caso, las habilidades copiadas manualmente se reescriben desde el paquete. Los actualizadores solo reciben la ruta, el directorio de inicio, el directorio temporal, la configuración regional, el proxy y la configuración de npm; nunca reciben variables EDGEGAP_* ni nada cuyo nombre incluya token, secreto, contraseña o clave. |
EDGEGAP_TIMEOUT_MS | 30000 | Tiempo de espera HTTP por solicitud. |
EDGEGAP_SKILLS_CHECK | on | Establécelo en off y las herramientas de habilidades nunca leerán de GitHub la versión más reciente de las habilidades. |
Windows
El servidor local funciona en Windows con Node.js 18 o posterior, y CI ejecuta la compilación y las pruebas de stdio en Windows.
- Muchos clientes MCP de Windows no pueden iniciar
npxdirectamente porque es un script.cmd. Inícialo mediantecmd /c:"command": "cmd", "args": ["/c", "npx", "-y", "@edgegap/mcp"]. En Claude Code:claude mcp add Edgegap --env EDGEGAP_API_TOKEN=<token> -- cmd /c npx -y @edgegap/mcp. - En PowerShell, escribe
npx.cmden lugar denpxpara ejecutarlo manualmente: una instalación nueva de Windows bloquea el script de PowerShellnpx(«la ejecución de scripts está deshabilitada en este sistema»). - El primer inicio descarga el paquete y puede tardar un poco; los siguientes son rápidos.
edgegap_update_skillsencuentra las habilidades instaladas en%USERPROFILE%, igual que en macOS y Linux.
📚 Habilidades
El servidor incluye las habilidades de agente de Edgegap: flujos de trabajo probados, paso a paso, para poner en línea un juego multijugador, con plantillas (Dockerfiles, configuraciones de emparejador y componentes listos para integrar en Unity C# y Unreal C++) y problemas conocidos. Cualquier agente conectado a Edgegap MCP las obtiene sin necesidad de instalarlas por separado ni de usar un token, y se le indica que cargue la habilidad correspondiente antes de trabajar en un proyecto de juego.
| Habilidad | Para |
|---|---|
edgegap | Empieza aquí para cualquier motor que no sea Unity o Unreal Engine, o para preguntas sobre plataformas. Te dirige al resto. |
edgegap-unity | Unity de principio a fin: compilación del servidor, emparejador, cliente y prueba integral. |
edgegap-ngo | Unity con Netcode for GameObjects de principio a fin: inicio y detención automática del servidor, panel Find Match, adaptador Boss Room y emparejador. |
edgegap-fishnet | Unity con FishNet de principio a fin: servidor sin interfaz, Bayou/WebGL, emparejador y prueba integral. |
edgegap-purrnet | Unity con PurrNet de principio a fin: servidor dedicado, panel de conexión, emparejador y prueba integral. |
edgegap-fusion | Unity con Photon Fusion 2 de principio a fin: servidor Linux IL2CPP, servidor enlazado a 0.0.0.0, implementación en Edgegap y kit BR200. |
edgegap-fusion-simplefps | Ejemplo Simple FPS de Photon en servidores dedicados de Edgegap. |
edgegap-godot | Godot 4 con un servidor dedicado de Godot: exportación sin interfaz, ENet o WebSocket y emparejador. |
edgegap-colyseus | Servidores Colyseus en Edgegap, directamente o a través del emparejador. |
edgegap-nakama | Nakama como backend, que inicia servidores de Edgegap para sus partidas. |
edgegap-playfab | Emparejamiento de PlayFab con servidores de Edgegap. |
edgegap-threejs | Three.js y otros juegos de navegador con su propio servidor Node.js. |
edgegap-matchmaking | Diseño del emparejamiento para cualquier motor: quién lo gestiona, perfiles, grupos, selección de región, incorporación de jugadores y emparejadores de terceros. |
edgegap-manus | Juegos de navegador creados con Manus: emparejamiento en el backend, inicio de sesión de Steam, tokens de acceso firmados y servidor Node WebSocket. |
edgegap-unreal | Unreal Engine de principio a fin: motor desde el código fuente, servidor Linux, emparejador y prueba integral. |
edgegap-eos-voice | Chat de voz para un juego de Unreal en Edgegap con EOS Voice: tokens de sala del lado del servidor, salas de partida y de equipo. |
edgegap-server-design | Diseño de servidores autoritativos y ciclo de vida de la implementación. |
edgegap-containerize | El contrato del contenedor, Dockerfiles, registros y versiones de la aplicación. |
edgegap-local-testing | Pruebas de paridad en tu equipo y, después, una implementación de prueba rápida. |
edgegap-troubleshoot | Errores de descarga, ciclos de fallos, falta de memoria y clientes que no pueden conectarse. |
edgegap-deployments-api | Código de backend que implementa servidores: webhooks, limpieza, Nakama, PlayFab, UGS y EOS. |
edgegap-launch | Lista de comprobación de lanzamiento, despliegues graduales, almacenamiento en caché y control de costes. |
Se ofrecen de tres maneras para que todos los clientes MCP puedan acceder a ellas:
- Herramientas:
edgegap_list_skillsyedgegap_get_skill, que carga elSKILL.mdde una habilidad o uno de sus documentos de referencia o plantillas confile. - Indicaciones:
deploy-game-server(«Implementa mi servidor de juego en Edgegap») es el punto de partida: detecta el motor y el sistema de red, carga la habilidad correspondiente y te guía por el recorrido recomendado, incluida la limpieza. También hay una indicación por habilidad, con el nombre de esta. En Claude Code aparecen como comandos de barra, por ejemplo,/mcp__edgegap__deploy-game-server. - Recursos: se muestra el
SKILL.mdde cada habilidad enedgegap-skill://<skill>/SKILL.md; para leer cualquier otro archivo se usa la plantillaedgegap-skill://{skill}/{+path}, por ejemplo,edgegap-skill://edgegap-unity/references/deploy.md.
Cada versión incluye las habilidades del commit fijado en scripts/skills-pin.txt; edgegap_context indica qué paquete está cargado. edgegap_list_skills también consulta en GitHub la versión más reciente del paquete (un número de versión, almacenado en caché durante una hora; EDGEGAP_SKILLS_CHECK=off lo desactiva) e indica si hay una versión más reciente. Además, edgegap_get_skill añade la misma nota debajo del encabezado de una habilidad.
Mantener actualizadas las habilidades instaladas. Si también instalaste las habilidades en tu agente (el complemento de Claude Code edgegap@edgegap, npx skills add edgegap/llm-agent-skills o carpetas copiadas en ~/.claude/skills), edgegap_update_skills compara cada una con la versión más reciente de GitHub. En el servidor local detecta esas instalaciones por sí solo; con apply: true ejecuta npx skills update (solo habilidades de Edgegap) o claude plugin update, y reemplaza las habilidades copiadas manualmente por los archivos incluidos en esta versión, conservando los archivos que hayas añadido y dejando intactos los enlaces simbólicos y las copias de Git. Nunca descarga el texto de las habilidades. El servidor alojado no puede acceder a tu disco: pasa las versiones que tienes cargadas en installed_versions y te indicará cuáles están desactualizadas y cómo actualizarlas.
🧰 Herramientas
Tu agente elige la herramienta adecuada según tu solicitud. No hace falta que indiques cuál usar, pero saber qué hay disponible te ayudará a formular tus peticiones. Las herramientas marcadas con ● modifican algo en tu cuenta, requieren dry_run y están ocultas cuando EDGEGAP_READ_ONLY=1.
| Herramienta | Qué hace |
|---|---|
edgegap_context | Muestra con qué API se comunica este servidor, su versión, si es local o alojado y las medidas de protección vigentes. No realiza llamadas a la API; nunca muestra el token. |
Antes de tu primera implementación
| Herramienta | Qué hace |
|---|---|
edgegap_generate_dockerfile | Escribe un Dockerfile para la compilación de tu servidor: la carpeta de compilación, el binario del servidor o el script de inicio, los puertos y los argumentos de lanzamiento, con las opciones adecuadas para el modo sin interfaz (Unity -batchmode -nographics, Godot --headless), un usuario sin privilegios para Unreal y los puertos correspondientes. Enumera las suposiciones que haya tenido que hacer para que tu agente pueda confirmarlas. Funciona con Unity, Unreal Engine, Godot y cualquier otro motor. |
edgegap_validate_server_config | Comprueba un Dockerfile existente, los puertos, los recursos y la etiqueta de imagen antes de compilar. Detecta imágenes ARM o Windows (Edgegap ejecuta linux/amd64), servidores de Unreal que se ejecutan como root, la ausencia de Unity -batchmode -nographics, servidores enlazados a localhost, puertos que no coinciden con el transporte de red y la etiqueta latest. |
edgegap_get_registry_credentials ● | Devuelve las credenciales para subir imágenes al registro privado de contenedores de Edgegap, junto con los comandos exactos de docker login, compilación y subida. Edgegap solo proporciona estas credenciales mediante el token de inicio rápido de los complementos de Unity/Unreal; con un token de API normal, indica a tu agente que te pida las credenciales de inicio de sesión de la página Container Registry del panel. |
edgegap_list_registry_tags | Confirma que la imagen se haya subido antes de registrarla. Solo requiere el nombre de la imagen, por ejemplo, my-game-server: el proyecto se obtiene de tu token. |
edgegap_delete_registry_tag ● | Elimina una etiqueta y la imagen a la que apunta para limpiar compilaciones antiguas. Una etiqueta exacta por llamada; se rechazan latest, los comodines y las listas. |
Servidores dedicados (recomendado)
| Herramienta | Qué hace |
|---|---|
edgegap_list_apps | Muestra tus aplicaciones. |
edgegap_create_app ● | Crea una aplicación. |
edgegap_update_app ● | Activa o desactiva una aplicación para nuevas implementaciones. |
edgegap_list_app_versions | Muestra las versiones con su imagen, recursos, puertos (con TLS Upgrade) y si tienen configurado un inicio de sesión en el registro. |
edgegap_get_app_version | Lee todos los detalles de una versión: imagen, recursos, puertos, duración máxima, almacenamiento en caché de imágenes, política de reinicio y nombres de variables de entorno (nunca sus valores). |
edgegap_create_app_version ● | Registra una imagen de contenedor como versión implementable. Admite TLS Upgrade en puertos WS y HTTP, que los clientes de navegador (WebGL) necesitan para wss://. |
edgegap_update_app_version ● | Modifica una versión existente: una nueva etiqueta de imagen, activación o desactivación, CPU y memoria (ambas juntas), duración máxima, inicio de sesión en el registro, almacenamiento en caché de imágenes (force_cache), período de gracia para el apagado, puertos, variables de entorno y el Endpoint Storage donde se guardan sus registros. Solo cambian los campos indicados, pero ports y env reemplazan la lista completa. Las implementaciones en ejecución conservan la configuración anterior. |
edgegap_delete_app_version ● | Elimina una versión para limpiar versiones de prueba. Se rechaza si hay una implementación de esa versión en ejecución. La imagen del registro se conserva. |
edgegap_delete_app ● | Elimina una aplicación y sus versiones. Se rechaza si hay alguna implementación en ejecución o si tiene más versiones que max_versions (0 de forma predeterminada). |
edgegap_list_locations | Muestra las ciudades donde Edgegap implementa servidores o, para una versión concreta, solo aquellas que tienen capacidad disponible en ese momento. |
edgegap_list_ping_beacons | Muestra las balizas de ping que los clientes del juego usan para medir la latencia con cada región. |
edgegap_deploy ● | Implementa un servidor dedicado autoritativo cerca de tus jugadores. Siempre se etiqueta como edgegap-mcp e indica cuándo lo detendrá Edgegap. Opcionalmente, permite especificar CPU y memoria solo para esta implementación, webhooks que Edgegap llama cuando el servidor está listo, falla o termina, require_cached_locations para acelerar el inicio y private_host_ids para priorizar tu flota privada. |
edgegap_list_fleet_hosts | Muestra los hosts de una de tus flotas privadas, con su estado y ubicación, para implementar servidores en ellos. |
edgegap_wait_for_deployment | Espera hasta que el servidor esté listo y devuelve la dirección de conexión. |
edgegap_get_deployment | Consulta el estado de una implementación. |
edgegap_list_deployments | Muestra las implementaciones en ejecución, filtradas por aplicación, versión, estado, etiquetas y otros criterios, y ordenadas por antigüedad. Permite encontrar servidores que siguen en ejecución; only_agent_deployments: true muestra todos los que inició un agente. Consulta Filtrar implementaciones. |
edgegap_get_deployment_logs | Lee los registros del contenedor y los detalles de fallos mientras la implementación está en ejecución. Cuando se detiene, los registros solo se conservan si se configuró Endpoint Storage. |
edgegap_get_deployment_metrics | Resume el uso de CPU, limitación de CPU, memoria y red (valor más reciente, promedio y máximo) para ajustar el tamaño de una versión o investigar un fallo. |
edgegap_stop_deployment ● | Detiene una implementación mediante su ID de solicitud exacto. No permite detener varias a la vez. |
edgegap_tag_deployment ● | Añade o elimina etiquetas de una implementación en ejecución, por ejemplo, para marcar una partida. La etiqueta edgegap-mcp se conserva. |
edgegap_report_deployment ● | Notifica una implementación a Edgegap con un motivo, para el backend de moderación de un estudio. La implementación sigue en ejecución. |
Registros y archivos (Endpoint Storage)
Los registros del contenedor desaparecen cuando termina la implementación, a menos que se exporten a tu propio bucket compatible con S3.
| Herramienta | Qué hace |
|---|---|
edgegap_list_endpoint_storage | Muestra tus buckets de Endpoint Storage y sus perfiles de descarga. Nunca devuelve claves secretas. |
edgegap_create_endpoint_storage ● | Registra un bucket (AWS S3, Cloudflare R2, DigitalOcean Spaces…) para exportar registros. Configura endpoint_storage en una versión para activar la exportación. La clave secreta nunca se devuelve. |
edgegap_create_pull_profile ● | Copia un archivo o una carpeta del bucket al contenedor durante el inicio (mapas, configuraciones y recursos grandes). |
edgegap_link_pull_profile ● | Vincula un perfil de descarga a una versión o lo desvincula. |
edgegap_delete_pull_profile ● | Elimina un perfil de descarga. El bucket y sus archivos se conservan. |
edgegap_delete_endpoint_storage ● | Elimina un Endpoint Storage; se rechaza si tiene perfiles de descarga, a menos que max_pull_profiles lo permita. El bucket y sus registros se conservan. |
Relés (solo juegos con anfitrión-cliente)
Un relé no es un servidor de juego: reenvía el tráfico mientras el juego de un jugador aloja la partida. Consulta ¿Servidores dedicados o relés?.
| Herramienta | Qué hace |
|---|---|
edgegap_create_relay_session ● | Crea una sesión de relé para tus jugadores y devuelve la dirección del relé y el token de autorización de cada jugador. |
edgegap_get_relay_session | Consulta una sesión de relé. |
edgegap_list_relay_sessions | Muestra las sesiones de relé abiertas para encontrar las que siguen en ejecución. No incluye tokens de autorización. |
edgegap_authorize_relay_user ● | Añade a un jugador que se une más tarde. |
edgegap_revoke_relay_user ● | Elimina a un jugador de una sesión de relé. |
edgegap_delete_relay_session ● | Cierra una sesión de relé. |
[!WARNING] Las implementaciones y las sesiones de relé se facturan mientras están en ejecución. Pide a tu agente que detenga las implementaciones de prueba y elimine las sesiones de relé de prueba cuando termine.
Ejemplos de indicaciones
- «Escribe un Dockerfile para la compilación de mi servidor de Unity, luego súbelo e implementa un servidor cerca de mí»
- «Comprueba mi Dockerfile para Edgegap y corrige cualquier problema»
- «Mi implementación falló. Lee los registros y dime por qué»
- «¿Cuánta CPU y memoria usó mi última partida? Ajusta el tamaño de mi versión»
- «Mi juego usa redes de anfitrión-cliente. Configura un relé de Edgegap para dos jugadores»
🛡️ Medidas de protección
Tu token de API puede hacer cualquier cosa en tu organización, así que el servidor añade sus propios límites a las acciones que un agente puede realizar con él. Se aplican tanto al servidor local como al endpoint alojado.
| Protección | Qué hace |
|---|---|
| Simulación | Todas las herramientas que modifican algo aceptan dry_run: true: devuelven el método, el host, la ruta y el cuerpo exactos, con el token, los tokens del registro y los valores de entorno ocultos, y no envían nada. Las comprobaciones locales siguen ejecutándose. |
| Sin tokens en contenedores | Se rechaza un despliegue o una versión, sin enviar nada, si tu token de API aparece en el nombre o el valor de una variable de entorno, una etiqueta o una URL de webhook. Los valores de entorno nunca se muestran. |
| Etiqueta del agente | Cada despliegue recibe la etiqueta edgegap-mcp, incluso cuando el agente proporciona sus propias etiquetas. edgegap_list_deployments con only_agent_deployments: true los encuentra todos. |
| Parada automática | Cada despliegue indica cuándo lo detendrá Edgegap: el max_duration de la versión, con un límite máximo de EDGEGAP_MAX_DURATION_MINUTES (60 de forma predeterminada) para las versiones que crea el agente. Edgegap no tiene un límite de tiempo por despliegue, así que se rechaza el despliegue de una versión cuyo max_duration supere ese límite o sea ilimitado (una versión creada en otro lugar tiene un valor predeterminado de 1440 minutos), a menos que el agente proporcione allow_long_running: true, algo que solo se le indica que haga después de consultarte. |
| Despliegues por ejecución | El servidor local envía como máximo EDGEGAP_MAX_DEPLOYS_PER_RUN despliegues por proceso (20 de forma predeterminada), incluidos los fallidos, ya que un despliegue rechazado aún puede crear un despliegue. Cuando la API rechaza un despliegue pero aun así lo crea, el error indica su nombre para que el agente pueda detenerlo. |
| Sin etiquetas de imagen cambiantes | edgegap_create_app_version rechaza latest (sin distinguir mayúsculas y minúsculas), una etiqueta vacía o una etiqueta que Docker rechazaría, sin enviar nada: Edgegap almacena en caché las imágenes por etiqueta, por lo que volver a enviar una etiqueta puede desplegar una compilación obsoleta. También se rechaza desplegar una versión existente en latest, así como solicitar comandos para enviar al registro para latest. |
| Comprobación de referencia de imagen | Se rechaza un docker_image que también incluya un host de registro, una etiqueta o un resumen (p. ej., registry.edgegap.com/proj/server:v2), y el error indica la separación correcta entre docker_repository / docker_image / docker_tag. edgegap_validate_server_config señala los mismos casos. |
| Límite de despliegues | Se rechaza edgegap_deploy mientras ya haya en ejecución EDGEGAP_MAX_AGENT_DEPLOYMENTS (5 de forma predeterminada) despliegues etiquetados con edgegap-mcp, para que un agente en bucle no acumule servidores facturables. El rechazo indica cómo enumerarlos y detenerlos. |
| Variables de entorno secretas ocultas | Las variables de entorno cuyos nombres parecen secretos (TOKEN, SECRET, PASSWORD, API_KEY, CREDENTIAL, AUTH…) se envían con is_hidden, para que el panel no muestre sus valores en texto sin formato. |
| Parada estricta | edgegap_stop_deployment detiene un despliegue mediante su ID de solicitud exacto. Se rechazan los ID vacíos, los comodines y las listas. No hay parada masiva. Con EDGEGAP_STOP_OWN_ONLY=1, solo detiene los despliegues etiquetados con edgegap-mcp. |
| Eliminaciones cuidadosas | edgegap_delete_app_version y edgegap_delete_app aceptan un único nombre exacto y se rechazan mientras haya un despliegue de ese elemento en ejecución. Una aplicación con versiones solo se elimina cuando max_versions las incluye. |
| URL de webhooks y buckets | Los webhooks de despliegue y los endpoints de Endpoint Storage deben ser URL https sin credenciales, y se rechazan si contienen tu token de API. |
| Host en cada resultado | Cada resultado empieza con el host de la API, p. ej., [api.edgegap.com], o [custom · host] cuando EDGEGAP_BASE_URL apunta a otro lugar. Una URL base que indique api.edgegap.com debe ser exactamente https://api.edgegap.com; de lo contrario, el servidor se niega a iniciarse. |
| Redacción | El token se elimina de todos los errores antes de que lleguen al agente. |
El servidor se identifica con User-Agent: edgegap-mcp/<version> (<MCP client name>) en cada llamada a la API.
Analítica de uso. El servidor local y la imagen Docker autohospedada no envían nada aparte de las propias llamadas a la API. El endpoint alojado en mcp.edgegap.dev usa PostHog MCP Analytics (@posthog/mcp) y envía eventos de uso al PostHog de Edgegap: qué cliente MCP se conectó, qué herramienta, recurso de prompt o recurso de skill se usó, los nombres (no los valores) de los argumentos proporcionados, si una llamada tuvo éxito, su código de error, la etapa en la que falló y el estado de la API de Edgegap, cuánto tardó, si fue una simulación, algunos datos sobre la llamada (cómo terminó la espera de un despliegue, el resultado de una validación, qué skill se cargó), qué paso de la ruta recomendada se alcanzó, además de la versión del servidor y el código de país de Cloudflare. Si una llamada falla, también envía el mensaje de error, después de eliminar tu token, los valores de los argumentos que proporcionaste y cualquier elemento con formato de credencial, dirección IP o ID, truncado a 300 caracteres. Los ID de despliegue solo se envían como un hash con clave. Solo se permiten propiedades de metadatos con nombre. Nunca envía tu token, los valores de los argumentos de las herramientas (direcciones IP, variables de entorno, nombres de aplicaciones o imágenes) ni los resultados, y GeoIP está desactivado. No añade parámetros a las herramientas. Los eventos de un mismo token se agrupan mediante un hash con clave no reversible del token. La lista completa está en docs/analytics.md. Para excluirte, envía el encabezado X-Edgegap-Telemetry: off (o DNT: 1), o usa el servidor local.
🚨 Solución de problemas
Consulta los códigos de error habituales y descubre cómo desbloquear tu integración.
401 Unauthorized
Lo más probable es que tu integración MCP no esté incluyendo correctamente el encabezado Authorization.
Tool Call Failed
A tu cliente le falta un token de Edgegap. Esto ocurre con los conectores personalizados de claude.ai y Claude Desktop, que no pueden enviar un encabezado Authorization. Consulta Claude Desktop y claude.ai para ver la alternativa.
[!WARNING] Esta es una limitación conocida que se resolverá próximamente. ¡Mantente al tanto de las novedades!
403 Forbidden
Es probable que tu integración MCP esté usando el token de plantilla o un token eliminado. Comprueba que el valor del token que usa tu integración coincida exactamente con el que aparece en el panel.
424 Image Could Not Be Pulled
Edgegap no pudo obtener tu imagen de contenedor. Comprueba el repositorio, el nombre de la imagen y la etiqueta, y que la etiqueta se haya enviado (pídele a tu agente que enumere las etiquetas del registro). Para las imágenes del registro de Edgegap, el nombre de la imagen debe incluir tu proyecto, p. ej., my-project/my-game-server.
Registry Credentials Unavailable
Edgegap solo proporciona credenciales del registro al token de inicio rápido que usan los complementos de Unity y Unreal, así que con un token de API normal tu agente no puede recuperarlas y te las solicita. Copia el proyecto, el nombre de usuario y el token del panel, en Container Registry, o envía la imagen a otro registro del que Edgegap pueda obtenerla (Docker Hub, GitHub, AWS ECR, GCP, GitLab). Consulta Registros externos.
"status": "empty" o "not_configured"
No es un error. Una lista vacía (todavía no hay aplicaciones, no hay despliegues en ejecución, nunca se ha enviado una imagen) o una función que esta organización no ha configurado (relés, un registro que este token no puede leer) se devuelve como un resultado normal con status y un next_step. Tu agente debe continuar con el siguiente paso en lugar de volver a intentarlo.
No Token Yet
Las skills (edgegap_list_skills, edgegap_get_skill), edgegap_context, edgegap_generate_dockerfile y edgegap_validate_server_config funcionan sin token, así que un agente puede preparar primero la compilación del servidor. Crea una cuenta en app.edgegap.com y un token en User Settings → Tokens. edgegap_context con check_token: true indica si la sesión tiene un token y si este se acepta, y muestra sus últimos cuatro caracteres para que puedas encontrarlo en esa página.
Starts Locally but Not on Edgegap
Pídele a tu agente que valide la configuración del servidor o que genere un Dockerfile nuevo. Las causas más habituales son una imagen compilada en Apple Silicon sin docker build --platform linux/amd64, un servidor que escucha en un puerto distinto del que expone la versión o un transporte UDP configurado como TCP.
Other API Errors
Consulta nuestra referencia de la API para ver las posibles respuestas de error de cada endpoint de la API.
[!NOTE] Si necesitas ayuda, ponte en contacto con nosotros por Discord. Para obtener asistencia con juegos en vivo, consulta nuestro sistema de tickets.
🛠️ Autoalojamiento
El endpoint alojado en mcp.edgegap.dev se ejecuta como un Cloudflare Worker (consulta worker/INSTALL.md). Para ejecutar el mismo servidor HTTP sin estado en tu propia infraestructura, usa la imagen Docker:
docker build -t edgegap-mcp .
docker run --rm -p 8080:8080 edgegap-mcp
Los clientes se conectan a http://<host>:8080/mcp con su propio encabezado Authorization, igual que cuando se conectan al endpoint alojado. La imagen no contiene credenciales y /health responde sin ellas. Se aplican PORT, HOST, EDGEGAP_READ_ONLY, EDGEGAP_APP_ALLOWLIST, EDGEGAP_MAX_DURATION_MINUTES, EDGEGAP_MAX_AGENT_DEPLOYMENTS y EDGEGAP_STOP_OWN_ONLY; pasa cada uno con -e NAME=value. Nunca pases un token de API al contenedor: cada cliente envía el suyo en cada solicitud. Lee worker/DECISION.md antes de exponerlo fuera de una red privada.
Las imágenes precompiladas para linux/amd64 y linux/arm64 se publican en ghcr.io/edgegap/llm-mcp-server (y, para las configuraciones existentes, con el nombre anterior ghcr.io/edgegap/edgegap-mcp), con las etiquetas main y sha-<commit> en cada envío a main, además de la versión en las etiquetas v*:
docker run --rm -p 8080:8080 ghcr.io/edgegap/llm-mcp-server:main
Desarrollo
Consulta CONTRIBUTING.md para ver las comprobaciones que debe superar un cambio, CHANGELOG.md para saber qué cambió en cada versión y SECURITY.md para informar de una vulnerabilidad.
npm ci
npm run build
npm test # mock-API tests; none reach Edgegap
npm run typecheck:worker
Para actualizar las skills incluidas a la última confirmación de llm-agent-skills y luego publicar una versión como de costumbre:
npm run sync-skills -- --ref main
npm run check-skills # exit 1 if src/skills.generated.ts differs from the pin
| Prueba | Qué cubre |
|---|---|
test/unit.test.mjs | Pruebas unitarias de las reglas de etiquetas, imágenes, nombres de secretos, URL y redacción |
test/package.mjs | Empaquetado: un bin, dependencias de ejecución, versiones en el paso |
test/skills.mjs | Skills mediante MCP: herramientas, prompts, recursos, seguridad de rutas, el paquete coincide con la versión fijada |
test/smoke.mjs | Protocolo de enlace, registro de herramientas, modo de solo lectura |
test/guards.mjs | Validación local y aplicación de la lista de permitidos |
test/elicit.mjs | Solicitud de token: aceptar, rechazar el acuse de recibo, declinar, sin compatibilidad |
test/newtools.mjs | Validador, generador de Dockerfile, registro, despliegues, herramientas de relé y de emparejamiento contra una API simulada local |
test/http.mjs | Servidor HTTP autohospedado: descubrimiento sin token, tokens por solicitud, credenciales externas |
test/spec.mjs | Todos los endpoints y campos del cuerpo de solicitud que envía el servidor están en spec/ (las herramientas de escritura se comprueban mediante simulación) |
test/snapshot.mjs | Los nombres, las descripciones y los esquemas de las herramientas, así como las instrucciones, coinciden con test/tools.snapshot.json; npm run snapshot:update tras un cambio deliberado |
test/live-check.mjs | No está en npm test. Se ejecuta contra la API real con un token de una organización que no es de producción |
Las decisiones de diseño, el modelo de seguridad y lo que queda deliberadamente fuera del alcance se describen en DESIGN.md.