Edgegap

официальный

Развертывайте многопользовательские игровые серверы из вашего агента кодирования. Десять инструментов, которые переводят выделенный сервер Unity, Unreal или Godot из контейнерного образа к подключенным игрокам.

Что можно делать с Edgegap MCP?

  • Напишите Dockerfile — Попросите агента создать Dockerfile для сборки сервера на Unity, Unreal, Godot или другом движке, указав флаги для запуска без графического интерфейса и соответствующие порты.
  • Проверьте перед сборкой — Проверьте существующий Dockerfile, порты, ресурсы и тег образа на наличие проблем, например ARM-образов или серверов, привязанных к localhost.
  • Разверните выделенный сервер — Зарегистрируйте образ как версию приложения, выберите регион, разверните сервер поближе к игрокам и получите IP-адрес и порты сервера.
  • Диагностируйте неудачное развертывание — Изучите журналы контейнера, сведения о сбоях и показатели CPU и памяти, чтобы выяснить, почему сервер не запустился или аварийно завершил работу.
  • Настройте сеанс ретрансляции — Создайте ретранслятор для игры по схеме «хост — клиент» и получите адрес ретранслятора и токен авторизации для каждого игрока.

Размещённый MCP-сервер

npx add-mcp 'https://mcp.edgegap.dev/mcp'

Устанавливается в Claude Code, Codex, Cursor и другие

Документация

MCP-сервер Edgegap

Подключите ИИ-агентов для написания кода к Edgegap через наш MCP-сервер. Ваш агент может провести сборку headless-сервера через весь путь до подключения игроков: написать или проверить Dockerfile, отправить образ в ваш приватный реестр Edgegap, развернуть авторитетный выделенный сервер рядом с игроками и прочитать логи, если что-то пойдёт не так.

Install in Cursor Install in VS Code

👉 Поддерживаемые возможности

[!TIP] Используете Unity, Unreal Engine или Godot? Наши руководства и плагины для Unity, Unreal Engine и Godot по-прежнему остаются самым быстрым способом работы с этими движками. MCP-сервер работает вместе с ними, а также самостоятельно с любым движком.

Используйте наш MCP-сервер, чтобы:

  • Контейнеризировать игровой сервер — агент создаст Dockerfile для вашей сборки (или проверит имеющийся) на соответствие лучшим практикам, отправит образ в наш приватный реестр контейнеров и удалит неиспользуемые старые теги образов, чтобы освободить место в реестре.
  • Развернуть выделенный сервер — создать и обновить версии приложения, просмотреть доступные локации, развернуть сервер рядом с игроками и получить IP-адрес сервера с портами для проверки подключения клиента.
  • Создать CI/CD-пайплайн — тестировать развёртывания и удаление ресурсов из системы сборки.
  • Устранить неполадки игрового сервера — проверить версии приложения и статус развёртывания, прочитать логи контейнера и данные об использовании CPU/памяти или воспроизвести сбой развёртывания.
  • Запускать игры с хостом-клиентом и игры с одноранговым подключением — создавать сеансы ретрансляции, обеспечивающие прохождение через NAT и предотвращающие блокировку подключений. Перед выбором ознакомьтесь с разделами Модели оркестрации и Выделенные серверы или ретрансляторы?.

[!WARNING] Не входит в область поддержки MCP: сборка исполняемого файла Linux-сервера; создание, запуск или остановка матчмейкера (загрузите сгенерированную конфигурацию в панели управления); браузер серверов; лобби; управляемые кластеры; приватные флоты; оплата.

[!NOTE] Если вам нужна помощь, свяжитесь с нами в Discord. По вопросам поддержки запущенных игр воспользуйтесь нашей системой тикетов.

⚖️ Выделенные серверы или ретрансляторы?

Edgegap может размещать многопользовательскую игру двумя способами. Мы рекомендуем выделенные серверы, как и наш MCP-сервер: по умолчанию агент выберет выделенный сервер и воспользуется ретранслятором, только если вы выбрали схему с хостом-клиентом.

Выделенный сервер (рекомендуется)Ретранслятор
Что запускает EdgegapВашу сборку headless-сервера рядом с игрокамиТолько перенаправление трафика, без игрового кода
Кто запускает игруСерверИгра одного из игроков (хоста)
ЧитерствоНамного сложнее: сервер обладает полномочиямиХост может изменить что угодно
СправедливостьКаждый игрок подключается напрямую к серверуУ хоста нет задержки, остальные проходят через два узла
Если хост покидает игруМатч продолжаетсяМатч заканчивается, если только игра не поддерживает миграцию хоста
Ограничения производительностиВыделенные серверу CPU и памятьПК хоста и скорость отдачи его домашнего интернета
Что требуетсяСборка сервера в образе контейнераNetcode, настроенный как listen server (хост-клиент)

[!NOTE] Ещё нет образа сервера? Это не повод выбирать ретрансляторы. Ваш агент может написать Dockerfile для вашей сборки с помощью edgegap_generate_dockerfile. Подробнее о ретрансляторах читайте в разделе Распределённая ретрансляция.

