Skip to main content
Glama

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

⚠️

ComponentList es de solo lectura; los campos de DocumentInfo y la cadena de dependencias son modificables

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 (.SC2Map, .SC2Mod)

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

sc2_get_server_info

Versiones, configuración, matriz de capacidades, limitaciones

sc2_detect_installations

Localizar StarCraft II sin escanear el disco

sc2_open_document

no

Preparar un documento, obtener un workspace_id

sc2_get_document_summary

Tipo, recuentos, componentes, dependencias, diagnósticos, brechas conocidas

sc2_list_workspaces

Recuperar un workspace_id después de una reconexión

sc2_list_components

Analizar ComponentList.SC2Components; resolver cada entrada a archivos reales

sc2_get_document_info

Nombre, autor, tipo de mod, icono, capturas de pantalla, dependencias

sc2_get_dependencies

Cadena de dependencias en orden de resolución

sc2_list_component_types

Tabla de referencia de códigos de tipo de componente

sc2_list_catalog_domains

Dominios del catálogo presentes, con recuentos de entradas

sc2_search_catalog

Buscar objetos del catálogo por id, filtrados por dominio

sc2_get_catalog_object

La declaración propia de un objeto, más el XML literal

sc2_resolve_catalog_object

Valores efectivos con herencia, y de dónde provino cada uno

sc2_find_catalog_references

Qué hace referencia a un objeto, y si es compartido

sc2_patch_catalog_object

no

Ediciones a nivel de campo por ruta, con advertencias de objetos compartidos

sc2_clone_catalog_object

no

Copiar un objeto bajo un nuevo id, byte a byte

sc2_create_catalog_object

no

Añadir un objeto nuevo, idealmente con un padre

sc2_delete_catalog_object

no

Eliminar un objeto; se niega mientras esté referenciado

sc2_list_locales

Locales y tablas de texto presentes

sc2_search_text_keys

Buscar en una tabla de texto por clave o valor

sc2_get_text_value

Leer una cadena localizada

sc2_set_text_value

no

Crear o actualizar cadenas localizadas

sc2_delete_text_key

no

Eliminar cadenas localizadas

sc2_copy_text_key

no

Copiar cadenas entre claves o locales

sc2_find_missing_localization

Objetos del catálogo sin nombre para mostrar

sc2_launch_editor

no

Abrir un documento en el Galaxy Editor para confirmar que carga

sc2_get_editor_logs

Listar o leer los registros del propio editor

sc2_get_user_maps

La carpeta Maps del usuario, resuelta a través del registro

sc2_list_galaxy_files

Scripts en el documento; marca el MapScript generado

sc2_get_galaxy_file

Leer un script, opcionalmente por rango de líneas

sc2_get_galaxy_symbols

Funciones, variables, structs, includes

sc2_get_galaxy_diagnostics

Errores de sintaxis con línea y columna

sc2_apply_galaxy_patch

no

Edición de texto exacto, rechazada si rompe el parseo

sc2_create_galaxy_file

no

Añadir una librería, comprobada su sintaxis primero

sc2_list_triggers

El árbol de disparadores con nombres resueltos

sc2_get_trigger

Un elemento: tipo, nombre, contenido, referenciadores, XML crudo

sc2_search_triggers

Buscar elementos de disparadores por nombre

sc2_rename_trigger

no

Renombrar un elemento (edita solo TriggerStrings)

sc2_list_placed_objects

Unidades, doodads y puntos en el mapa

sc2_place_object

no

Colocar una unidad, doodad o punto con el siguiente id libre

sc2_update_object

no

Mover, rotar o reescalar un objeto colocado

sc2_delete_object

no

Eliminar un objeto colocado

sc2_list_regions

Regiones con sus formas

sc2_create_region

no

Añadir una región con el siguiente id libre

sc2_update_region

no

Mover o renombrar una región

sc2_delete_region

no

Eliminar una región

sc2_add_dependency

no

Añadir una dependencia; las entradas posteriores ganan en el orden de carga

sc2_remove_dependency

no

Eliminar una dependencia, coincidiendo con su mitad file:

sc2_set_document_info

no

Establecer un campo DocInfo de un solo valor, como ModType

sc2_get_terrain_summary

Descriptor de terreno más cabeceras de componentes binarios

sc2_create_unit_from_template

no

Clonar una unidad con nombre, estadísticas y su propia arma

sc2_set_unit_weapon_damage

no

Cambiar el daño de una unidad sin tocar unidades que lo comparten

sc2_isolate_shared_object

no

Dar a un propietario su propia copia de algo compartido

sc2_check_shared_object

¿Llegaría esta edición más allá de un solo propietario?

sc2_validate_document

Todas las comprobaciones que tiene esta versión, por categoría, con las no comprobadas nombradas

sc2_commit_document

no

Escribir el documento preparado, con copia de seguridad y verificación previa

sc2_diff_workspace

Diff unificado contra la fuente, o contra una instantánea

sc2_get_changes

Historial de cambios, con la instantánea tomada antes de cada uno

sc2_revert_change

no

Deshacer el cambio más reciente

sc2_create_snapshot

no

Fijar un estado conocido como bueno

sc2_list_snapshots

Instantáneas mantenidas para un espacio de trabajo

sc2_restore_snapshot

no

Revertir el árbol de preparación a una instantánea

sc2_list_files

Listado paginado del árbol preparado

sc2_read_file

Leer un archivo preparado (texto, o base64 para binarios)

sc2_search_files

Búsqueda literal de subcadenas en archivos de texto preparados

sc2_discard_workspace

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_document copia el documento a un directorio de preparación propiedad del servidor. Cada edición se aplica allí. sc2_commit_document es 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 allowedRoots puede 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 true cuando 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 install
pnpm run verify

verify 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 StormLib
pwsh scripts/build-native.ps1

Esto 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 doctor

doctor 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 tests

La 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.

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all MCP Connectors

Latest Blog Posts

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