SC2 Map Editor MCP
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 | ✅ | ⚠️ |
|
GameData-Kataloge | ✅ | ✅ | Suchen, inspizieren, Vererbung auflösen, Referenzen finden, patchen/klonen/erstellen/löschen. Nur eigenes Dokument — Abhängigkeiten werden nicht geladen |
MPQ-Archive ( | ✅ | ✅ | 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 |
| ja | Versionen, Konfiguration, Fähigkeitsmatrix, Einschränkungen |
| ja | StarCraft II finden, ohne die Festplatte zu durchsuchen |
| nein | Ein Dokument stagen und eine |
| ja | Art, Anzahl, Komponenten, Abhängigkeiten, Diagnosen, bekannte Lücken |
| ja | Eine |
| ja |
|
| ja | Name, Autor, Mod-Typ, Symbol, Screenshots, Abhängigkeiten |
| ja | Abhängigkeitskette in Auflösungsreihenfolge |
| ja | Referenztabelle der Komponententyp-Codes |
| ja | Vorhandene Katalog-Domänen mit Anzahl der Einträge |
| ja | Katalogobjekte anhand der ID finden, nach Domäne gefiltert |
| ja | Die eigene Deklaration eines Objekts plus XML im Originalwortlaut |
| ja | Effektive Werte mit Vererbung und woher jeder stammt |
| ja | Was auf ein Objekt verweist und ob es geteilt wird |
| nein | Feldweise Änderungen über Pfad, mit Warnungen bei geteilten Objekten |
| nein | Ein Objekt unter neuer ID bytegenau kopieren |
| nein | Ein neues Objekt hinzufügen, idealerweise mit einem Elternobjekt |
| nein | Ein Objekt entfernen; verweigert, solange darauf verwiesen wird |
| ja | Vorhandene Locales und Texttabellen |
| ja | Eine Texttabelle nach Schlüssel oder Wert durchsuchen |
| ja | Eine lokalisierte Zeichenkette lesen |
| nein | Lokalisierte Zeichenketten erstellen oder aktualisieren |
| nein | Lokalisierte Zeichenketten entfernen |
| nein | Zeichenketten zwischen Schlüsseln oder Locales kopieren |
| ja | Katalogobjekte ohne Anzeigenamen |
| nein | Ein Dokument im Galaxy Editor öffnen, um zu bestätigen, dass es lädt |
| ja | Die eigenen Protokolle des Editors auflisten oder lesen |
| ja | Den Maps-Ordner des Benutzers, über die Registry aufgelöst |
| ja | Skripte im Dokument; markiert das generierte MapScript |
| ja | Ein Skript lesen, optional nach Zeilenbereich |
| ja | Funktionen, Variablen, Strukturen, Includes |
| ja | Syntaxfehler mit Zeile und Spalte |
| nein | Exakte-Text-Bearbeitung, verweigert, wenn die Syntaxanalyse dadurch bricht |
| nein | Eine Bibliothek hinzufügen, zuvor syntaxgeprüft |
| ja | Der Trigger-Baum mit aufgelösten Namen |
| ja | Ein Element: Typ, Name, Inhalt, Verweise, rohes XML |
| ja | Trigger-Elemente anhand des Namens finden |
| nein | Ein Element umbenennen (ändert nur TriggerStrings) |
| ja | Einheiten, Doodads und Punkte auf der Karte |
| nein | Eine Einheit, ein Doodad oder einen Punkt mit der nächsten freien ID platzieren |
| nein | Ein platziertes Objekt verschieben, drehen oder skalieren |
| nein | Ein platziertes Objekt entfernen |
| ja | Regionen mit ihren Formen |
| nein | Eine Region mit der nächsten freien ID hinzufügen |
| nein | Eine Region verschieben oder umbenennen |
| nein | Eine Region entfernen |
| nein | Eine Abhängigkeit anhängen; spätere Einträge gewinnen in der Ladereihenfolge |
| nein | Eine Abhängigkeit entfernen, abgeglichen über die |
| nein | Ein einwertiges |
| ja | Terrain-Deskriptor plus binäre Komponenten-Header |
| nein | Eine Einheit mit Namen, Werten und eigener Waffe klonen |
| nein | Den Schaden einer Einheit ändern, ohne Einheiten zu berühren, die ihn teilen |
| nein | Einem Besitzer eine eigene Kopie von etwas Geteiltem geben |
| ja | Würde eine Bearbeitung über einen Besitzer hinausreichen? |
| ja | Jede Prüfung, die dieser Build hat, pro Kategorie, mit Benennung der ungeprüften |
| nein | Das gestagete Dokument mit Backup und Preflight schreiben |
| ja | Unified-Diff gegen die Quelle oder gegen einen Snapshot |
| ja | Änderungshistorie mit dem jeweils zuvor aufgenommenen Snapshot |
| nein | Die letzte Änderung rückgängig machen |
| nein | Einen bekannten guten Zustand fixieren |
| ja | Für einen Arbeitsbereich gehaltene Snapshots |
| nein | Den Staging-Baum auf einen Snapshot zurücksetzen |
| ja | Paginierte Auflistung des Staging-Baums |
| ja | Eine gestagete Datei lesen (Text oder Base64 für Binärdateien) |
| ja | Wörtliche Substring-Suche über gestagete Textdateien |
| 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_documentkopiert das Dokument in ein vom Server verwaltetes Staging-Verzeichnis. Jede Bearbeitung landet dort.sc2_commit_documentist 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
allowedRootskann 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 installpnpm run verifyverify 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 StormLibpwsh scripts/build-native.ps1Dies 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 doctordoctor 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 testsDie 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.
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