🚀 Установка

Установить MCP-сервер очень просто:

  1. Установите MCP-сервер для популярных агентов или воспользуйтесь пользовательской интеграцией.
  2. Создайте API-токен и предоставьте его агенту для работы с нашим MCP-сервером.

Создавайте и просматривайте секретные токены для Edgegap API в разделе Панель управления — Настройки пользователя / Токены.

Добавляйте секретный токен к каждому API-запросу в виде HTTP-заголовка (включая слово token):

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

[!CAUTION] Не интегрируйте конечные точки Edgegap API в игровой клиент: ваш API-токен предоставляет неограниченный доступ к аккаунту. Сведения о безопасных конечных точках и функциях API для клиентской части см. в разделе Интеграция.

[!TIP] Если ваши секретные токены скомпрометированы или утекли, удалите их и создайте новые в панели управления.

Токен действует на уровне организации, и его нельзя ограничить одним приложением. Прежде чем передавать его агенту, работающему без присмотра, прочитайте DESIGN.md.

Популярные агенты

Установите MCP-сервер Edgegap в предпочитаемую среду разработки с ИИ-агентом с помощью кнопок Cursor или VS Code вверху этой страницы, затем добавьте токен в заголовок 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 считывает токен из переменной окружения и отправляет его как Authorization: Bearer <token>, который принимает размещённая конечная точка. В ~/.codex/config.toml:

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

Затем задайте EDGEGAP_API_TOKEN равным вашему токену в окружении, из которого запускается Codex.

Claude Desktop и claude.ai

Пользовательские коннекторы в claude.ai и Claude Desktop не могут отправлять заголовок Authorization, поэтому размещённая конечная точка не получает от них токен: коннектор отображается как подключённый, но каждый вызов инструмента завершается ошибкой. Вместо этого используйте локальный сервер.

В Claude Desktop откройте Settings → Developer → Edit Config и добавьте локальный сервер в claude_desktop_config.json:

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

Не указывайте токен — при первом использовании система запросит его. claude.ai в браузере не может запускать локальный сервер, поэтому использовать Edgegap MCP там нельзя, пока размещённая конечная точка не начнёт поддерживать OAuth.

Cursor

Кнопка Cursor вверху этой страницы устанавливает сервер. Чтобы сделать это вручную, добавьте следующее в ~/.cursor/mcp.json (или в .cursor/mcp.json в проекте):

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

VS Code (режим агента Copilot)

Кнопка VS Code вверху этой страницы устанавливает сервер. Чтобы сделать это вручную, добавьте следующее в .vscode/mcp.json (VS Code использует servers, а не mcpServers):

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

Windsurf

В ~/.codeium/windsurf/mcp_config.json запустите локальный сервер, который работает во всех клиентах, запускающих MCP-серверы как команды:

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

mcp.json

Большинство сред разработки с ИИ-агентами также поддерживают интеграцию путём вставки конфигурации JSON:

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

Пользовательская интеграция

Установите удалённый MCP-сервер Edgegap в виртуализированном окружении агента (ни в коем случае не в проекте!):

Node с пакетом mcp-remote npx

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

Python с пакетом mcp-proxy uvx

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

Установка в один клик (Claude Desktop)

Скачайте edgegap-mcp.mcpb и откройте файл: Claude Desktop установит локальный сервер как расширение и запросит API-токен, который будет храниться в защищённом хранилище операционной системы. В настройках расширения также задаются режим только для чтения, список разрешённых приложений, максимальный предел длительности и ограничение числа развёртываний (переменные ниже). К каждому релизу прилагается пакет, собранный из кода этого релиза. Другие приложения, устанавливающие пакеты MCPB, работают так же.

Локальный сервер

Чтобы хранить API-токен на своём компьютере, запустите сервер локально. Не указывайте токен — при первом использовании агент запросит его и будет хранить только в памяти в течение этого сеанса:

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

Требуется Node 18+. В рабочей среде указывайте конкретную версию (@edgegap/mcp@0.15.4), а не используйте плавающий тег latest. Сервер зарегистрирован в официальном реестре MCP как dev.edgegap/mcp.

Локальный сервер также позволяет ограничить действия агента. Эти переменные не влияют на размещённую конечную точку по адресу mcp.edgegap.dev:

