SC2 Map Editor MCP
SC2 Map Editor MCP
Un servidor MCP que permite a un agente de codificación inspeccionar y editar mapas y mods de StarCraft II manipulando directamente el contenido de sus archivos, en lugar de manejar la interfaz del Galaxy Editor.
Estado: pre-lanzamiento. La mayor parte de PLAN.md está implementada, con las carencias indicadas explícitamente en lugar de disimuladas. Lee Capacidades actuales o pregunta a un servidor en ejecución mediante sc2_get_server_info — esa es la respuesta autoritativa para una compilación y máquina concretas.
Capacidades actuales
El propio servidor informa de esto mediante sc2_get_server_info — esa es la respuesta autoritativa para una compilación en ejecución. Por ahora:
Subsistema | Lectura | Escritura | Notas |
Preparación del espacio de trabajo | ✅ | ✅ | Solo directorios de documentos desempaquetados |
Inventario de componentes | ✅ | ⚠️ |
|
Catálogos de GameData | ✅ | ✅ | Buscar, inspeccionar, resolver herencias, encontrar referencias, parchear/clonar/crear/eliminar. Solo el documento propio — las dependencias no se cargan |
Archivos MPQ ( | ✅ | ✅ | Viajes de ida y vuelta byte-idénticos en mapas de ladder reales, y los mapas empaquetados aquí se abren en el editor — ver docs/native-helper.md |
Scripts de Galaxy | ✅ | ✅ | Analizar, símbolos, diagnósticos de sintaxis, parcheo seguro de texto. Sin comprobación de tipos — necesita los nativos del juego. Requiere que el toolkit incluido esté compilado |
Triggers | ✅ | ⚠️ | Estructura, nombres, búsqueda. Solo renombrado — la edición estructural no está implementada deliberadamente |
Localización | ✅ | ✅ | Tablas de texto, preservando BOM y CRLF exactamente |
SC2Layout | ❌ | ❌ | Fase 10 |
Objetos colocados / regiones | ✅ | ✅ | Ambos son XML, no binarios. Colocar, mover, eliminar — con ida y vuelta a través del editor. La altura del terreno no se consulta |
Terreno | ⚠️ | ❌ | Solo descriptor (conjunto de tiles, dimensiones, conjuntos de acantilados). Los datos masivos se informan por magic/versión/tamaño, nunca se decodifican |
Inicio del editor | ✅ | n/a | Abre un documento en el Galaxy Editor; lee sus registros. No se proporciona el lanzamiento automático de mapas de prueba — no se ha verificado ningún mecanismo fiable |
Por qué las carencias están donde están, y qué significa "⚠️" en cada fila: docs/capabilities.md.
Los archivos empaquetados funcionan de principio a fin: un mapa existente abierto desde un .SC2Map, ampliado aquí, reempaquetado aquí y abierto en el Galaxy Editor se carga como un documento real, resolviendo el editor los catálogos añadidos por nombre. Compilar el helper requiere un toolchain de C++ y el Windows SDK (scripts/build-native.ps1); sin él, capabilities.mpq informa false y los archivos empaquetados se rechazan con un error claro.
Dependencias: las locales se cargan, las de Blizzard no. Un directorio .SC2Mod junto a tu mapa se indexa, y sus objetos se vuelven visibles para herencia y referencias - de solo lectura, ya que este servidor nunca modifica archivos de dependencias. Los mods estándar de Blizzard se encuentran dentro del almacén CASC de la instalación, que esta compilación no puede leer; se informan como in-casc en lugar de como inexistentes, porque eso es algo muy diferente de que tu mapa esté roto.
Herramientas
Herramienta | Solo lectura | Propósito |
| sí | Versiones, configuración, matriz de capacidades, limitaciones |
| sí | Localizar StarCraft II sin escanear el disco |
| no | Preparar un documento, obtener un |
| sí | Tipo, recuentos, componentes, dependencias, diagnósticos, brechas conocidas |
| sí | Recuperar un |
| sí | Analizar |
| sí | Nombre, autor, tipo de mod, icono, capturas de pantalla, dependencias |
| sí | Cadena de dependencias en orden de resolución |
| sí | Tabla de referencia de códigos de tipo de componente |
| sí | Dominios del catálogo presentes, con recuentos de entradas |
| sí | Buscar objetos del catálogo por id, filtrados por dominio |
| sí | La declaración propia de un objeto, más el XML literal |
| sí | Valores efectivos con herencia, y de dónde provino cada uno |
| sí | Qué hace referencia a un objeto, y si es compartido |
| no | Ediciones a nivel de campo por ruta, con advertencias de objetos compartidos |
| no | Copiar un objeto bajo un nuevo id, byte a byte |
| no | Añadir un objeto nuevo, idealmente con un padre |
| no | Eliminar un objeto; se niega mientras esté referenciado |
| sí | Locales y tablas de texto presentes |
| sí | Buscar en una tabla de texto por clave o valor |
| sí | Leer una cadena localizada |
| no | Crear o actualizar cadenas localizadas |
| no | Eliminar cadenas localizadas |
| no | Copiar cadenas entre claves o locales |
| sí | Objetos del catálogo sin nombre para mostrar |
| no | Abrir un documento en el Galaxy Editor para confirmar que carga |
| sí | Listar o leer los registros del propio editor |
| sí | La carpeta Maps del usuario, resuelta a través del registro |
| sí | Scripts en el documento; marca el MapScript generado |
| sí | Leer un script, opcionalmente por rango de líneas |
| sí | Funciones, variables, structs, includes |
| sí | Errores de sintaxis con línea y columna |
| no | Edición de texto exacto, rechazada si rompe el parseo |
| no | Añadir una librería, comprobada su sintaxis primero |
| sí | El árbol de disparadores con nombres resueltos |
| sí | Un elemento: tipo, nombre, contenido, referenciadores, XML crudo |
| sí | Buscar elementos de disparadores por nombre |
| no | Renombrar un elemento (edita solo TriggerStrings) |
| sí | Unidades, doodads y puntos en el mapa |
| no | Colocar una unidad, doodad o punto con el siguiente id libre |
| no | Mover, rotar o reescalar un objeto colocado |
| no | Eliminar un objeto colocado |
| sí | Regiones con sus formas |
| no | Añadir una región con el siguiente id libre |
| no | Mover o renombrar una región |
| no | Eliminar una región |
| no | Añadir una dependencia; las entradas posteriores ganan en el orden de carga |
| no | Eliminar una dependencia, coincidiendo con su mitad |
| no | Establecer un campo |
| sí | Descriptor de terreno más cabeceras de componentes binarios |
| no | Clonar una unidad con nombre, estadísticas y su propia arma |
| no | Cambiar el daño de una unidad sin tocar unidades que lo comparten |
| no | Dar a un propietario su propia copia de algo compartido |
| sí | ¿Llegaría esta edición más allá de un solo propietario? |
| sí | Todas las comprobaciones que tiene esta versión, por categoría, con las no comprobadas nombradas |
| no | Escribir el documento preparado, con copia de seguridad y verificación previa |
| sí | Diff unificado contra la fuente, o contra una instantánea |
| sí | Historial de cambios, con la instantánea tomada antes de cada uno |
| no | Deshacer el cambio más reciente |
| no | Fijar un estado conocido como bueno |
| sí | Instantáneas mantenidas para un espacio de trabajo |
| no | Revertir el árbol de preparación a una instantánea |
| sí | Listado paginado del árbol preparado |
| sí | Leer un archivo preparado (texto, o base64 para binarios) |
| sí | Búsqueda literal de subcadenas en archivos de texto preparados |
| no | Eliminar la copia de preparación; la fuente permanece intacta |
El modelo de seguridad
Este es un programa que edita tus mapas siguiendo las instrucciones de un modelo de lenguaje, por lo que los valores predeterminados son conservadores:
Tu fuente nunca se modifica.
sc2_open_documentcopia el documento a un directorio de preparación propiedad del servidor. Cada edición se aplica allí.sc2_commit_documentes la única forma de que algo salga de él, y se niega por tres motivos independientes — errores de validación, que la fuente haya cambiado sin que te des cuenta y un destino ocupado —, cada uno de los cuales debe ser eximido por separado.Las rutas están en una lista de permitidos. Nada fuera de
allowedRootspuede ser leído o escrito. Las rutas se canonizan primero, por lo que los enlaces simbólicos no pueden usarse para escapar.Nada ejecuta una shell. Los programas externos se lanzan con matrices de argumentos, un tiempo de espera y un entorno recortado. No existe una herramienta de "ejecutar este comando".
No implementado significa no implementado. Una marca de capacidad solo es
truecuando el código existe y su backend está presente en esta máquina. El servidor prefiere decirte que no puede hacer algo antes que adivinarlo.Los objetos compartidos nunca se editan por accidente. Veinte unidades comparten un arma. Pedir cambiar "el daño de esta unidad" clona la cadena, reconfigura solo esa unidad y te dice exactamente qué copió — a menos que pidas explícitamente modificar el original compartido.
Las ediciones no tienen pérdida, son previsualizables y reversibles. Los cambios XML insertan rangos exactos de bytes, por lo que todo lo que está fuera de la edición — comentarios, orden de atributos, finales CRLF, si el archivo termina con un salto de línea — sale idéntico. Cada mutación crea una instantánea primero, admite
dry_run, produce un diff unificado, se revierte por completo si falla cualquier parte y puede revertirse después.
Requisitos
Node.js 22 o más reciente (desarrollado contra 26)
pnpm 10
Windows, para cualquier cosa que involucre StarCraft II en sí. El núcleo es multiplataforma; la integración con el editor no lo es.
Para empezar
pnpm installpnpm run verifyverify ejecuta lint, typecheck, build y la suite completa de pruebas, incluida una prueba de integración que lanza el servidor compilado como un proceso hijo real y le habla por MCP a través de stdio.
Para leer o escribir archivos .SC2Map empaquetados, también necesitas el sidecar sc2mpq, que se compila en lugar de distribuirse: es un binario nativo, y uno incluido en el repositorio llevaría las rutas de la máquina de compilación. Obtén la versión fijada de StormLib y compílala:
pwsh scripts/bootstrap.ps1 -Only StormLibpwsh scripts/build-native.ps1Esto necesita CMake, el conjunto de herramientas MSVC y el Windows SDK; consulta docs/native-helper.md, que explica qué falla sin ellos. Todo excepto el soporte de archivos empaquetados funciona correctamente si te lo saltas: capabilities.mpq simplemente informa false.
Crea un archivo de configuración (consulta docs/configuration.md):
node apps/sc2-mcp-server/dist/main.js doctordoctor imprime la configuración resuelta, la instalación de StarCraft II detectada y la matriz de capacidades. Sale con un código distinto de cero cuando el servidor no podría hacer nada útil, por ejemplo, cuando no hay raíces permitidas configuradas.
Conexión de un cliente MCP
El servidor habla MCP a través de stdio. Apunta tu cliente al punto de entrada compilado:
{
"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"
}
}
}
}Estructura del repositorio
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 testsLa regla de capas (PLAN.md §4): los manejadores de herramientas validan la entrada, llaman a un servicio de dominio y transforman el resultado. El análisis de SC2 nunca vive en un manejador de herramientas.
Licencia y contenido
MIT — consulta LICENSE. Los avisos de marcas comerciales y de terceros están en NOTICE.md; este proyecto no está afiliado a Blizzard Entertainment ni cuenta con su respaldo.
No se incluyen activos de Blizzard, datos extraídos del juego ni contenido de mapas con derechos de autor en este repositorio, y no se incluirán. Los fixtures de prueba son marcadores de posición creados por el proyecto — útiles para ejercitar la maquinaria de preparación y transacciones, inútiles para validar los analizadores de formato, que deben comprobarse contra la salida real del editor.
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