SC2 Map Editor MCP
SC2 Map Editor MCP
MCP-сервер, позволяющий программному агенту просматривать и редактировать карты и моды StarCraft II, напрямую изменяя содержимое их файлов, а не управляя интерфейсом Galaxy Editor.
Статус: предварительная версия. Бо́льшая часть PLAN.md реализована, причём пробелы указаны явно, а не замалчиваются. Прочитайте Текущие возможности или спросите у запущенного сервера через sc2_get_server_info — это авторитетный ответ для конкретной сборки и машины.
Текущие возможности
Сервер сам сообщает это через sc2_get_server_info — это авторитетный ответ для работающей сборки. На данный момент:
Подсистема | Чтение | Запись | Примечания |
Промежуточная рабочая область | ✅ | ✅ | Только распакованные каталоги документов |
Реестр компонентов | ✅ | ⚠️ |
|
Каталоги GameData | ✅ | ✅ | Поиск, просмотр, разрешение наследования, поиск ссылок, патч/клонирование/создание/удаление. Только собственный документ — зависимости не загружаются |
Архивы MPQ ( | ✅ | ✅ | Побайтно идентичные циклы чтения-записи на реальных ладдерных картах, а карты, упакованные здесь, открываются в редакторе — см. docs/native-helper.md |
Скрипты Galaxy | ✅ | ✅ | Разбор, символы, диагностика синтаксиса, безопасное исправление текста. Без проверки типов — требуются нативы игры. Требуется сборка встроенного инструментария |
Триггеры | ✅ | ⚠️ | Структура, имена, поиск. Только переименование — структурное редактирование намеренно не реализовано |
Локализация | ✅ | ✅ | Текстовые таблицы, сохранение BOM и CRLF точно |
SC2Layout | ❌ | ❌ | Фаза 10 |
Размещённые объекты / регионы | ✅ | ✅ | Оба — XML, не бинарный. Размещение, перемещение, удаление — проходят через редактор. Высота ландшафта не учитывается |
Ландшафт | ⚠️ | ❌ | Только дескриптор (набор тайлов, размеры, наборы обрывов). Массовые данные сообщаются по магии/версии/размеру, никогда не декодируются |
Запуск редактора | ✅ | n/a | Открывает документ в Galaxy Editor; читает его журналы. Автоматический запуск тестовых карт не предусмотрен — надёжный механизм не подтверждён |
Почему пробелы находятся именно там, и что означает «⚠️» в каждой строке: docs/capabilities.md.
Упакованные архивы работают полностью: существующая карта, открытая из .SC2Map, расширенная здесь, переупакованная здесь и открытая в Galaxy Editor, загружается как настоящий документ, при этом редактор разрешает добавленные каталоги по имени. Для сборки помощника нужен C++ тулчейн и Windows SDK (scripts/build-native.ps1); без него capabilities.mpq сообщает false, и упакованные архивы отклоняются с понятной ошибкой.
Зависимости: локальные загружаются, а Blizzard — нет. Каталог .SC2Mod рядом с вашей картой индексируется, и его объекты становятся видимыми для наследования и ссылок — только для чтения, так как этот сервер никогда не изменяет архивы зависимостей. Стандартные моды Blizzard находятся в хранилище CASC установки, которое эта сборка не может прочитать; они сообщаются как in-casc, а не как отсутствующие, потому что это совершенно другое дело, чем повреждённая карта.
Инструменты
Инструмент | Только чтение | Назначение |
| да | Версии, конфигурация, матрица возможностей, ограничения |
| да | Находит StarCraft II без сканирования диска |
| нет | Подготавливает документ, возвращает |
| да | Тип, количества, компоненты, зависимости, диагностика, известные пробелы |
| да | Восстановить |
| да | Разобрать |
| да | Название, автор, тип мода, иконка, скриншоты, зависимости |
| да | Цепочка зависимостей в порядке разрешения |
| да | Справочная таблица кодов типов компонентов |
| да | Присутствующие домены каталога с количеством записей |
| да | Найти объекты каталога по id, с фильтром по домену |
| да | Собственное объявление объекта плюс XML без изменений |
| да | Фактические значения с наследованием и источником каждого |
| да | Что ссылается на объект и является ли он общим |
| нет | Изменения на уровне полей по пути, с предупреждениями об общих объектах |
| нет | Копировать объект под новым id, байт в байт |
| нет | Добавить новый объект, желательно с родителем |
| нет | Удалить объект; отказ, пока есть ссылки |
| да | Присутствующие локали и текстовые таблицы |
| да | Поиск по текстовой таблице по ключу или значению |
| да | Прочитать одну локализованную строку |
| нет | Создать или обновить локализованные строки |
| нет | Удалить локализованные строки |
| нет | Копировать строки между ключами или локалями |
| да | Объекты каталога без отображаемого имени |
| нет | Открыть документ в редакторе Galaxy, чтобы подтвердить загрузку |
| да | Список или чтение собственных журналов редактора |
| да | Папка Maps пользователя, определённая через реестр |
| да | Скрипты в документе; помечает сгенерированный MapScript |
| да | Читать скрипт, опционально по диапазону строк |
| да | Функции, переменные, структуры, включения |
| да | Синтаксические ошибки со строкой и столбцом |
| нет | Точное текстовое изменение, отказ при нарушении разбора |
| нет | Добавить библиотеку, сначала проверяется синтаксис |
| да | Дерево триггеров с разрешёнными именами |
| да | Один элемент: тип, имя, содержимое, ссылки, исходный XML |
| да | Найти элементы триггеров по имени |
| нет | Переименовать элемент (изменяет только TriggerStrings) |
| да | Юниты, декорации и точки на карте |
| нет | Разместить юнит, декорацию или точку со следующим свободным id |
| нет | Переместить, повернуть или масштабировать размещённый объект |
| нет | Удалить размещённый объект |
| да | Регионы с их формами |
| нет | Добавить регион со следующим свободным id |
| нет | Переместить или переименовать регион |
| нет | Удалить регион |
| нет | Добавить зависимость; более поздние записи имеют приоритет в порядке загрузки |
| нет | Удалить зависимость, сопоставляя по части |
| нет | Задать однозначное поле |
| да | Описатель ландшафта и заголовки двоичных компонентов |
| нет | Клонировать юнит с именем, характеристиками и собственным оружием |
| нет | Изменить урон одного юнита, не затрагивая другие юниты, разделяющие его |
| нет | Дать одному владельцу собственную копию общего объекта |
| да | Затронет ли изменение кого-то помимо одного владельца? |
| да | Все проверки этой сборки по категориям, с указанием непроверенных |
| нет | Записать подготовленный документ с резервной копией и предварительной проверкой |
| да | Объединённый diff относительно источника или снимка |
| да | История изменений со снимком перед каждым |
| нет | Отменить последнее изменение |
| нет | Зафиксировать заведомо рабочее состояние |
| да | Снимки, хранящиеся для рабочей области |
| нет | Откатить дерево подготовки к снимку |
| да | Постраничный список дерева подготовки |
| да | Прочитать один подготовленный файл (текст или base64 для двоичного) |
| да | Поиск литеральной подстроки по подготовленным текстовым файлам |
| нет | Удалить копию подготовки; источник не затрагивается |
Related MCP server: loenn-mcp
Модель безопасности
Это программа, которая редактирует ваши карты по указаниям языковой модели, поэтому настройки по умолчанию консервативны:
Ваш источник никогда не изменяется.
sc2_open_documentкопирует документ в служебный каталог подготовки на сервере. Все изменения попадают туда.sc2_commit_document— единственный способ что-либо оттуда вывести, и он отказывается по трём независимым причинам — ошибки проверки, изменение источника под вами и занятый целевой файл — каждую из которых нужно отдельно обойти.Пути находятся в белом списке. Ничего за пределами
allowedRootsнельзя прочитать или записать. Пути сначала канонизируются, поэтому симлинки нельзя использовать для обхода.Ничто не запускает оболочку. Внешние программы запускаются с массивами аргументов, таймаутом и урезанным окружением. Инструмента «выполнить эту команду» не существует.
Не реализовано означает не реализовано. Флаг возможности равен
trueтолько тогда, когда код существует и его серверная часть присутствует на этой машине. Сервер предпочтёт сообщить, что не может что-то сделать, чем гадать.Общие объекты никогда не изменяются случайно. Двадцать юнитов разделяют одно оружие. Просьба изменить «урон этого юнита» клонирует цепочку, перенастраивает только этот юнит и точно сообщает, что скопировано — если вы явно не попросите изменить общий оригинал.
Правки без потерь, предварительно просматриваемые и обратимые. XML-изменения вставляются в точные диапазоны байтов, поэтому всё за пределами правки — комментарии, порядок атрибутов, окончания строк CRLF, наличие завершающего перевода строки — остаётся идентичным. Каждая мутация сначала делает снимок, поддерживает
dry_run, создаёт объединённый diff, полностью откатывается при сбое любой части и может быть отменена после.
Требования
Node.js 22 или новее (разрабатывалось на 26)
pnpm 10
Windows для всего, что связано со StarCraft II. Ядро кроссплатформенное; интеграция с редактором — нет.
Начало работы
pnpm installpnpm run verifyverify запускает линтер, проверку типов, сборку и полный набор тестов — включая интеграционный тест, который запускает собранный сервер как реальный дочерний процесс и общается с ним по MCP через stdio.
Для чтения и записи упакованных архивов .SC2Map вам также понадобится вспомогательная программа sc2mpq, которая собирается, а не поставляется, — это нативный бинарник, а включённый в репозиторий содержал бы пути с машины сборки. Загрузите закреплённую версию StormLib и скомпилируйте её:
pwsh scripts/bootstrap.ps1 -Only StormLibpwsh scripts/build-native.ps1Для этого нужны CMake, набор инструментов MSVC и Windows SDK; см. docs/native-helper.md, где объясняется, что выходит из строя без них. Всё, кроме поддержки упакованных архивов, отлично работает, если пропустить этот шаг — capabilities.mpq просто сообщает false.
Создайте файл конфигурации (см. docs/configuration.md):
node apps/sc2-mcp-server/dist/main.js doctordoctor выводит разрешённую конфигурацию, обнаруженную установку StarCraft II и матрицу возможностей. Он завершается с ненулевым кодом, когда сервер не смог бы сделать ничего полезного, например, если не настроено ни одного разрешённого корня.
Подключение MCP-клиента
Сервер общается по MCP через stdio. Укажите вашему клиенту на собранную точку входа:
{
"mcpServers": {
"sc2": {
"command": "node",
"args": ["C:\\path\\to\\SC2EditorMCP\\apps\\sc2-mcp-server\\dist\\main.js"],
"env": {
"SC2MCP_ALLOWED_ROOTS": "C:\\Users\\me\\OneDrive\\Documents\\StarCraft II\\Maps"
}
}
}
}Структура репозитория
apps/sc2-mcp-server/ MCP protocol layer: tools, schemas, error translation, stdio entry
packages/sc2-core/ Domain layer: config, path guard, workspace staging, MPQ adapter
packages/sc2-test-utils/ Test fixtures and temp-directory helpers
native/sc2mpq/ C++ MPQ sidecar (StormLib), built separately
docs/ capabilities.md, sc2-formats.md, native-helper.md, galaxy.md
docs/adr/ Architecture decision records
vendor/PINS.json Pinned upstream sources (checkouts are gitignored)
scripts/ bootstrap.ps1 (fetch pins), build-native.ps1 (build the sidecar)
tests/ Cross-package integration testsПравило слоёв (PLAN.md §4): обработчики инструментов проверяют входные данные, вызывают доменный сервис и преобразуют результат. Разбор SC2 никогда не живёт в обработчике инструмента.
Лицензия и содержимое
MIT — см. LICENSE. Уведомления о товарных знаках и сторонних лиц находятся в NOTICE.md; этот проект не связан с Blizzard Entertainment и не одобрен ею.
В этот репозиторий не включены и не будут включены активы Blizzard, извлечённые игровые данные или защищённые авторским правом карты. Тестовые фикстуры — это заполнители, созданные проектом; они полезны для проверки механизмов подготовки и транзакций, но бесполезны для проверки парсеров форматов, которые должны сверяться с реальным выводом редактора.
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
2,000+ MCP servers read at source level. Know what one does before you connect. Free, no key.
MCP registry & directory: search, find & install 31k+ MCP servers & tools. Catalog and marketplace.
Create, inspect, validate, and save editable 3D building scenes with Pascal's hosted MCP server.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceMCP server for reading World of Warcraft client files via CASC storage, enabling file discovery and content retrieval.1-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI agents to read, edit, analyze, procedurally generate, and preview Celeste .bin map files without the Lönn editor.2MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for Windows process memory inspection/editing and crash dump analysis, enabling live memory scanning, patching, pointer resolution, disassembly, and offline dump examination via structured tool calls.MIT
- AlicenseNot gradedqualityCmaintenanceLocal MCP server for interacting with Umbrella Lua scripts and match state, enabling runtime status, script management, and game data inspection.2MIT