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, развернуть авторитетный выделенный сервер рядом с игроками и прочитать логи, если что-то пойдёт не так.
👉 Поддерживаемые возможности
[!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-сервер очень просто:
- Установите MCP-сервер для популярных агентов или воспользуйтесь пользовательской интеграцией.
- Создайте 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_ONLY | 0 | Установите значение 1, чтобы инструменты, изменяющие данные (отмечены ● в разделе Инструменты), не регистрировались. Тогда агент не сможет уговорить вас вызвать их. |
EDGEGAP_APP_ALLOWLIST | (пусто) | Имена приложений, разделённые запятыми. Ограничивает приложения, в которых агент может создавать и развёртывать ресурсы. Чтение данных (списков приложений и версий) не ограничивается; не ограничивается и работа с уже запущенными развёртываниями. См. DESIGN.md. |
EDGEGAP_MAX_DURATION_MINUTES | 60 | Верхний предел для значения max_duration, которое агент может задать для версии. edgegap_deploy также отклоняет версию, если её значение max_duration превышает этот предел или не ограничено, кроме случаев, когда агент передаёт allow_long_running: true после запроса вашего разрешения. |
EDGEGAP_MAX_AGENT_DEPLOYMENTS | 5 | edgegap_deploy отказывает в запросе, если запущено указанное число развёртываний с тегом edgegap-mcp. 0 отключает ограничение. |
EDGEGAP_MAX_DEPLOYS_PER_RUN | 20 | Ограничивает число процессов сервера, которые можно запустить. Учитываются и неудачные запуски. Чтобы сбросить счётчик, перезапустите сервер. 0 отключает ограничение. |
EDGEGAP_STOP_OWN_ONLY | 0 | Установите значение 1, чтобы edgegap_stop_deployment останавливал только развёртывания с тегом edgegap-mcp. Тогда агент не сможет остановить серверы, которые запустил не он. |
EDGEGAP_ENABLE_SKILLS_UPDATE | 0 | Установите значение 1, чтобы разрешить edgegap_update_skills запускать npx skills@1.7.4 update или claude plugin update с помощью apply: true. Если переменная не задана, система покажет команды, которые нужно запустить вручную. Навыки, скопированные вручную, в любом случае перезаписываются из пакета. Средствам обновления доступны только настройки путей, домашнего каталога, временных файлов, локали, прокси и npm; переменные EDGEGAP_* и любые переменные с названиями, содержащими token, secret, password или key, им недоступны. |
EDGEGAP_TIMEOUT_MS | 30000 | Тайм-аут HTTP-запроса. |
EDGEGAP_SKILLS_CHECK | on | Установите значение 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 блокирует скрипт PowerShellnpx(«выполнение сценариев отключено в этой системе»). - При первом запуске пакет скачивается, поэтому запуск может занять некоторое время; последующие запуски выполняются быстро.
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-godot | Godot 4 с выделенным сервером Godot: headless-экспорт, ENet или WebSocket, подбор игроков. |
edgegap-colyseus | Серверы Colyseus на Edgegap — напрямую или через систему подбора игроков. |
edgegap-nakama | Nakama в качестве бэкенда для запуска серверов Edgegap для матчей. |
edgegap-playfab | Подбор игроков PlayFab с серверами Edgegap. |
edgegap-threejs | Three.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.