DCS-ME-gateway
# DCS Mission Authoring Gateway
`dcs-me-gateway` — это локальный MCP-сервер между AI-проектировщиком миссий и мостом Mission Editor [DCS-SMS](https://github.com/nielsvaes/dcs-sms). Он превращает множество хрупких команд редактора в небольшой, версионируемый протокол разработки миссий.
Шлюз не нажимает элементы интерфейса и никогда не фокусирует DCS. Запросы записываются в существующий почтовый ящик DCS-SMS. Если DCS не в фокусе и цикл обновления Mission Editor замедлен, запрос остаётся в очереди, пока тики не возобновятся или не истечёт выбранный вызывающим кодом срок.
## Реализовано в 0.9
* Тридцать пять MCP-инструментов: обнаружение обновлений, создание/валидация миссий, предварительная обработка постоянной семантической карты и гидрологии, офлайн-запросы, инспекция живой карты, распределение живых авиабаз и палубных пакетов, нативная маршрутизация транспорта, обнаружение загрузок, созданных DCS, обнаружение живых AI-задач, планирование профилей/времени полёта, шаблоны пакетов, чертежи, детерминированные документы миссий, опциональная настройка Skynet-IADS и ограниченное офлайн-управление внешним контентом.
* Сорок один операционный патч для среды миссии, групп, юнитов, нагрузок, маршрутов, типизированных параметров и поведения путевых точек, именованных групповых триггерных действий, триггеров, круговых зон, групповых частот и позывных юнитов.
* Стабильные логические ссылки, включая присвоение существующих именованных сущностей миссии и выделенных DCS имен юнитов.
* Рекомендации по проектированию миссий объявляются как инструкции при инициализации MCP-сервера, а не только как опциональный ресурс/подсказка, поэтому совместимые клиенты автоматически получают значения по умолчанию для планирования, тайминга, загрузки и AI-политики.
* Компактные семантические снимки, детерминированные версии, оптимистическая параллельность и проверка постусловий для каждой операции.
* Привязки и записи идемпотентности для каждой миссии, защищённые атомарными записями и межпроцессной блокировкой.
* Абсолютное истечение срока действия запроса и явная обработка `OUTCOME_UNKNOWN` предотвращают позднее выполнение и небезопасное повторное воспроизведение после потери ответа.
* Проверенный патч отправляется в Mission Editor как один вызов; частичные зафиксированные префиксы записываются, если последующая операция завершается ошибкой.
* Фрагменты миссий в форме префабов используют выделенную транзакционную конечную точку DCS-SMS с нативной ID/имени-аллокацией, переназначением перекрёстных ссылок, откатом и защитой от повторных запусков на стороне редактора.
* Проверка «сохранить/открыть» ждёт стабильной семантической ревизии и переносит привязки при изменениях идентичности Save As.
* Исправлены совместимость для маршрутов автомобильных юнитов, созданных DCS-SMS, и устаревшего владения панелью маршрутов Mission Editor.
* Нет MCP-инструмента с произвольным Lua.
* Аннотации карты F10 с отслеживанием ревизий поддерживают проверенные пакеты кругов, линий, полигонов, текстовых меток и удалений без отдельного инструмента для каждой фигуры.
* Управляемый данными каталог шаблонов миссий возвращает настраиваемые компоновки S-300PS/Buk и поэтапные маршруты AWACS/заправщиков. Оба SAM-пакета проверяются в реальном времени против установленной базы данных юнитов DCS; это функциональные, репрезентативные отправные точки, а не точные реальные боевые порядки.
* Создание палубных пакетов обнаруживает живую лицензию Supercarrier, доступ к свободным/платным корпусам и авианосц-совместимые самолёты из метаданных категорий полос установленного DCS. Одна транзакция может разместить авианосец один или вместе с репрезентативным синим/красным сопровождением, рассчитать ветер над палубой, настроить поддерживаемые действия TACAN/ICLS/Link-4/ACLS, привязав старт самолётов и опциональные путевые точки восстановления к палубе, а также применить именованные загрузки и боевые расходники.
* Базовая настройка связи записывает групповые частоты и нормализованные позывные юнитов. Офлайн-валидация предупреждает о конфликте частоты в группе АВАКС/заправщиков.
* Кэшированная местность может отвечать на вопросы о координатах/высоте и прямой видимости по рельефу с явными точками препятствий. Здания и растительность не входят в эту модель.
* Смешанное авторство включает детерминированный досье игрока, а также наложение внешнего содержимого `.miz` с копированием при записи. Досье считывает позывной, самолёт, маршрут, время, радио, помощь на авианосце, боекомплект, топливо, пушку и всё – из закреплённой сохранённой миссии; опциональный текстовый боевой текст остаётся явным вводом агента. Страницы маршрутов используют чистую кэш местности DCS с отключёнными семантическими наложениями и наложениями F10. Наложение управляет авиационными/общими планшетами, текстом карты и изображениями, а также ограниченными образами/звуками/Lua-ресурсами без сохранения исходной миссии.
* Резюмируемый кэш тайлов извлекает авторитетные данные высот и типов поверхностей DCS, вычислиет склон, экспозиция, шероховатость и/полирует кандидаторы на гребни/узлы/перевалы, затем создаёт чистую PNG-карту и аннотированную контекстную PNG без вызова DCS для последующих запросов.
* Независимо от резюмируемый гидрологический слой по умолчанию выбирает данные поверхности DCS с разрешением 50 м без перестроения высот, склонов или семантических областей. Он упаковывает каждый образец в два бита, пропускает высокоуверенные однородные сушу и открытые морские базовые тайлы, выводит ограниченные восьмисвязные речные/озёрные компоненты с отдельно указанным консервативным сшиванием коротких разрывов и может развернуться из валидированного среза до покрытия полного набора данных со стабильными ID тайлов.
* Каждый кэш хранит именованные места, созданные в DCS, и метаданные фиксированных авиабаз, включая пороги взлётно-посадочных полос/длину, конверты стоянки, флаги укрытий и производные группы перронов. Метки мест остаются явно неранжированными, поскольку источники Input `towns` DCS дают имена и координаты без уровней важности.
* Фрагментовированный граф с ограниченными рёбрами кэширует дороги и железные дороги, нативные DCS, между соседними авиабазами и именованными местами, включая объезд, высотные условия, присоединение конечных точек и свидетельства о переходах через воду. Офлайн-маршрутизация остаётся доступна для точных конечных точек, потому что кэш не является полной экспортируемой дорожной сетью.
* Гибридные области поселений — буферизованные кластеры именованных мест с явной поговоркой и рекомендуемыми границами обзорной карты. Это не контуры зданий; отдельные объекты остаются визуальной задачей инспекции карты.
* Семантический кэш также хранит запрашиваемые сущности авиабаз, поселений и именованных мест, а также цельные территории, классифицированные по поверхности, высоте, наклону, шероховатости и признакам низкого деталя. Области используют компактные строки и записывают соседние отношения, не пред подавая себя как административные границы реального мира.
* Резюмируемый макротранспортный граф использует авиабазы и поселения в качестве узлов. Его рёбра — это нативные пути DCS (дороги/железные дороги) с закреплёнными конечными точками и технологическими порталами, поэтому офлайн-запрос может выбрать маршрут с несколькими рёбрами, в то время как живой DCS-маршрутизатор остаётся авторитетом для точной геометрии первого/последнего километра конвоя.
* Инспекция карты по запросу подстраивает живую карту ME под запрошенные границы, захватывает только её виджет карты, записывает геопривязанный PNG и усиливает предыдущую камеру. Проверка кадра движения камеры отклоняет снимки скрытого редактора (например, если реально на экране F10 активной миссии).
* Препроцессинг автоматически проверяет форму кэшированных файлов, общие границы тайлов и 16 детерминированных точек против живого DCS. Тот же отчёт можно перезапустить с помощью `validate_map_dataset` или с отключённой живой паритетностью для офлайн-квализации.
* Консервативное смещение определяет признаки низкой плотности и сохраняет только грубый тайл, когда почти однородная суша проходит каждый порог; оно не молча приравнивает обычный плоский рельеф к статус-квоック на оправ государца.
* Сохранённые golden fixtures, офлайн-тесты archive/Lua/reference и изолированный живой авторский стенд, который редактирует существующий файл, восстанавливает оригинал и проверяет хеш.
* Планирование авиабазы в реальном времени использует фильтр самолётной упаковки DCS и его данные категорий, открытые зарезервированных места, наземный ветер и положения, маркированные на дорожках, а также аппроксимацию такси до возможного порога. Проверенное создание поддерживает холодный, горючий и издевный старты для одного–четырёх самолётов, а также создаёт частично построенную группу при ошибке этапа. Стратегия активного направления может переназначить собственный компактный выбор места на проверенный предпочтительный набор.
* Предустановленное авторство нагрузки запрашивает установленную сборку DCS для именованных авиационных наборов, вложений, их заявленной совместимости, классов и веса. Патчи могут применить один пресетий или сделать ограниченную корректировку по пилону; шлюз никогда не просит модель изобретать CLSID или полный маршрут нагрузки. Также при военной автодоставке явно проверяется доля боезапаса пушеч; бескорпусный самолёт предупреждается, если это намеренно.
- Обнаружение живых задач перечисляет только те точки маршрута и активности по пути, которые DCS предоставляет для существующей группы; описания задач обеспечивают значения по умолчанию, допустимые варианты и недостающие указания по выбору целей, прежде чем будет разработан патч.
- Даты/время миссии и существенные поля погоды можно прочитать в каждом семантическом снапшote и записываются как операция среды с проверкой ревизией. В типизированных опциях точки маршрута включены «Реакция на угрозу», ВПВ, использование радара/ЭФО, отсутствие аварии возврат на базу (Bingo RTB), радиомолчание и запрет сброса/форсажа.
- Ролевые профили самолётов с фиксированным крылом и прозрачные оценки запуска/руления/взлёта/набора высоты помогают синхронизировать прибытие пакета. Офлайн-линт предупреждает, когда AI перехват/rumor начинает свой путь низко или медленно.
- Офлайн-линт поведения предупреждает о невоорönженных боевых самолётах AI, боевых группах без связанного боевого задания, целевых столидиях без целевых ID, семантических именах точек маршрута без соответствующего поведения, и воздушных маршрутах без конечного действия (посадки/орбита/петли). Линт целей также предупреждает о противоположных исходах, которые могут оба словить, условия параллельного удержания при одном выжившем члене группы, исключённых из всех известных условий инструкции группах, и точках перехвата, назначенных группам без самолётов. Это евристические замечания о построении миссии, а не безопасности достоверности AI-поведения DCS.
Шлюз **не** претендует на откат для декларативных исправлений. Команды малых исправлений DCS-SMS выполняются последовательно в одном обратном вызове ME; если команда N завершится ошибкой, команды с 1 по N-1 могут быть уже применены. Результат кофикса фиксирует применённый префикс и ключ идемпотентности, что предотвращает слепой повторный запуск. Отдельная точка `apply_mission_fragment` имеет внутренний откат DCS-SMS и обязательно указывает на неполный откат. Если окончательный результат или снапшот после применения не могут подтвердить требование результат, шлюз возвращает `OUTCOME_UNKNOWN` и требует проверки миссии перед восстановлением; он никогда не делает вид, что не прошедшая проверка отклонила сам факт изменения. Будущая транзакционная команда патча описана в [`docs/dcs-sms-extension.md`](docs/dcs-sms-extension.md). Поскольку живая семантическая ревизия не содержит данных складов, шлюз консервативно блокирует кэшированное восстановление фрагментов, содержащих эффекты складов; проверьте миссию перед выбором нового ключа. Чертежи включены в семантические ревизии и проверки «сохранить/открыть».
Ревизии и новые проверки «сохранить/повторно» охватывают API-поверхность протокола авторства версии 0.1: семантическая среда, группа, юнит, маршрут, триггер, зона, записи рисунков, а также путь миссии и театр. Брифинг, склады и глобальные параметры миссии не входят в текущую границу ревизии.
DCS сохраняет курсы юнитов на уровне группы. Поэтому семантический снимок использует веду выдел юнита для каждого юнита этой группы. Попытка назначить разный постоянный курс только неведущему юниту приведёт к провалу проверки постусловия, а не к молчаливому дрейфу после повторного обновления.
## Требования
* Выпуск для Windows включает свой собственный runtime Node.js. Разработка из определений версий требует Node.js 20 или новее.
* Windows, DCS World и DCS-SMS ME-мод для инструментов живого эдитора.
* Mission Editor должен быть открыт с включённым пунктом `DCS-SMS -> External execution` для изменений.
* `inspect_map_view` дополнительно требует, чтобы карта Editor открыта не в свёрнутом окне. DCS может оставаться не в фокусе или быть закрытым; шлюз захватывает своё окно приложения без вывода фона на передний план и не использует фоновый захват, зависящий от одного мониторакаффе.Извлечение карты требует типизированных глаголов terrain info, terrain sample-grid, terrain list-places, terrain nearest-transport, terrain transport-path, airbase plan-start и airbase create-start в сопутствующем рабочем дереве DCS-SMS ME-mod 0.32.4.
Установка Windows-релиза
Релиз представляет собой один ZIP-архив. Он включает шлюз, зафиксированные производственные зависимости, переносимую среду выполнения Node и совместимый исходный код моста DCS-SMS Mission Editor. Он не требует отдельной установки DCS-SMS и не устанавливает хук миссии DCS-SMS или дополнительные файлы LuaSec/OpenSSL.
Распакуйте ZIP, закройте DCS и выполните:
powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1 -Clients codexПоддерживаемые значения -Clients: codex, claude-code, claude-desktop и generic; можно передать несколько. generic записывает переносимый mcp-config.json. Codex и ChatGPT desktop используют общую локальную конфигурацию MCP от Codex. Claude Code и Claude Desktop регистрируются независимо. Другие клиенты могут использовать ту же команду stdio и окружение из файла generic. ChatGPT в вебе не может напрямую запустить локальный stdio-сервер; этот пакет предназначен для ChatGPT desktop/Codex на машине, где запущен DCS. См. текущую документацию OpenAI MCP и документацию Claude Code MCP для их нативных поверхностей конфигурации.
Установщик:
обнаруживает DCS и Saved Games или принимает
-DcsPathи-SavedGames;проверяет, что в DCS отключён
Full Screen, но никогда не изменяет эту настройку;отказывается патчить Mission Editor, пока DCS запущен;
создаёт резервную копию пользовательского
MissionEditor.luaи любого предыдущего моста;устанавливает встроенный исходный код моста GPLv3 и добавляет только свой разграниченный блок require в собственный файл редактора пользователя; и
регистрирует только запись MCP
dcs-me, запрошенную пользователем, и привязывает эту запись к выбранному экземпляру Saved Games.
При запуске MCP шлюз проверяет конечную точку последнего стабильного релиза GitHub с таймаутом 2,5 секунды и локальным кэшем на шесть часов. Когда доступна более новая семантическая версия, его инструкции MCP сообщают агенту спросить пользователя, обновлять ли. Проверка никогда ничего не устанавливает. После явного одобрения закройте DCS и все MCP-клиенты, использующие шлюз, затем выполните:
powershell -NoProfile -ExecutionPolicy Bypass -File `
"$env:LOCALAPPDATA\DcsMeGateway\update.ps1"Обновлятор снова спрашивает перед изменением, загружает только версионированный Windows-релиз, проверяет его отдельно опубликованный SHA-256 и вызывает обычный установщик с сохранением резервных копий. Установите DCS_ME_GATEWAY_UPDATE_CHECK=0, чтобы отключить автоматическую проверку. check_gateway_update выполняет проверку по требованию или принудительную. Теги предварительных версий намеренно исключены из этого канала обновления.
Для установки под руководством агента передайте извлечённую папку агенту и попросите его следовать VIBEINSTALL.md. После установки перезапустите MCP-клиент, откройте миссию в DCS Mission Editor и включите DCS-SMS -> External execution. Этот переключатель действует только в рамках сеанса.
Шлюз имеет лицензию MIT. Встроенный мост DCS-SMS остаётся под GPLv3 и поставляется с полным исходным кодом и лицензией в payload/bridge; см. THIRD_PARTY_NOTICES.md.
Related MCP server: DCS Lua Runner MCP Server
Установка из исходников и проверка
cd C:\path\to\dcs-me-gateway
npm install
npm test
npm run build
npm run test:golden
npm run test:liveВсё вплоть до test:golden полностью офлайн; DCS может оставаться закрытым. Проверьте любую сохранённую миссию независимо с помощью:
npm run validate:miz -- D:\Missions\mission.mizПроверяющий инструмент проверяет целостность ZIP и ограничения на развёртывание, обязательные записи, буквальный синтаксис Lua, структуру миссии, ID/имена, маршруты, координаты, ссылки на сущности, ключи словаря и упакованные ресурсы. Он разбирает Lua в данные без загрузки или выполнения кода миссии.
Имея декларативный патч и сохранённые файлы непосредственно до и после него, создайте сфокусированный отчёт о приёмке с помощью:
npm run report:patch -- patch.json before.miz after.miz [bindings-before.json] [bindings-after.json]
npm run docs:render -- --mission <saved.miz> --dataset <dataset-id> --output <new-directory>Отчёт содержит прямые цели патча, контекст зависимостей на один переход, постусловия операций, введённые/разрешённые результаты проверки и любые изменённые сущности вне этой области. Он завершается ненулевым кодом, если файл после изменения недействителен, постусловие не выполняется, зависимость изменилась неожиданно, несвязанные метаданные/параметры/склады миссии изменились или изменилась сущность вне области. Патчи, ссылающиеся на логические ID, созданные ранее, должны предоставлять соответствующий объект привязки {"entities": ...} (до и, если распределения изменились, после); неразрешённые ID явно сообщаются и приводят к провалу приёмки.
test:live читает только сеанс редактора. Добавьте -- --snapshot для живого снимка миссии только для чтения.
npm run test:live-authoring намеренно изменяет данные. Он требует, чтобы сохранённая миссия уже была открыта в Mission Editor. Тестовая обвязка сначала клонирует эту миссию через Save-As в .artifacts/live, редактирует только клон, проверяет идемпотентность, конфликты ревизий, редактирование маршрутов, зоны и стабильность сохранения/повторного открытия, затем снова открывает оригинал и проверяет, что его SHA-256 не изменился. Он не запускает и не выполняет миссию.
Запустите MCP-сервер через stdio:
node C:\path\to\dcs-me-gateway\build\index.jsMCP-хост должен настроить эту команду и путь как stdio-сервер с именем dcs-me. Диагностика идёт в stderr; stdout зарезервирован для кадров MCP.
Конфигурация
Переменная окружения | По умолчанию | Описание |
| автоопределение | Корневой каталог экземпляра DCS Saved Games |
| автоопределение | Совместимое переопределение DCS-SMS; также принимается |
|
| Состояние привязок и идемпотентности |
|
| Постоянные наборы тайлов местности и предпросмотры |
| в комплекте | Встроенный реестр карт-паков и указатель удалённого реестра |
| указатель реестра или нет | Явное переопределение HTTPS-реестра карт-паков |
|
| Предельный срок по умолчанию для live-smoke |
|
| Интервал опроса почтового ящика |
|
| Порт локального просмотрщика семантических карт (только localhost) |
Без переопределения шлюз читает значение конфигурации saved_games из DCS-SMS, затем выбирает экземпляр DCS, DCS.openbeta или DCS.server с самым новым heartbeat ME. Установите DCS_SMS_SAVED_GAMES, если Windows Saved Games был перемещён, а DCS-SMS не записал этот путь в свою конфигурацию.
Инструменты MCP
Инструмент | Мутация | Назначение |
| Да | Новый/открытый жизненный цикл с барьером семантической стабильности |
| Нет | Разрешения, жизненный цикл, heartbeat, статус очереди |
| Нет | Возможности, типизированные параметры ИИ, профили полёта, актуальные авиабазы, права на авианосцы/корпуса/самолёты, предикаты триггеров |
| Нет | Ролевые значения по умолчанию для высоты/скорости/параметров и прозрачная оценка прибытия |
| Нет | Перечисление/разрешение настраиваемых планов создания ЗРК, ЗРК/зенитной артиллерии на подготовленных позициях, AWACS и заправщиков |
| Нет | Актуальные пресеты, созданные в DCS, совместимость с задачами, подвески, вес и опциональные детали по точкам подвески |
| Нет | Актуальные задачи на точках маршрута/по маршруту, допустимые для существующей группы |
| Нет | Актуальные поля, значения по умолчанию, допустимые значения и рекомендации по выбору цели для одной задачи |
| Нет | Нормализованное состояние миссии плюс ревизия |
| Нет | Офлайн-проверка структуры, ссылок, поведения ИИ и семантики целей |
| Нет | Сфокусированный отчёт о приёмке |
| Нет | Компиляция и предварительная проверка патча |
| Да | Пакетная операция за один тик, с проверкой ревизии, идемпотентная |
| Да | Нативная транзакция DCS-SMS с откатом; неопределённые постусловия требуют проверки |
| Да | Шаблон авианосца/эскорта синих/красных с учётом прав, WOD, радио/маяки, самолёты, привязанные к палубе, и предустановленные подвески |
| Да | Массовые круги, линии, полигоны, подписи и удаления F10 с отслеживанием ревизий |
| Новый файл | Планшеты с копированием при записи и SHA-фиксацией, текст/изображения брифинга и типизированные внешние ресурсы; DCS может быть закрыт |
| Новый файл | При явном согласии пользователя внедряет зафиксированные рантаймы MIST/Skynet и проверенную конфигурацию IADS с префиксом; DCS может быть закрыт |
| Нет | Разрешение текста/изображений брифинга, планшетов, ресурсов карты, наличия архивов и счётчиков ссылок миссии в офлайн-режиме |
| Новые предпросмотры | Детерминированные PNG-страницы: карточка миссии на каждый самолёт, связь/подвески, точки маршрута и чистая карта маршрута |
| Да | Сохранение как, повторное открытие и семантическое сравнение |
| Нет | Перечисление постоянных кэшей местности; полностью офлайн |
| Загрузка/запись в кэш | Обязательная проверка театра: повторное использование локального, загрузка и проверка размещённого пакета или явный запрос разрешения перед локальной сборкой |
| Запись в кэш | Ограниченная/возобновляемая извлечение местности из работающего DCS и генерация производных данных |
| Запись в кэш | Отдельная возобновляемая маска поверхности рек/озёр высокого разрешения; однородная низкодетализированная суша и открытое море пропускаются |
| Только предпросмотр | Офлайн-местность, авиабазы, именованные места, кандидаты объектов и аннотированный PNG-контекст |
| Временная камера | Геопривязанный PNG по запросу видимой карты ME в реальном времени с восстановлением камеры и подтверждением видимости |
| Обычно нет | Трёхсостоятельный кэшированный LOS местности; только |
| Только отчёт | Проверка тайлов/швов плюс опциональная детерминированная сверка точек с работающим DCS |
| Нет | Офлайн-контекст ВПП, стоянок, укрытий, размерных категорий и перрона |
| Только предпросмотр | Офлайн-выборка дорожных/железнодорожных коридоров, кандидатов переездов, районов поселений и рекомендации по просмотру изображений |
| Нет | Точный маршрут по дорогам в реальном времени или консервативно проверенный железнодорожный кандидат DCS |
| Нет | Нативная совместимость/занятость DCS плюс планирование ветра/ВПП/руления/взлёта |
| Да | Создание группы стоянки/ВПП с проверкой ревизии, идемпотентное, проверенное, компактное или на активной ВПП |
Жизненный цикл картографических пакетов
Перед планированием миссии, зависящим от карты, агент миссии должен вызвать ensure_map_dataset для театра. Инструмент сначала повторно использует полный локальный набор данных, затем проверяет встроенный реестр и его опциональный удалённый реестр, размещённый на GitHub. Загрузка выполняется потоково, ограничена зарегистрированным количеством байт, проверяется по зарегистрированному SHA-256, безопасно извлекается, проверяется на соответствие идентичности набора данных/театра и полноту, и публикуется атомарно. Встроенный реестр в maps/registry.json также является каноническим удалённым реестром. Крупные наборы данных — это неизменяемые ресурсы релизов GitHub, зафиксированные по SHA-256; сырые кэши и сгенерированные архивы никогда не фиксируются в Git.
Если пакет не зарегистрирован, инструмент возвращает permission_required, а не открывает DCS и не начинает многочасовое извлечение самостоятельно. Только после одобрения пользователя агент может повторить вызов с allow_local_build=true. Запрошенный театр должен быть установлен и открыт в Mission Editor с включённым внешним выполнением. Сборка возобновляема и может потребовать повторных вызовов.
Разработчики могут явно собрать и упаковать неразмещённый театр:
npm run maps:settlements
npm run maps:build -- --theatre Caucasus
npm run maps:package -- --dataset caucasus-full-v01-250m `
--base-url https://github.com/ALasek/DCS-ME-gateway/releases/download/maps-v0.9.0maps:settlements — это быстрый независимый проход проверки для театра, открытого в данный момент в Mission Editor. Он разрешает соответствующий курируемый каталог через авторитетное преобразование координат DCS, объединяет собственные метки городов DCS и записывает JSON плюс размеченный PNG в .artifacts/settlements. Он не выполняет выборку и не перестраивает данные местности, рельефа, земного покрова, гидрологии, транспорта или авиабаз. Используйте --output <directory>, чтобы выбрать стабильное расположение вывода.
Команда упаковки выводит точную запись реестра, включая размер архива и SHA-256. Добавьте эту запись в maps/registry.json и загрузите .tgz в соответствующий релиз. Локальная сборка — это запасной вариант для карт, которыми автор проекта не владеет; это никогда не является подразумеваемым согласием.
preprocess_map_region проверяет запрошенный прямоугольник на соответствие авторитетным границам театра DCS. Ограничение DCS в 4 096 применяется к выборкам в каждом запросе сетки местности, а не к тайлам набора данных. max_tiles — это лишь намеренная защита размера набора данных (50 000 по умолчанию); tile_batch_limit ограничивает каждый вызов MCP 200 отсутствующими тайлами по умолчанию. Если результат имеет complete=false, повторите вызов с идентичной геометрией набора данных и настройками выборки. Каждое обновление тайла и манифеста уже является устойчивым, неполные наборы данных отклоняют обычные запросы, а финальная проверка может удалить нечитаемые, повреждённые или невалидные по швам тайлы для автоматического исправления при следующем пакете.
Изменения размера пакета и защитных ограничений не меняют автоматически сгенерированный идентификатор набора данных.
Его координаты north/east — это те же локальные метры театра, которые используются объектами миссии. Предварительный проход по умолчанию может сохранять однородное море с высокой уверенностью или однородную сушу, похожую на заглушку, при грубом разрешении; каждое такое решение видно в манифесте и результате запроса. Береговые линии, смешанные поверхности и плоская местность, не удовлетворяющие всем порогам, остаются в полном разрешении.
Авиабазы и метки мест, созданные в DCS, кэшируются рядом с тайлами местности и аннотируются на предпросмотрах. Записи мест не классифицируются как город/посёлок/деревня, поскольку источник DCS не раскрывает это различие. Семантическое происхождение фиксирует сборку DCS, локаль и источник городов театра; идентификаторы мест выводятся из координат, поскольку дублирующиеся ключи Lua перезаписываются при загрузке некоторых наборов данных театра в DCS. Изменённая сборка местности DCS требует явной пересборки с force=true вместо молчаливого повторного использования устаревших тайлов.
query_map_context, query_airbase_context и query_transport_context читают только кэш, поэтому DCS может быть закрыт. Кластеризация перрона на 200 м и полосы конвертов компактный/стандартный/большой — это навигационные эвристики, а не заявления о совместимости с DCS. plan_airbase_start всегда повторно проверяет запрошенный самолёт и текущую занятость через DCS перед изменением.
render_mission_documents детерминирован для одного и того же сохранённого задания, кэша рельефа, версии стиля, выбранных групп и предоставленной прозы. По умолчанию он выбирает полёты Player/Client. Он создаёт манифест и готовые к передаче записи kneeboard_images, но не изменяет миссию. Папки колендуров DCS могут быть нацелены на все самолёты или на тип самолёта; они не могут различать два полёта, использующих один и тот же тип, поэтому объединяйте такие инструкции или используйте страницы брифинга, когда требуется разделение по полётам. Карточка миссии определяет тип самолёта, не подразумевая количества на полёт. Страница связи/снаряжения использует канонические читаемые имена подвесок, топливо в фунтах и боекомплект пушки в процентах; она никогда не отображает внутренние CLSID. Если в сохранённой миссии есть подвески, но нет читаемого имени пресета, вызовите get_aircraft_loadouts с include_stations=true и передайте его имена DCS в flight_notes.loadout_summary. Затем рендеринг выдаёт явное предупреждение, пока эти имена не будут предоставлены. Таблицы путевых точек используют проверенные значения ETA сохранённого маршрута там, где маршрут действительно запланирован; для событий, управляемых состоянием или темпом игрока, можно использовать flight_notes.waypoint_notes[].time_label для подсказок и временных окон, не выдумывая фиксированное время. Рендеринг предупреждает, когда у многопутевого маршрута игрока нет ни полезных значений ETA, ни временных меток. Карты маршрутов добавляют только разреженные подписи авиабаз и крупных населённых пунктов, при этом подписи маршрутов и путевых точек сохраняют приоритет коллизий и визуальный приоритет. Предварительно просматривайте каждую страницу перед её встраиванием.
apply_miz_overlay намеренно не является универсальным редактором таблиц миссии. Сохраните активную миссию ME, закройте или откройте другой файл, проверьте существующее внешнее содержимое, зафиксируйте сообщённый SHA-256 исходного файла и запишите в новый выходной путь. Инструмент проверяет реальные сигнатуры изображений/звуков/скриптов, запрещает удаление связанных ресурсов и удаляет заменённые изображения брифинга только тогда, когда не остаётся ссылок из миссии. После успешного наложения откройте выходной файл в ME и запустите save_and_verify. Основные группы, маршруты, триггеры и цели остаются созданными в ME; это предотвращает молчаливое расхождение двух редакторов над одним .miz.
Опциональный Skynet-IADS
Для значимого многопозиционного сценария/сети EWR, сценария SEAD/DEAD или миссии, чей баланс зависит от тактики излучения РЛС, агент может один раз порекомендовать Skynet и спросить, принимает ли пользователь поведение, зависящее от скриптов времени выполнения. Не следует прерывать этим вопросом каждый проект изолированной ПВО. Встроенные состояния тревоги DCS и детерминированные триггеры излучения остаются по умолчанию для изолированных, предсказуемых или учебных угроз.
После принятия дайте управляемым группам SAM общий префикс, а управляемым подразделениям EWR отдельный префикс, сохраните миссию и вызовите setup_iads с SHA-256 сохранённого файла и новым выходным путём. Инструмент проверяет и встраивает Skynet-IADS 3.3.0 с проверенным вышестоящим MIST 4.5.107, затем добавляет один триггер Mission Start, загружающий MIST, Skynet и сгенерированную конфигурацию в этом порядке. Результирующий .miz является автономным; игрокам ничего устанавливать не нужно. Откройте выходной файл в Mission Editor и запустите save_and_verify перед продолжением.
Настройка проверяет хэши скриптов, порядок загрузки, принадлежность коалиции, префиксы и именованные командные центры. Она не может доказать поведение IADS во время выполнения без запуска миссии. Сохраняйте один тип ЗРК на управляемую группу SAM, одну РЛС EWR на управляемую группу EWR и не добавляйте собственные действия по излучению, которые конкурируют со Skynet за одни и те же радары. Происхождение, точные хэши и лицензии записаны в vendor/skynet-iads/3.3.0 и THIRD_PARTY_NOTICES.md.
analyze_terrain_line билинейно интерполирует самую мелкую кэшированную сетку, покрывающую каждую выборку, и сообщает clear, blocked или indeterminate. Классификатор использует явную огибающую разрешения рельефа: для clear и blocked требуется, чтобы вся огибающая оставалась по одну сторону линии визирования. Режим только кэша сообщает о неопределённом коридоре и рекомендуемом шаге, не обращаясь к DCS. refinement_mode=auto-live сэмплирует этот ограниченный коридор из соответствующего открытого театра Mission Editor, разбивает его по лимиту выборок на вызов расширения, сохраняет более мелкие тайлы в наборе данных и немедленно повторяет LOS. Последующие запросы повторно используют эти тайлы при закрытом DCS. Повторный мелкий прогон может правомерно остаться indeterminate; ответ сообщает предел разрешения и, где возможно, меньший следующий шаг, а не выдумывает ответ clear/blocked. Это подходит для размещения РЛС/ЗРК и проверки маршрутов, но не для окончательных утверждений о видимости там, где важны здания или деревья.
После завершения тайлов рельефа семантическая предобработка создаёт классификационный растр 2 км, сглаживает изолированные ячейки суши и преобразует каждую четырёхсвязную компоненту в компактный регион рельефа со статистикой, смежностью и геометрией строк. Авиабазы и скопления поселений становятся узлами графа. Кандидаты дорог включают до четырёх соседей в пределах 80 км плюс ограниченное восстановление связности; кандидаты железных дорог — до двух соседей в пределах 120 км. Маршрутизация железных дорог DCS рассматривается как косвенное свидетельство, поскольку её селектор наземной сети может возвращать несвязанные линейные объекты. Кэшированный железнодорожный коридор должен попадать в 1,5 км от обеих опор, а его маршрутная длина должна покрывать не менее половины прямого расстояния между ними; более слабые результаты остаются неудачными кандидатами для проверки, а не выдаются агенту как железная дорога. transport_batch_limit ограничивает извлечение путей DCS за один вызов, а состояние рёбер pending/complete/failed является устойчивым и возобновляемым. Завершённые полилинии сохраняют идентификаторы узлов и привязанные точки шлюзов. query_transport_context использует алгоритм Дейкстры по завершённым кэшированным рёбрам для офлайн-маршрута между именованными узлами; route_ground_transport применяет те же консервативные проверки железных дорог к точным текущим путям DCS, используемым при создании миссий. Водные участки помечаются как water-crossing-candidate, а не утверждаются как разрушаемые мостовые объекты. Кластеризация поселений намеренно избегает покаталожного перечня зданий, который был бы чувствителен к версии рельефа и излишне большим.
Процессор Persian Gulf дополняет собственные подписи городов DCS разреженным редактируемым каталогом maps/settlements/persian-gulf.json. Он содержит крупные города, порты и островные поселения, отобранные для словаря сценариев примерно 1980–1990 годов; это не исторический городской след. Во время предобработки DCS преобразует каждую точку WGS84 в локальные координаты загруженного театра. Совпадающие близлежащие подписи DCS сохраняют свою позицию DCS, получая при этом курируемые имя, псевдонимы, тип и важность. Отдельная курируемая точка остаётся только региональным семантическим свидетельством. SHA-256 каталога и происхождение источника/эпохи хранятся в semantics.json, поэтому редактирование каталога делает недействительной и пересобирает кэшированную семантику поселений и транспорта без пересборки тайлов рельефа. См. maps/settlements/README.md с намеренно простым форматом очистки.
query_map_context можно вызывать с границами, semantic_search или обоими. Семантический поиск может фильтровать классы рельефа, минимальную площадь региона, близость к объекту, тип/имя объекта и приблизительный доступ к дорогам без загрузки тайлов рельефа или необходимости в DCS. inspect_map_view — это дополнительный путь детализации: он не кэширует каждое здание или дорожную разметку, а возвращает текущий рендеринг ME в запрошенном масштабе с аффинным преобразованием из пикселей в театр. Он временно записывает камеру карты ME, сериализуется с другими изменениями шлюза и восстанавливает предыдущую камеру, даже если захват или проверка видимости не удались. Он определяет точный дескриптор окна DCS и завершается с геометрией окна и деталями восстановления, когда DCS свёрнут или эксклюзивный полноэкранный Alt-Tab удалил его захватываемую поверхность. Безрамочный/оконный DCS может оставаться позади MCP-клиента во время проверки. Если авиабаза, скопление поселений и исходное место DCS имеют одно имя, используйте возвращённый идентификатор объекта или селектор kind:name, например settlement:Batumi или airbase:Batumi; неоднозначные голые имена приводят к ошибке, а не молчаливому выбору одного из них.
Запустите локальное средство просмотра многослойного кэша с помощью npm run viewer во время разработки или npm run viewer:start после npm run build, затем откройте http://127.0.0.1:4317. Он визуализирует чистую кэшированную топографию, смежные области рельефа, пригодные и неудачные транспортные рёбра, оболочки поселений, семантические объекты и подписи без обращения к DCS.
validate_map_dataset потоково проверяет читаемость тайлов и массивы, сравнивает только соседние общие рёбра и не материализует всю карту в памяти. Его значение по умолчанию direct_samples=16 сравнивает равномерно распределённые кэшированные точки с текущим загруженным театром DCS; используйте direct_samples=0 для проверок только в офлайне. Отчёт также сохраняется как validation.json в каталоге набора данных. Обзор завершённого набора данных аналогично рисуется по одному тайлу в ограниченный выходной растр.
Ограниченный кавказский сборочный стенд намеренно сэмплирует детализированную полосу Батуми-Кобулети от побережья до гор, а не плоскую внешнюю область карты:
npm run test:live-mapОн сэмплирует north=-370000..-330000, east=610000..670000 с шагом 250 м, сохраняет прогресс после каждого тайла и безопасен для повторного запуска. Добавляйте -- --force только для намеренного обновления уже кэшированных тайлов. Он не обрабатывает всю карту.
Уточнение гидрологии
Кэш рельефа 250 м намеренно не рассматривается как авторитетная геометрия рек: узкая река может попасть между точками сетки и выглядеть как редкие синие точки. preprocess_hydrology_layer прикрепляет отдельный кэш hydrology/ к существующему завершённому набору данных. Его сетка по умолчанию 50 м хранит только компактный двухбитовый код поверхности для каждой выборки; высоты и производные рельефа остаются в базовом разрешении. Базовые тайлы, уже доказанно являющиеся однородной заглушкой суши или открытого моря, исключаются из планирования, а детализированные и смешанные прибрежные тайлы сэмплируются. Начните с репрезентативных границ и повторяйте идентичные вызовы, пока completeForBounds=true. Позже опустите bounds, чтобы расширить тот же слой на все детализированные базовые тайлы. tile_batch_limit ограничивает каждый вызов, а max_tiles — это лишь намеренный предохранительный предел. Изменённый шаг, размер тайла, театр или сигнатура рельефа DCS завершаются с отказом; force=true намеренно начинает новое обновление гидрологии, а последующие возобновляемые вызовы используют force=false. query_map_context возвращает покрытие, точные ограниченные количества поверхностей, детерминированные метрики сшивки и сэмплированные восьмисвязные компоненты рек/озёр, когда слой существует. Его предпросмотр и чистые карты документации включают более точную водную маску.
Исходные коды DCS и подсчёты поверхностей остаются неизменяемым доказательством. Офлайн-направленный сшиватель может заполнить не более двух отсутствующих ячеек, когда исходные выборки на обоих концах продолжаются вдоль одной линии; выведенные ячейки сообщаются отдельно и используются только для непрерывности компонентов и отрисовки. Это намеренно более консервативно, чем неограниченное морфологическое замыкание, которое может слить близлежащие несвязанные водные пути. Геометрия компонента не является ни полигоном берега, ни гарантией навигации. Реки, более узкие, чем выбранный шаг, всё ещё могут быть фрагментированы, поэтому используйте более плотный ограниченный проход или проверку на живой карте, когда точное размещение берегов имеет значение. Высокодостоверные грубые базовые тайлы суши-заглушки и однородного моря намеренно находятся вне зоны покрытия гидрологии; эта оптимизация предполагает, что базовая низкодетальная калибровка уже отделила нематериальную для миссии местность карты от реальных детализированных равнин. Просмотрщик отображает сгенерированный слой как отдельно переключаемый оверлей Rivers / lakes. Представление является производным, а не доказательным: озёра сохраняют сглаженный растр выбранной области, тогда как речные полосы детерминированно утончаются, консервативно соединяются через разрывы, упрощаются и рисуются как сглаженные SVG-центролинии с фиксированной экранной шириной. Запросы и валидация продолжают использовать исходные упакованные ячейки и отдельно идентифицированные точки сшивки.
Полная схема патча также доступна как ресурс MCP
dcs-me://schema/mission-patch/0.1. См.
examples/f16-rwr-patch.json и последующий
examples/f16-rwr-route-patch.json.
Авторство миссии целиком должно начинаться с MCP-промпта
design_dcs_mission. Он направляет диалог, а не требует одноразовой спецификации: агент может задавать важные вопросы, рекомендовать значения по умолчанию, предлагать альтернативы и вести живую запись роли игрока, исхода, фаз, назначения каждой группы, причинно-следственных взаимодействий, возможностей/снаряжения и баланса. Каноническая человекочитаемая инструкция находится в
docs/design-dcs-mission.md; сервер загружает этот же файл для инструкций по инициализации, MCP-промпта и ресурса руководства. Связный каркас и первый срез предшествуют мутации, но более поздние детали могут оставаться открытыми, пока одобренные срезы создаются и тестируются. Та же инструкция доступна как ресурс только для чтения
dcs-me://guidance/mission-design/0.1. Концепции миссии разрабатываются с пользователем и реализуются инкрементально с учётом ограничений привязки Mission Editor.
Схема полного фрагмента доступна по адресу
dcs-me://schema/mission-fragment/0.1. Она принимает модель данных, используемую префабом DCS-SMS (meta, groups, statics, zones, drawings и triggers), плюс явную политику размещения. Конечная точка выполняет свою предварительную проверку и мутацию внутри Mission Editor, поэтому для её вызова требуется DCS; разработка и запуск тестовых наборов репозитория — нет.
Схема высокоуровневого запроса авианосца доступна по адресу
dcs-me://schema/carrier-package/0.1. Сначала запросите get_catalog с
kind=carrier_capabilities, чтобы проверить корпуса, лицензии, совместимые с авианосцем самолёты и типы эскорта в открытой установке DCS. dry_run=true возвращает скомпилированный фрагмент и разрешённый план ветра над палубой без изменения миссии. Автоматический выбор модуля предпочитает Supercarrier, когда DCS сообщает, что он установлен и авторизован, и в противном случае выбирает бесплатный авианосец коалиции.
Схема высокоуровневого запроса авиабазы доступна по адресу
dcs-me://schema/airbase-start/0.1. create_airbase_start требует открытого Mission Editor, проверяет запрошенную семантическую ревизию и ключ идемпотентности, предварительно проверяет свободные совместимые стоянки, вызывает нативный глагол конструирования DCS-SMS, а затем проверяет размер группы, тип самолёта, привязку к аэродрому нулевой путевой точки, режим взлёта и явные ID парковки в свежем снимке. Стратегия парковки по умолчанию active_runway использует приземный ветер и обозначения ВПП для ранжирования свободных совместимых стоянок по пороговому расстоянию по прямой, затем проверяет переназначение; compact сохраняет исходный выбор близлежащей группы DCS-SMS. Это расстояние — прокси для руления, а не гарантированное время по маршруту. Фиксированные наземные аэродромы используют эту конечную точку; палубные слоты авианосца используют setup_carrier_package. FARP остаются отдельной будущей поверхностью.
Значения полей триггеров могут ссылаться на более раннюю логическую сущность с помощью
"$ref:<logical_id>"; компилятор подставляет её стабильное имя DCS. Ссылка на именованное Triggered Action разрешается в текущий кортеж DCS
{groupId, taskNumber} непосредственно перед добавлением действия триггера. Значения index путевых точек в снимках и каждый waypoint_index патча являются нулевыми. Индексы правил триггеров и слоты Triggered Action остаются единичными.
Поддерживаемые операции:
Существующие сущности:
adopt_entityдля точных имён групп, юнитов, триггеров или зон.Группы:
create_group,set_group_task,set_group_late_activation,remove_group. Установитеlead_logical_idвcreate_group, когда последующие патчи должны обращаться к её первому юниту; шлюз привязывает имя, возвращённое DCS.Юниты:
add_unit,set_unit_skill,set_unit_heading,set_unit_loadout,set_unit_payload,clear_unit_payload,remove_unit. Расходуемые запасы:set_unit_fuel,set_unit_chaff,set_unit_flareиset_unit_gun.Маршруты:
add_waypoint,insert_waypoint,remove_waypoint,link_waypoint_airbase.Поведение путевых точек:
add_waypoint_task,add_waypoint_enroute_task,remove_waypoint_task,remove_waypoint_enroute_task,clear_waypoint_tasks,clear_waypoint_enroute_tasksи типизированная операцияset_waypoint_option. Поляfieldsзадач принимают вложенные JSON-подобные массивы и записи, включая селекторы, такие какtargetTypes: ["Air"].Групповые Triggered Actions:
add_triggered_task,replace_triggered_taskиremove_triggered_task. Они создают записи задач/попутных задач со стабильными именами; используйте логический ID задачи в поле действия триггераa_ai_taskилиa_set_ai_task. Удалите ссылающееся действие триггера перед удалением задачи.Окружение:
set_mission_environmentдля даты/времени, температуры, QNH, видимости, турбулентности, ветра на трёх уровнях, облаков и пыли.Триггеры:
create_trigger,add_trigger_condition,add_trigger_action,remove_trigger_condition,remove_trigger_actionиremove_trigger.Зоны:
create_zone_circle,remove_zone.
Редактирование маршрута для группы, созданной в том же патче, требует последующего
патча, чтобы Mission Editor мог завершить построение состояния её маршрута. Редактирование
или удаление юнита, созданного add_unit, или лидера, объявленного через
create_group.lead_logical_id, также требует последующего патча, поскольку
DCS выделяет окончательное имя юнита в результате операции. Валидация сообщает
об этих ошибках как о явных барьерах до отправки любой мутации.
Рабочий процесс «сначала пресет» для самолётов
Для вооружённого самолёта вызовите get_aircraft_loadouts с aircraft_type и
intended_task. Предпочитайте пресет, созданный DCS, который объявляет совместимость с
этой задачей; когда совпадают несколько, выбирайте умеренный, чётко названный пресет, чьи
подвески соответствуют миссии и ожидаемой дальности. Запросите include_stations=true для
выбранного пресета перед любой настройкой. Примените его с помощью set_unit_loadout, затем
используйте set_unit_payload или clear_unit_payload только для явного требования,
которое пресет не удовлетворяет. Именованный пресет DCS меняет только пилоны: сравните
унаследованные значения топлива/помех/тепловых ловушек/пушки юнита с возвращёнными максимумами планера
и значениями средств противодействия по умолчанию, затем явно установите неподходящие значения. Настройки
взрывателей/программ для конкретных подвесок пока не являются частью ограниченной схемы патчей шлюза.
Перечисление снаряжения — это адаптер шлюза только для чтения поверх DCS Mission
Editor me_loadoututils, а не формальный глагол DCS-SMS. Поэтому он
чувствителен к версии, закрывается с ошибкой, если API Mission Editor изменится, и
был проверен на локально установленной сборке DCS, а не заявлен как
стабильный интерфейс Eagle Dynamics.
Для поведения ИИ сначала вызовите get_ai_task_catalog для фактической группы и вида
задачи, затем describe_ai_task. EngageGroup/AttackGroup требуют числовой
groupId; варианты для юнитов требуют unitId; EngageTargetsInZone требует
локальные для театра x (север) и y (восток). Используйте ID из текущего
семантического снимка. Одно только имя задачи не делает назначение цели действительным.
Граница безопасности
Базовый мост DCS-SMS выполняет Lua в полном окружении Mission Editor. Этот сервер ограничивает сгенерированный код фиксированным пакетным диспетчером и вызовами глаголов DCS-SMS, сериализованными в JSON/base64. Держите его локальным, не открывайте его stdio через неаутентифицированный сетевой сервис и оставляйте External execution отключённым, когда он не нужен.
Офлайн-валидатор и отчёт о патчах не используют почтовый ящик DCS-SMS и не требуют установки или запуска DCS. Они устанавливают только структурную и ссылочную целостность. Они не могут доказать, что DCS загрузит архив, нормализует его идентично при сохранении, или что поведение ИИ, датчиков, триггеров и вооружения во время выполнения будет таким, как задумано; это остаётся явными более поздними уровнями приёмки.
Лицензия
MIT. DCS-SMS — отдельный проект; его дерево tools/ распространяется под GPLv3.
Сборка релиза для Windows
Сборщик релиза компилирует шлюз, устанавливает только заблокированные производственные npm зависимости в промежуточный каталог, загружает официальный дистрибутив Node для Windows и проверяет его опубликованный SHA-256, копирует точный совместимый исходный код моста DCS-SMS и текст GPL, инвентаризирует лицензии npm, записывает манифест для каждого файла и создаёт ZIP плюс контрольную сумму:
npm run release:windows -- -DcsSmsSource C:\path\to\dcs-smsПока кастомизированный исходный код моста 0.32.4 не зафиксирован и не опубликован, релизы
должны собираться из проверенного локального рабочего дерева DCS-SMS. Сгенерированный
payload/bridge/SOURCE.md записывает его базовую ревизию и то, было ли рабочее дерево
грязным; полный соответствующий исходный код моста находится внутри того же пакета.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables LLMs and AI agents to interact with AFSIM through standardized MCP tools for scenario management, entity/component control, simulation execution, and results analysis.3721MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to interact with DCS World in real-time through chat by executing Lua scripts and providing tools for mission info, unit management, coordinate conversion, and more.107MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to control Unreal Engine 5 editor for automated Blueprint authoring, level inspection, actor spawning, and other editor workflows via a local Python MCP server and UE plugin.3AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to interact with an ArduPilot vehicle in real-time via MAVLink, including reading state, inspecting and changing parameters, switching flight modes, diagnosing arming failures, and gated arming/disarming.1MIT
Related MCP Connectors
Build, validate, and deploy multi-agent AI solutions from any AI environment.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ALasek/DCS-ME-gateway'
If you have feedback or need assistance with the MCP directory API, please join our Discord server