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 для двоичного) |
| да | Поиск литеральной подстроки по подготовленным текстовым файлам |
| нет | Удалить копию подготовки; источник не затрагивается |
Модель безопасности
Это программа, которая редактирует ваши карты по указаниям языковой модели, поэтому настройки по умолчанию консервативны:
Ваш источник никогда не изменяется.
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 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 Connectors
A MCP server built for developers enabling Git based project management with project and personal…
An MCP server for deep research or task groups
MCP Server for JFrog, providing tools for development and artifact management.
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/erivgout/sc2-map-editor-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server