Skip to main content
Glama

SC2 Map Editor MCP

Ein MCP-Server, der es einem Coding-Agenten ermöglicht, StarCraft-II-Karten und Mods zu inspizieren und zu bearbeiten, indem er deren Dateiinhalte direkt manipuliert, anstatt die Galaxy-Editor-Benutzeroberfläche zu steuern.

Status: Vorabversion. Der größte Teil von PLAN.md ist implementiert, wobei die Lücken explizit angegeben statt beschönigt werden. Lesen Sie Aktuelle Funktionen oder fragen Sie einen laufenden Server über sc2_get_server_info – das ist die maßgebliche Antwort für einen bestimmten Build und Rechner.

Aktuelle Funktionen

Der Server meldet dies selbst über sc2_get_server_info – das ist die maßgebliche Antwort für einen laufenden Build. Derzeit:

Subsystem

Lesen

Schreiben

Hinweise

Workspace-Staging

Nur entpackte Dokumentverzeichnisse

Komponentenbestand

⚠️

ComponentList ist schreibgeschützt; DocumentInfo-Felder und die Abhängigkeitskette sind beschreibbar

GameData-Kataloge

Suchen, inspizieren, Vererbung auflösen, Referenzen finden, patchen/klonen/erstellen/löschen. Nur eigenes Dokument — Abhängigkeiten werden nicht geladen

MPQ-Archive (.SC2Map, .SC2Mod)

Byteidentische Roundtrips bei echten Ladder-Karten, und hier gepackte Karten öffnen sich im Editor — siehe docs/native-helper.md

Galaxy-Skripte

Parsen, Symbole, Syntaxdiagnose, sicheres Text-Patchen. Keine Typprüfung — benötigt die Natives des Spiels. Erfordert den Build des mitgelieferten Toolkits

Trigger

⚠️

Struktur, Namen, Suche. Nur Umbenennen — strukturelles Bearbeiten ist bewusst nicht implementiert

Lokalisierung

Texttabellen, die BOM und CRLF exakt beibehalten

SC2Layout

Phase 10

Platzierte Objekte / Regionen

Beide sind XML, nicht binär. Platzieren, Verschieben, Löschen — mit Roundtrip durch den Editor. Geländehöhe wird nicht berücksichtigt

Gelände

⚠️

Nur Deskriptor (Tileset, Abmessungen, Klippensets). Massendaten werden nach Magie/Version/Größe gemeldet, nie dekodiert

Editor-Start

n/a

Öffnet ein Dokument im Galaxy Editor; liest dessen Logs. Automatisches Starten von Testkarten ist nicht vorgesehen — kein zuverlässiger Mechanismus verifiziert

Warum die Lücken genau dort sind und was „⚠️“ in jeder Zeile bedeutet: docs/capabilities.md.

Gepackte Archive funktionieren end-to-end: Eine vorhandene Karte, die aus einer .SC2Map geöffnet, hier erweitert, hier neu gepackt und im Galaxy Editor geöffnet wird, lädt als echtes Dokument, wobei der Editor die hinzugefügten Kataloge anhand des Namens auflöst. Für den Bau des Helfers werden eine C++-Toolchain und das Windows SDK benötigt (scripts/build-native.ps1); ohne diese meldet capabilities.mpq false und gepackte Archive werden mit einer klaren Fehlermeldung abgelehnt.

Abhängigkeiten: Lokale werden geladen, Blizzards nicht. Ein .SC2Mod-Verzeichnis neben Ihrer Karte wird indexiert, und dessen Objekte werden für Vererbung und Referenzen sichtbar – schreibgeschützt, da dieser Server niemals Abhängigkeitsarchive ändert. Blizzards Standard-Mods befinden sich im CASC-Speicher der Installation, den dieser Build nicht lesen kann; sie werden als in-casc gemeldet, statt als fehlend, denn das ist etwas ganz anderes, als wenn Ihre Karte defekt ist.

Tools

Werkzeug

Nur lesen

Zweck

sc2_get_server_info

ja