ПеременнаяПо умолчаниюНазначение
EDGEGAP_API_TOKEN(запрашивается)API-токен. Необязателен: если не указать его, система запросит токен при первом использовании. Префикс token добавляется автоматически. Никогда не передавайте токен как аргумент командной строки.
EDGEGAP_READ_ONLY0Установите значение 1, чтобы инструменты, изменяющие данные (отмечены ● в разделе Инструменты), не регистрировались. Тогда агент не сможет уговорить вас вызвать их.
EDGEGAP_APP_ALLOWLIST(пусто)Имена приложений, разделённые запятыми. Ограничивает приложения, в которых агент может создавать и развёртывать ресурсы. Чтение данных (списков приложений и версий) не ограничивается; не ограничивается и работа с уже запущенными развёртываниями. См. DESIGN.md.
EDGEGAP_MAX_DURATION_MINUTES60Верхний предел для значения max_duration, которое агент может задать для версии. edgegap_deploy также отклоняет версию, если её значение max_duration превышает этот предел или не ограничено, кроме случаев, когда агент передаёт allow_long_running: true после запроса вашего разрешения.
EDGEGAP_MAX_AGENT_DEPLOYMENTS5edgegap_deploy отказывает в запросе, если запущено указанное число развёртываний с тегом edgegap-mcp. 0 отключает ограничение.
EDGEGAP_MAX_DEPLOYS_PER_RUN20Ограничивает число процессов сервера, которые можно запустить. Учитываются и неудачные запуски. Чтобы сбросить счётчик, перезапустите сервер. 0 отключает ограничение.
EDGEGAP_STOP_OWN_ONLY0Установите значение 1, чтобы edgegap_stop_deployment останавливал только развёртывания с тегом edgegap-mcp. Тогда агент не сможет остановить серверы, которые запустил не он.
EDGEGAP_ENABLE_SKILLS_UPDATE0Установите значение 1, чтобы разрешить edgegap_update_skills запускать npx skills@1.7.4 update или claude plugin update с помощью apply: true. Если переменная не задана, система покажет команды, которые нужно запустить вручную. Навыки, скопированные вручную, в любом случае перезаписываются из пакета. Средствам обновления доступны только настройки путей, домашнего каталога, временных файлов, локали, прокси и npm; переменные EDGEGAP_* и любые переменные с названиями, содержащими token, secret, password или key, им недоступны.
EDGEGAP_TIMEOUT_MS30000Тайм-аут HTTP-запроса.
EDGEGAP_SKILLS_CHECKonУстановите значение off, чтобы инструменты навыков не загружали последнюю версию навыков с GitHub.

Windows

Локальный сервер работает в Windows с Node.js 18 или новее, а CI выполняет сборку и тесты stdio в Windows.

  • Многие клиенты MCP для Windows не могут напрямую запустить npx, поскольку это скрипт .cmd. Запускайте его через cmd /c: "command": "cmd", "args": ["/c", "npx", "-y", "@edgegap/mcp"]. В Claude Code: claude mcp add Edgegap --env EDGEGAP_API_TOKEN=<token> -- cmd /c npx -y @edgegap/mcp.
  • В PowerShell для ручного запуска вводите npx.cmd вместо npx: новая установка Windows блокирует скрипт PowerShell npx («выполнение сценариев отключено в этой системе»).
  • При первом запуске пакет скачивается, поэтому запуск может занять некоторое время; последующие запуски выполняются быстро.
  • edgegap_update_skills находит навыки, установленные в %USERPROFILE%, так же, как в macOS и Linux.

📚 Навыки