Versionen, Konfiguration, Fähigkeitsmatrix, Einschränkungen

sc2_detect_installations

ja

StarCraft II finden, ohne die Festplatte zu durchsuchen

sc2_open_document

nein

Ein Dokument stagen und eine workspace_id erhalten

sc2_get_document_summary

ja

Art, Anzahl, Komponenten, Abhängigkeiten, Diagnosen, bekannte Lücken

sc2_list_workspaces

ja

Eine workspace_id nach einer Wiederverbindung wiederherstellen

sc2_list_components

ja

ComponentList.SC2Components parsen; jeden Eintrag zu echten Dateien auflösen

sc2_get_document_info

ja

Name, Autor, Mod-Typ, Symbol, Screenshots, Abhängigkeiten

sc2_get_dependencies

ja

Abhängigkeitskette in Auflösungsreihenfolge

sc2_list_component_types

ja

Referenztabelle der Komponententyp-Codes

sc2_list_catalog_domains

ja

Vorhandene Katalog-Domänen mit Anzahl der Einträge

sc2_search_catalog

ja

Katalogobjekte anhand der ID finden, nach Domäne gefiltert

sc2_get_catalog_object

ja

Die eigene Deklaration eines Objekts plus XML im Originalwortlaut

sc2_resolve_catalog_object

ja

Effektive Werte mit Vererbung und woher jeder stammt

sc2_find_catalog_references

ja

Was auf ein Objekt verweist und ob es geteilt wird

sc2_patch_catalog_object

nein

Feldweise Änderungen über Pfad, mit Warnungen bei geteilten Objekten

sc2_clone_catalog_object

nein

Ein Objekt unter neuer ID bytegenau kopieren

sc2_create_catalog_object

nein

Ein neues Objekt hinzufügen, idealerweise mit einem Elternobjekt

sc2_delete_catalog_object

nein

Ein Objekt entfernen; verweigert, solange darauf verwiesen wird

sc2_list_locales

ja

Vorhandene Locales und Texttabellen

sc2_search_text_keys

ja

Eine Texttabelle nach Schlüssel oder Wert durchsuchen

sc2_get_text_value

ja

Eine lokalisierte Zeichenkette lesen

sc2_set_text_value

nein

Lokalisierte Zeichenketten erstellen oder aktualisieren

sc2_delete_text_key

nein

Lokalisierte Zeichenketten entfernen

sc2_copy_text_key

nein

Zeichenketten zwischen Schlüsseln oder Locales kopieren

sc2_find_missing_localization

ja

Katalogobjekte ohne Anzeigenamen

sc2_launch_editor

nein

Ein Dokument im Galaxy Editor öffnen, um zu bestätigen, dass es lädt

sc2_get_editor_logs

ja

Die eigenen Protokolle des Editors auflisten oder lesen

sc2_get_user_maps

ja

Den Maps-Ordner des Benutzers, über die Registry aufgelöst

sc2_list_galaxy_files

ja

Skripte im Dokument; markiert das generierte MapScript

sc2_get_galaxy_file

ja

Ein Skript lesen, optional nach Zeilenbereich

sc2_get_galaxy_symbols

ja

Funktionen, Variablen, Strukturen, Includes

sc2_get_galaxy_diagnostics

ja

Syntaxfehler mit Zeile und Spalte

sc2_apply_galaxy_patch

nein

Exakte-Text-Bearbeitung, verweigert, wenn die Syntaxanalyse dadurch bricht

sc2_create_galaxy_file

nein

Eine Bibliothek hinzufügen, zuvor syntaxgeprüft

sc2_list_triggers

ja

Der Trigger-Baum mit aufgelösten Namen

sc2_get_trigger

ja

Ein Element: Typ, Name, Inhalt, Verweise, rohes XML

sc2_search_triggers

ja

Trigger-Elemente anhand des Namens finden

sc2_rename_trigger

nein

Ein Element umbenennen (ändert nur TriggerStrings)

sc2_list_placed_objects

ja

Einheiten, Doodads und Punkte auf der Karte

sc2_place_object

nein

Eine Einheit, ein Doodad oder einen Punkt mit der nächsten freien ID platzieren

sc2_update_object

nein

Ein platziertes Objekt verschieben, drehen oder skalieren

sc2_delete_object

nein

Ein platziertes Objekt entfernen

sc2_list_regions

ja

Regionen mit ihren Formen

sc2_create_region

nein

Eine Region mit der nächsten freien ID hinzufügen

sc2_update_region

nein

Eine Region verschieben oder umbenennen

sc2_delete_region

nein

Eine Region entfernen

sc2_add_dependency

nein

Eine Abhängigkeit anhängen; spätere Einträge gewinnen in der Ladereihenfolge

sc2_remove_dependency

nein

Eine Abhängigkeit entfernen, abgeglichen über die file:-Hälfte

sc2_set_document_info

nein

Ein einwertiges DocInfo-Feld wie ModType setzen

sc2_get_terrain_summary

ja

Terrain-Deskriptor plus binäre Komponenten-Header

sc2_create_unit_from_template

nein

Eine Einheit mit Namen, Werten und eigener Waffe klonen

sc2_set_unit_weapon_damage

nein

Den Schaden einer Einheit ändern, ohne Einheiten zu berühren, die ihn teilen

sc2_isolate_shared_object

nein

Einem Besitzer eine eigene Kopie von etwas Geteiltem geben

sc2_check_shared_object

ja

Würde eine Bearbeitung über einen Besitzer hinausreichen?

sc2_validate_document

ja

Jede Prüfung, die dieser Build hat, pro Kategorie, mit Benennung der ungeprüften

sc2_commit_document

nein

Das gestagete Dokument mit Backup und Preflight schreiben

sc2_diff_workspace

ja

Unified-Diff gegen die Quelle oder gegen einen Snapshot

sc2_get_changes

ja

Änderungshistorie mit dem jeweils zuvor aufgenommenen Snapshot

sc2_revert_change

nein

Die letzte Änderung rückgängig machen

sc2_create_snapshot

nein

Einen bekannten guten Zustand fixieren

sc2_list_snapshots

ja

Für einen Arbeitsbereich gehaltene Snapshots

sc2_restore_snapshot

nein

Den Staging-Baum auf einen Snapshot zurücksetzen

sc2_list_files

ja

Paginierte Auflistung des Staging-Baums

sc2_read_file

ja

Eine gestagete Datei lesen (Text oder Base64 für Binärdateien)

sc2_search_files

ja

Wörtliche Substring-Suche über gestagete Textdateien

sc2_discard_workspace

nein

Die Staging-Kopie löschen; Quelle unberührt

Das Sicherheitsmodell

Dies ist ein Programm, das Ihre Karten auf Anweisung eines Sprachmodells bearbeitet. Daher sind die Standardeinstellungen konservativ:

  • Ihre Quelle wird nie verändert. sc2_open_document kopiert das Dokument in ein vom Server verwaltetes Staging-Verzeichnis. Jede Bearbeitung landet dort. sc2_commit_document ist der einzige Weg, auf dem etwas es verlässt, und es verweigert dies aus drei unabhängigen Gründen – Validierungsfehlern, einer Quelle, die sich unter Ihnen verändert hat, und einem belegten Ziel –, die jeweils einzeln freigegeben werden müssen.

  • Pfade sind auf eine Zulassungsliste beschränkt. Außerhalb von allowedRoots kann nichts gelesen oder geschrieben werden. Pfade werden zuerst kanonisiert, sodass Symlinks nicht zur Flucht genutzt werden können.

  • Es wird keine Shell ausgeführt. Externe Programme werden mit Argumentarrays, einem Timeout und einer bereinigten Umgebung gestartet. Es gibt kein Werkzeug „Befehl ausführen“.

  • Nicht implementiert bedeutet nicht implementiert. Ein Fähigkeits-Flag ist nur dann true, wenn der Code existiert und sein Backend auf diesem Rechner vorhanden ist. Der Server teilt Ihnen lieber mit, dass er etwas nicht kann, als zu raten.

  • Geteilte Objekte werden niemals versehentlich bearbeitet. Zwanzig Einheiten teilen sich eine Waffe. Die Bitte, „den Schaden dieser Einheit“ zu ändern, klont die Kette, verdrahtet nur diese Einheit neu und teilt Ihnen genau mit, was kopiert wurde – es sei denn, Sie bitten ausdrücklich darum, das geteilte Original zu ändern.

  • Bearbeitungen sind verlustfrei, in der Vorschau prüfbar und umkehrbar. XML-Änderungen fügen exakte Bytebereiche ein, sodass alles außerhalb der Bearbeitung – Kommentare, Attributreihenfolge, CRLF-Zeilenenden, ob die Datei mit einem Zeilenumbruch endet – identisch herauskommt. Jede Mutation erstellt zuerst einen Snapshot, unterstützt dry_run, erzeugt ein Unified-Diff, rollt vollständig zurück, wenn ein Teil fehlschlägt, und kann anschließend rückgängig gemacht werden.