Сервер включает навыки агента Edgegap — проверенные пошаговые инструкции по запуску многопользовательской игры в сети, шаблоны (Dockerfile, конфигурации матчмейкера, готовые фрагменты кода для Unity C# и Unreal C++) и описание известных проблем. Они доступны любому агенту, подключённому к Edgegap MCP, без отдельной установки и токена. Агенту предлагается загрузить подходящий навык перед работой над игровым проектом.

НавыкДля чего
edgegapНачните отсюда, если используете любой движок, кроме Unity или Unreal Engine, или у вас есть вопросы о платформе. Перенаправляет к остальным материалам.
edgegap-unityПолный цикл для Unity: сборка сервера, подбор игроков, клиент, сквозной тест.
edgegap-ngoПолный цикл для Unity с Netcode for GameObjects: запуск и самостоятельная остановка сервера, панель Find Match, адаптер Boss Room, подбор игроков.
edgegap-fishnetПолный цикл для Unity с FishNet: headless-сервер, Bayou/WebGL, подбор игроков, сквозной тест.
edgegap-purrnetПолный цикл для Unity с PurrNet: выделенный сервер, панель подключения, подбор игроков, сквозной тест.
edgegap-fusionПолный цикл для Unity с Photon Fusion 2: сервер IL2CPP для Linux, сервер, привязанный к 0.0.0.0, развертывание Edgegap, набор BR200.
edgegap-fusion-simplefpsПример Simple FPS от Photon на выделенных серверах Edgegap.
edgegap-godotGodot 4 с выделенным сервером Godot: headless-экспорт, ENet или WebSocket, подбор игроков.
edgegap-colyseusСерверы Colyseus на Edgegap — напрямую или через систему подбора игроков.
edgegap-nakamaNakama в качестве бэкенда для запуска серверов Edgegap для матчей.
edgegap-playfabПодбор игроков PlayFab с серверами Edgegap.
edgegap-threejsThree.js и другие браузерные игры с собственным сервером Node.js.
edgegap-matchmakingПроектирование системы подбора игроков для любого движка: кто за неё отвечает, профили, группы, выбор региона, заполнение матчей, сторонние системы подбора игроков.
edgegap-manusБраузерные игры, созданные с помощью Manus: подбор игроков на бэкенде, вход через Steam, подписанные токены подключения, сервер Node WebSocket.
edgegap-unrealПолный цикл для Unreal Engine: исходный движок, сервер Linux, подбор игроков, сквозной тест.
edgegap-eos-voiceГолосовой чат для игры на Unreal с Edgegap и EOS Voice: токены комнат на стороне сервера, комнаты матчей и команд.
edgegap-server-designПроектирование авторитетного сервера и жизненный цикл развертывания.
edgegap-containerizeКонтракт контейнера, Dockerfile, реестры, версии приложения.
edgegap-local-testingПроверки соответствия на вашем компьютере, затем одно развертывание для дымового тестирования.
edgegap-troubleshootОшибки загрузки, циклы сбоев, нехватка памяти, невозможность подключения клиентов.
edgegap-deployments-apiКод бэкенда для развертывания серверов: вебхуки, очистка, Nakama, PlayFab, UGS, EOS.
edgegap-launchКонтрольный список запуска, развертывания обновлений, кэширование, контроль затрат.

Они доступны тремя способами, чтобы к ним мог обратиться любой MCP-клиент:

  • Инструменты: edgegap_list_skills и edgegap_get_skill, который загружает SKILL.md навыка или один из его справочных документов либо шаблонов с помощью file.
  • Промпты: deploy-game-server («Разверни мой игровой сервер на Edgegap») — с него стоит начать: он определяет движок и сетевой код, загружает соответствующий навык и проводит по рекомендуемому сценарию, включая очистку. Для каждого навыка также есть отдельный промпт с таким же названием. В Claude Code они отображаются как команды со слешем, например /mcp__edgegap__deploy-game-server.
  • Ресурсы: SKILL.md каждого навыка указан по адресу edgegap-skill://<skill>/SKILL.md; остальные файлы читаются с помощью шаблона edgegap-skill://{skill}/{+path}, например edgegap-skill://edgegap-unity/references/deploy.md.

Каждый выпуск включает навыки из коммита, закрепленного в scripts/skills-pin.txt; edgegap_context сообщает, какой набор загружен. edgegap_list_skills также получает с GitHub номер последней версии набора (один номер версии, кэшируется на час; EDGEGAP_SKILLS_CHECK=off отключает эту проверку) и сообщает о выходе новой версии, а edgegap_get_skill добавляет такое же уведомление под заголовком навыка.

Обновление установленных навыков. Если вы также установили навыки в свой агент (плагин Claude Code edgegap@edgegap, npx skills add edgegap/llm-agent-skills или папки, скопированные в ~/.claude/skills), edgegap_update_skills сравнивает каждый из них с последней версией на GitHub. На локальном сервере он самостоятельно находит эти установки; с apply: true он запускает npx skills update (только навыки Edgegap) или claude plugin update и перезаписывает навыки, скопированные вручную, файлами из этого выпуска, сохраняя добавленные вами файлы и не затрагивая символические ссылки и клоны Git. Текст навыков никогда не загружается. Размещенный сервер не видит ваш диск: передайте версии, загруженные вами, в installed_versions, и он сообщит, какие из них устарели и как их обновить.

🧰 Инструменты

Ваш агент выбирает подходящий инструмент на основе запроса. Называть его не нужно, но полезно знать, что доступно. Инструменты, отмеченные ●, изменяют данные в вашей учетной записи, требуют dry_run и скрыты, если задано EDGEGAP_READ_ONLY=1.

ИнструментНазначение
edgegap_contextПоказывает, с каким API взаимодействует этот сервер, его версию, локальный он или размещенный, а также действующие ограничения. Не вызывает API и никогда не показывает токен.

Перед первым развертыванием

ИнструментНазначение
edgegap_generate_dockerfileСоздает Dockerfile для сборки сервера: указывает папку сборки, исполняемый файл сервера или скрипт запуска, порты и аргументы запуска, а также нужные headless-флаги (Unity -batchmode -nographics, Godot --headless), пользователя без прав root для Unreal и соответствующие порты. Перечисляет все предположения, чтобы агент мог попросить вас их подтвердить. Подходит для Unity, Unreal Engine, Godot и любых других движков.
edgegap_validate_server_configПроверяет существующий Dockerfile, порты, ресурсы и тег образа перед сборкой. Выявляет образы для ARM или Windows (Edgegap запускает linux/amd64), серверы Unreal, работающие от имени root, отсутствие -batchmode -nographics в Unity, серверы, привязанные к localhost, порты, не соответствующие сетевому транспорту, и тег latest.
edgegap_get_registry_credentials ●Возвращает учетные данные для отправки образа в закрытый реестр контейнеров Edgegap, а также точные команды docker login, сборки и отправки. Edgegap предоставляет их только через токен быстрого запуска плагинов Unity/Unreal; при использовании обычного API-токена инструмент предлагает запросить у вас данные для входа со страницы Container Registry в панели управления.
edgegap_list_registry_tagsПроверяет, что образ успешно отправлен, прежде чем регистрировать его. Принимает только имя образа, например my-game-server: проект определяется по вашему токену.
edgegap_delete_registry_tag ●Удаляет один тег и связанный с ним образ для очистки старых сборок. За один вызов принимается только один точный тег; latest, подстановочные знаки и списки не допускаются.

Выделенные серверы (рекомендуется)

ИнструментНазначение
edgegap_list_appsПеречисляет ваши приложения.
edgegap_create_app ●Создает приложение.
edgegap_update_app ●Включает или отключает приложение для новых развертываний.
edgegap_list_app_versionsПеречисляет версии, указывая их образы, ресурсы, порты (с TLS Upgrade) и наличие учетных данных для входа в реестр.
edgegap_get_app_versionПолностью считывает данные одной версии: образ, ресурсы, порты, максимальную длительность, кэширование образа, политику перезапуска и имена переменных среды (значения не показываются).
edgegap_create_app_version ●Регистрирует образ контейнера как версию, доступную для развертывания. Поддерживает TLS Upgrade для портов WS и HTTP, необходимый браузерным клиентам (WebGL) для wss://.
edgegap_update_app_version ●Изменяет существующую версию: тег нового образа, состояние вкл./выкл., CPU и память (только вместе), максимальную длительность, учетные данные для входа в реестр, кэширование образа (force_cache), период ожидания перед завершением работы, порты, переменные среды и Endpoint Storage для хранения журналов. Изменяются только переданные поля, но ports и env заменяют весь список. Для уже запущенных развертываний сохраняются прежние настройки.
edgegap_delete_app_version ●Удаляет одну версию для очистки тестовых версий. Операция запрещена, пока выполняется ее развертывание. Образ в реестре сохраняется.
edgegap_delete_app ●Удаляет приложение и его версии. Операция запрещена, пока выполняется любое из его развертываний или пока у приложения больше версий, чем max_versions (по умолчанию 0).
edgegap_list_locationsПеречисляет города, в которых Edgegap выполняет развертывания, или, для одной версии, только города, где сейчас есть свободные ресурсы.
edgegap_list_ping_beaconsПеречисляет узлы проверки задержки, до которых игровые клиенты измеряют задержку в каждом регионе.
edgegap_deploy ●Развертывает авторитетный выделенный сервер рядом с вашими игроками. Всегда помечает его тегом edgegap-mcp и сообщает, когда Edgegap остановит его. Необязательные параметры: CPU и память только для этого развертывания, вебхуки, которые Edgegap вызывает при готовности, сбое или завершении работы сервера, require_cached_locations для ускорения запуска и private_host_ids для приоритетного размещения на вашем частном флоте.
edgegap_list_fleet_hostsПеречисляет узлы одного из ваших частных флотов с указанием состояния и местоположения, чтобы развернуть сервер на одном из них.
edgegap_wait_for_deploymentОжидает готовности сервера и возвращает адрес подключения.
edgegap_get_deploymentСчитывает состояние развертывания.
edgegap_list_deploymentsПеречисляет запущенные развертывания с фильтрацией по приложению, версии, состоянию, тегам и другим параметрам, а также сортировкой по времени существования. Помогает находить оставленные работающими серверы; only_agent_deployments: true перечисляет все серверы, запущенные агентом. См. раздел Фильтрация развертываний.
edgegap_get_deployment_logsСчитывает журналы контейнера и сведения о сбоях, пока развертывание выполняется. После его остановки журналы сохраняются только при настроенном Endpoint Storage.
edgegap_get_deployment_metricsСводит данные об использовании CPU, ограничении CPU, памяти и сети (последние, средние и пиковые значения), чтобы подобрать размер версии или проверить причину сбоя.
edgegap_stop_deployment ●Останавливает одно развертывание по точному идентификатору запроса. Массовая остановка не поддерживается.
edgegap_tag_deployment ●Добавляет или удаляет теги работающего развертывания, например для отметки матча. Тег edgegap-mcp сохраняется.
edgegap_report_deployment ●Отправляет Edgegap отчет о развертывании с указанием причины для системы модерации студии. Развертывание продолжает работать.

Журналы и файлы (Endpoint Storage)

Журналы контейнера исчезают вместе с развертыванием, если не экспортировать их в собственное S3-совместимое хранилище.

ИнструментНазначение
edgegap_list_endpoint_storageПеречисляет ваши хранилища Endpoint Storage и профили загрузки из них. Секретные ключи не возвращаются.
edgegap_create_endpoint_storage ●Регистрирует хранилище (AWS S3, Cloudflare R2, DigitalOcean Spaces…) для экспорта журналов. Чтобы включить экспорт, задайте endpoint_storage для версии. Секретный ключ не выводится в ответе.
edgegap_create_pull_profile ●Копирует файл или папку из хранилища в контейнер при запуске (карты, конфигурации, крупные ресурсы).
edgegap_link_pull_profile ●Привязывает профиль загрузки к версии или отвязывает его.
edgegap_delete_pull_profile ●Удаляет один профиль загрузки. Хранилище и его файлы сохраняются.
edgegap_delete_endpoint_storage ●Удаляет одно хранилище Endpoint Storage. Операция запрещена, пока у него есть профили загрузки, если только max_pull_profiles не разрешает их удалить. Хранилище и его журналы сохраняются.

Ретрансляторы (только для игр с хостом-клиентом)

Ретранслятор — это не игровой сервер: он пересылает трафик, пока игра одного из игроков выступает хостом матча. См. раздел Выделенные серверы или ретрансляторы?.

ИнструментНазначение
edgegap_create_relay_session ●Создает сеанс ретранслятора для ваших игроков и возвращает адрес ретранслятора и токен авторизации для каждого игрока.
edgegap_get_relay_sessionСчитывает данные сеанса ретранслятора.
edgegap_list_relay_sessionsПеречисляет открытые сеансы ретранслятора, чтобы найти оставленные работающими. Токены авторизации не возвращаются.
edgegap_authorize_relay_user ●Добавляет игрока, который подключается позже.
edgegap_revoke_relay_user ●Удаляет одного игрока из сеанса ретранслятора.
edgegap_delete_relay_session ●Закрывает сеанс ретранслятора.

[!WARNING] За время работы развертываний и сеансов ретранслятора взимается плата. Попросите агента остановить тестовые развертывания и удалить тестовые сеансы ретранслятора по завершении работы.

Примеры запросов

  • «Создай Dockerfile для сборки моего сервера Unity, затем отправь его и разверни сервер рядом со мной»
  • «Проверь мой Dockerfile для Edgegap и исправь все проблемы»
  • «Не удалось выполнить развертывание. Прочитай журналы и объясни причину»
  • «Сколько CPU и памяти использовал мой последний матч? Подбери для него размер версии»
  • «В моей игре используется сеть с хостом-клиентом. Настрой ретранслятор Edgegap для двух игроков»

🛡️ Ограничения

Ваш API-токен может выполнять любые действия в вашей организации, поэтому сервер устанавливает собственные ограничения на действия агента с этим токеном. Они действуют и на локальном сервере, и на размещенной конечной точке.

Защитный механизмЧто он делает
Пробный запускКаждый инструмент, который что-либо изменяет, принимает dry_run: true: он возвращает точные метод, хост, путь и тело запроса, маскируя токен, токены реестра и значения переменных окружения, и ничего не отправляет. Локальные проверки всё равно выполняются.
Токен не попадает в контейнерыРазвёртывание или создание версии отклоняется без отправки данных, если ваш API-токен указан в имени или значении переменной окружения, теге или URL вебхука. Значения переменных окружения никогда не выводятся.
Тег агентаКаждое развёртывание получает тег edgegap-mcp, даже если агент передаёт собственные теги. Команда edgegap_list_deployments с only_agent_deployments: true находит их все.
Автоматическая остановкаДля каждого развёртывания сообщается, когда Edgegap остановит его: по значению max_duration версии, но не позднее чем через EDGEGAP_MAX_DURATION_MINUTES (по умолчанию 60) для версий, созданных агентом. В Edgegap нет ограничения времени для отдельного развёртывания, поэтому развёртывание версии, у которой значение max_duration превышает этот предел или не ограничено, отклоняется (для версии, созданной в другом месте, по умолчанию это 1440 минут), если только агент не передаст allow_long_running: true. Агенту предписано делать это только после того, как он спросит вас.
Развёртывания за один запускЛокальный сервер отправляет не более EDGEGAP_MAX_DEPLOYS_PER_RUN развёртываний за один процесс (по умолчанию 20), включая неудачные, поскольку даже отклонённый запрос на развёртывание может создать развёртывание. Если API отклоняет запрос, но всё же создаёт развёртывание, ошибка указывает его, чтобы агент мог его остановить.
Запрет на изменяемые теги образовedgegap_create_app_version отклоняет latest (без учёта регистра), пустой тег или тег, который Docker не принимает, ничего не отправляя: Edgegap кэширует образы по тегу, поэтому повторная отправка тега может привести к развёртыванию устаревшей сборки. Также отклоняется развёртывание существующей версии на latest и запрос команд для отправки образа в реестр для latest.
Проверка ссылки на образЗначение docker_image, в котором также указан хост реестра, тег или дайджест (например, registry.edgegap.com/proj/server:v2), отклоняется; в сообщении об ошибке приводится правильное разделение на docker_repository / docker_image / docker_tag. edgegap_validate_server_config выявляет те же проблемы.
Ограничение числа развёртыванийedgegap_deploy отклоняется, если уже запущено EDGEGAP_MAX_AGENT_DEPLOYMENTS (по умолчанию 5) развёртываний с тегом edgegap-mcp, чтобы агент, зациклившись, не мог создать множество тарифицируемых серверов. В сообщении об отказе указано, как вывести их список и остановить.
Скрытые секретные переменные окруженияПеременные окружения, имена которых похожи на секреты (TOKEN, SECRET, PASSWORD, API_KEY, CREDENTIAL, AUTH…), отправляются с is_hidden, чтобы их значения не отображались в панели управления открытым текстом.
Строгая остановкаedgegap_stop_deployment останавливает одно развёртывание по точному ID запроса. Пустые ID, подстановочные символы и списки отклоняются. Массовой остановки нет. С EDGEGAP_STOP_OWN_ONLY=1 останавливаются только развёртывания с тегом edgegap-mcp.
Осторожное удалениеedgegap_delete_app_version и edgegap_delete_app принимают одно точное имя и отклоняются, если соответствующее развёртывание запущено. Приложение с версиями удаляется только в том случае, если max_versions охватывает их.
URL вебхуков и хранилищВебхуки развёртывания и конечные точки Endpoint Storage должны быть URL https без учётных данных; запросы отклоняются, если в них содержится ваш API-токен.
Хост в каждом результатеКаждый результат начинается с хоста API, например [api.edgegap.com], или [custom · host], если EDGEGAP_BASE_URL указывает на другой адрес. Базовый URL с именем api.edgegap.com должен в точности совпадать с https://api.edgegap.com, иначе сервер откажется запускаться.
Редактирование данныхТокен удаляется из каждой ошибки до того, как она попадёт к агенту.

Сервер идентифицирует себя с помощью User-Agent: edgegap-mcp/<version> (<MCP client name>) при каждом вызове API.

Аналитика использования. Локальный сервер и самостоятельно размещённый Docker-образ не отправляют ничего, кроме самих вызовов API. Размещённая конечная точка по адресу mcp.edgegap.dev использует PostHog MCP Analytics (@posthog/mcp) и отправляет события использования в PostHog Edgegap: какой MCP-клиент подключился, какой инструмент, промпт или ресурс навыка использовался, имена (но не значения) переданных аргументов, был ли вызов успешным, код ошибки, этап, на котором произошёл сбой, и статус API Edgegap, длительность выполнения, был ли это пробный запуск, несколько сведений о вызове (чем завершилось ожидание развёртывания, результат проверки, какой навык был загружен), достигнутый шаг стандартного сценария, а также версию сервера и код страны Cloudflare. При неудачном вызове также отправляется сообщение об ошибке после удаления вашего токена, значений переданных вами аргументов и всего, что похоже на учётные данные, IP-адрес или ID; длина сообщения ограничивается 300 символами. ID развёртываний отправляются только в виде хеша с ключом. Передаются только явно указанные свойства метаданных. Ваш токен, значения аргументов инструментов (IP-адреса, переменные окружения, имена приложений или образов) и результаты никогда не отправляются; GeoIP отключён. Параметры инструментов не меняются. События, связанные с одним токеном, группируются по его необратимому хешу с ключом. Полный список приведён в docs/analytics.md. Чтобы отказаться от сбора данных, передайте заголовок X-Edgegap-Telemetry: off (или DNT: 1) либо используйте локальный сервер.

🚨 Устранение неполадок

Ознакомьтесь с распространёнными кодами ошибок и узнайте, как восстановить работу интеграции.

401 Unauthorized

Скорее всего, ваша MCP-интеграция неправильно передаёт заголовок Authorization.

Tool Call Failed

В клиенте отсутствует токен Edgegap. Это происходит с пользовательскими коннекторами claude.ai и Claude Desktop, которые не могут передавать заголовок Authorization. Альтернативный вариант описан в разделе Claude Desktop and claude.ai.

[!WARNING] Это известное ограничение, которое будет устранено в ближайшее время. Следите за обновлениями!

403 Forbidden

Вероятно, ваша MCP-интеграция использует шаблонный или удалённый токен. Убедитесь, что значение токена, используемое интеграцией, в точности совпадает с токеном, отображаемым в панели управления.

424 Image Could Not Be Pulled

Edgegap не удалось получить образ контейнера. Проверьте репозиторий, имя образа и тег, а также убедитесь, что тег был отправлен в реестр (попросите агента вывести список тегов реестра). Для образов в реестре Edgegap имя образа должно включать ваш проект, например my-project/my-game-server.

Registry Credentials Unavailable

Edgegap предоставляет учётные данные реестра только для токена быстрого старта, используемого плагинами Unity и Unreal. Поэтому с обычным API-токеном агент не может получить эти данные и запрашивает их у вас. Скопируйте Project, Username и Token из панели управления в разделе Container Registry или отправьте образ в другой реестр, из которого Edgegap может его получить (Docker Hub, GitHub, AWS ECR, GCP, GitLab). См. раздел External Registries.

"status": "empty" или "not_configured"

Это не ошибка. Список без элементов (приложений ещё нет, запущенных развёртываний нет, образ ещё не отправлялся) или функция, которую эта организация не настроила (ретрансляторы, реестр, к которому у этого токена нет доступа), возвращается как обычный результат с status и next_step. Агенту следует перейти к следующему шагу, а не повторять запрос.

No Token Yet

Навыки (edgegap_list_skills, edgegap_get_skill), edgegap_context, edgegap_generate_dockerfile и edgegap_validate_server_config работают без токена, поэтому агент может сначала подготовить сборку сервера. Создайте учётную запись на app.edgegap.com и токен в разделе User Settings → Tokens. Команда edgegap_context с check_token: true сообщает, присутствует ли токен текущего сеанса и принят ли он, а также показывает его последние четыре символа, чтобы вы могли найти его на этой странице.

Запускается локально, но не на Edgegap

Попросите агента проверить конфигурацию сервера или создать новый Dockerfile. Наиболее распространённые причины: образ собран на Apple Silicon без docker build --platform linux/amd64, сервер прослушивает порт, отличный от указанного в версии, или для транспорта UDP настроен TCP.

Другие ошибки API

Возможные ответы с ошибками для отдельных конечных точек API см. в нашей справочной документации по API.

[!NOTE] Если вам нужна помощь, свяжитесь с нами в Discord. По вопросам поддержки работающих игр см. нашу систему заявок.

🛠️ Самостоятельное размещение

Размещённая конечная точка по адресу mcp.edgegap.dev работает как Cloudflare Worker (см. worker/INSTALL.md). Чтобы запустить такой же не сохраняющий состояние HTTP-сервер в собственной инфраструктуре, используйте Docker-образ:

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

Клиенты подключаются к http://<host>:8080/mcp со своим заголовком Authorization, как и при подключении к размещённой конечной точке. Образ не содержит учётных данных, а /health отвечает и без них. Применяются PORT, HOST, EDGEGAP_READ_ONLY, EDGEGAP_APP_ALLOWLIST, EDGEGAP_MAX_DURATION_MINUTES, EDGEGAP_MAX_AGENT_DEPLOYMENTS и EDGEGAP_STOP_OWN_ONLY; передавайте каждый из них с помощью -e NAME=value. Никогда не передавайте API-токен контейнеру: каждый клиент отправляет собственный токен с каждым запросом. Прежде чем открывать доступ к серверу за пределами частной сети, прочитайте worker/DECISION.md.

Готовые образы для linux/amd64 и linux/arm64 публикуются в ghcr.io/edgegap/llm-mcp-server (а для существующих конфигураций — также под старым именем ghcr.io/edgegap/edgegap-mcp), с тегами main и sha-<commit> при каждой отправке в main, а также с версией для тегов v*:

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

Разработка

См. CONTRIBUTING.md — проверки, которые должны пройти изменения; CHANGELOG.md — список изменений в каждой версии; SECURITY.md — инструкции по сообщению об уязвимости.

npm ci
npm run build
npm test                  # mock-API tests; none reach Edgegap
npm run typecheck:worker

Чтобы обновить встроенные навыки до последнего коммита llm-agent-skills, а затем выполнить обычный выпуск:

npm run sync-skills -- --ref main
npm run check-skills      # exit 1 if src/skills.generated.ts differs from the pin
ТестЧто проверяется
test/unit.test.mjsМодульные тесты правил для тегов, образов, имён секретов, URL и редактирования данных
test/package.mjsУпаковка: один bin, зависимости времени выполнения, версии в шаге
test/skills.mjsНавыки через MCP: инструменты, промпты, ресурсы, безопасность путей, соответствие пакета закреплённой версии
test/smoke.mjsРукопожатие, регистрация инструментов, режим только для чтения
test/guards.mjsЛокальная проверка и применение списка разрешённых значений
test/elicit.mjsЗапрос токена: принятие, отказ от подтверждения, отклонение, отсутствие поддержки
test/newtools.mjsВалидатор, генератор Dockerfile, реестр, развёртывания, ретранслятор и инструменты матчмейкера с локальным имитационным API
test/http.mjsСамостоятельно размещённый HTTP-сервер: обнаружение без токена, токены для каждого запроса, сторонние учётные данные
test/spec.mjsВсе конечные точки и поля тела запроса, отправляемые сервером, указаны в spec/ (инструменты записи проверяются пробным запуском)
test/snapshot.mjsИмена и описания инструментов, схемы и инструкции соответствуют test/tools.snapshot.json; npm run snapshot:update после преднамеренного изменения
test/live-check.mjsНе входит в npm test. Выполняется с реальным API и токеном организации, не предназначенной для эксплуатации

Архитектурные решения, модель безопасности и намеренно исключённые из области проекта вопросы описаны в DESIGN.md.