Voraussetzungen

  • Node.js 22 oder neuer (entwickelt gegen 26)

  • pnpm 10

  • Windows für alles, was StarCraft II selbst betrifft. Der Kern ist plattformübergreifend; die Editor-Integration nicht.

Erste Schritte

pnpm install
pnpm run verify

verify führt Lint, Typprüfung, Build und die vollständige Testsuite aus – einschließlich eines Integrationstests, der den gebauten Server als echten Kindprozess startet und über stdio per MCP mit ihm spricht.

Zum Lesen oder Schreiben gepackter .SC2Map-Archive benötigen Sie außerdem den sc2mpq-Sidecar, der gebaut und nicht mitgeliefert wird – er ist eine native Binärdatei, und eine eingecheckte würde die Pfade der Build-Maschine enthalten. Holen Sie das festgelegte StormLib und kompilieren Sie es:

pwsh scripts/bootstrap.ps1 -Only StormLib
pwsh scripts/build-native.ps1

Dies erfordert CMake, das MSVC-Toolset und das Windows SDK; siehe docs/native-helper.md, das erklärt, was ohne sie fehlschlägt. Alles außer der Unterstützung gepackter Archive funktioniert einwandfrei, wenn Sie diesen Schritt überspringen – capabilities.mpq meldet dann schlicht false.

Erstellen Sie eine Konfigurationsdatei (siehe docs/configuration.md):

node apps/sc2-mcp-server/dist/main.js doctor

doctor gibt die aufgelöste Konfiguration, die erkannte StarCraft-II-Installation und die Fähigkeitsmatrix aus. Es beendet sich mit einem Nicht-Null-Status, wenn der Server nichts Nützliches tun könnte – zum Beispiel, wenn keine zulässigen Wurzelverzeichnisse konfiguriert sind.

Verbinden eines MCP-Clients

Der Server spricht MCP über stdio. Richten Sie Ihren Client auf den gebauten Einstiegspunkt aus:

{
  "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"
      }
    }
  }
}

Repository-Struktur

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

Die Schichtungsregel (PLAN.md §4): Tool-Handler validieren Eingaben, rufen einen Domänendienst auf und übersetzen das Ergebnis. SC2-Parsing lebt niemals in einem Tool-Handler.

Lizenz und Inhalte

MIT – siehe LICENSE. Marken- und Drittanbieterhinweise finden Sie in NOTICE.md; dieses Projekt ist nicht mit Blizzard Entertainment verbunden oder von ihm unterstützt.

In diesem Repository sind keine Blizzard-Assets, extrahierten Spieldaten oder urheberrechtlich geschützten Karteninhalte enthalten, und es werden auch keine aufgenommen. Test-Fixtures sind projekteigene Platzhalter – nützlich, um die Staging- und Transaktionsmechanik zu üben, unbrauchbar zur Validierung von Formatparsern, die anhand echter Editor-Ausgaben geprüft werden müssen.

-
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