SC2 Map Editor MCP
SC2 Map Editor MCP
一个 MCP 服务器,让编码代理通过直接操作文件内容来检查和编辑 StarCraft II 地图和 Mod,而不是驱动 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 编辑器中打开文档;读取其日志。自动测试地图启动不提供——尚无可靠机制验证 |
为什么这些差距会在这些位置,以及每一行中 "⚠️" 的含义: docs/capabilities.md。
打包归档可以端到端工作:从 .SC2Map 打开的现有地图,在这里扩展,在这里重新打包,然后在 Galaxy 编辑器中打开时会作为真实文档加载,编辑器会按名称解析新增的目录。构建辅助工具需要 C++ 工具链和 Windows SDK(scripts/build-native.ps1);没有它时,capabilities.mpq 报告 false,并且打包归档会被拒绝,并给出明确错误。
依赖项:本地依赖会加载,Blizzard 的不会。 地图旁的 .SC2Mod 目录会被索引,其中的对象对继承和引用可见——只读,因为此服务器从不修改依赖归档。Blizzard 的官方 Mod 位于安装的 CASC 存储中,此构建无法读取;它们被报告为 in-casc 而不是缺失,因为这与你地图损坏是完全不同的事情。
工具
工具 | 只读 | 用途 |
| 是 | 版本、配置、能力矩阵、限制 |
| 是 | 在不扫描磁盘的情况下找到 StarCraft II |
| 否 | 暂存文档,获取 |
| 是 | 种类、计数、组件、依赖、诊断、已知缺口 |
| 是 | 重新连接后恢复 |
| 是 | 解析 |
| 是 | 名称、作者、模组类型、图标、截图、依赖 |
| 是 | 按解析顺序排列的依赖链 |
| 是 | 组件类型代码的参考表 |
| 是 | 存在的目录域,附带条目计数 |
| 是 | 按 id 查找目录对象,可按域过滤 |
| 是 | 单个对象自身的声明,外加逐字 XML |
| 是 | 带继承关系的有效值,以及每个值的来源 |
| 是 | 哪些内容引用了某个对象,以及它是否被共享 |
| 否 | 按路径进行字段级编辑,并带共享对象警告 |
| 否 | 以新 id 逐字节复制对象 |
| 否 | 添加新对象,最好带有父对象 |
| 否 | 删除对象;被引用时拒绝 |
| 是 | 存在的区域设置和文本表 |
| 是 | 按键或值搜索文本表 |
| 是 | 读取一个本地化字符串 |
| 否 | 创建或更新本地化字符串 |
| 否 | 删除本地化字符串 |
| 否 | 在键或区域设置之间复制字符串 |
| 是 | 没有显示名称的目录对象 |
| 否 | 在 Galaxy Editor 中打开文档,以确认其能加载 |
| 是 | 列出或读取编辑器自身的日志 |
| 是 | 用户的 Maps 文件夹,通过注册表解析 |
| 是 | 文档中的脚本;标记生成的 MapScript |
| 是 | 读取脚本,可按行范围读取 |
| 是 | 函数、变量、结构体、include |
| 是 | 带行号和列号的语法错误 |
| 否 | 精确文本编辑,若破坏解析则拒绝 |
| 否 | 添加库,先进行语法检查 |
| 是 | 触发器树,名称已解析 |
| 是 | 单个元素:类型、名称、内容、引用者、原始 XML |
| 是 | 按名称查找触发器元素 |
| 否 | 重命名元素(仅编辑 TriggerStrings) |
| 是 | 地图上的单位、装饰物和点 |
| 否 | 使用下一个空闲 id 放置单位、装饰物或点 |
| 否 | 移动、旋转或缩放已放置的对象 |
| 否 | 移除已放置的对象 |
| 是 | 区域及其形状 |
| 否 | 使用下一个空闲 id 添加区域 |
| 否 | 移动或重命名区域 |
| 否 | 移除区域 |
| 否 | 追加依赖;在加载顺序中后出现的条目生效 |
| 否 | 移除依赖,按其 |
| 否 | 设置单值 |
| 是 | 地形描述符及二进制组件头 |
| 否 | 克隆一个单位,包含名称、属性和自己的武器 |
| 否 | 更改单个单位的伤害,而不影响共享该武器的单位 |
| 否 | 让某个所有者拥有共享内容的独立副本 |
| 是 | 编辑此内容是否会影响到多个所有者? |
| 是 | 此构建的所有检查,按类别列出,并指明未执行的检查 |
| 否 | 写出暂存文档,包含备份和预检 |
| 是 | 与源文件或快照的统一差异 |
| 是 | 变更历史,每次变更前都有快照 |
| 否 | 撤销最近的更改 |
| 否 | 固定一个已知良好的状态 |
| 是 | 工作区持有的快照 |
| 否 | 将暂存树回滚到某个快照 |
| 是 | 暂存树的分页列表 |
| 是 | 读取一个暂存文件(文本,或二进制文件的 base64) |
| 是 | 在暂存文本文件中进行字面子串搜索 |
| 否 | 删除暂存副本;源文件不受影响 |
Related MCP server: loenn-mcp
安全模型
这是一个根据语言模型的指令编辑你的地图的程序,因此默认设置是保守的:
你的源文件永远不会被修改。
sc2_open_document将文档复制到服务器拥有的暂存目录中。所有编辑都落在那里。sc2_commit_document是文档离开该目录的唯一方式,并且它会在三个独立理由下拒绝——校验错误、源文件在你操作期间已发生变化、以及目标位置被占用——每一项都必须单独豁免。路径采用白名单制。
allowedRoots之外的任何路径都无法读取或写入。路径会先进行规范化处理,因此无法通过符号链接逃逸。不会运行 shell。 外部程序通过参数数组、超时和精简环境来启动。没有“运行此命令”这样的工具。
未实现就是未实现。 只有当代码存在 并且 其后端存在于本机时,能力标志才会是
true。服务器宁可明确告诉你它无法做某事,也不会去猜测。共享对象永远不会被意外编辑。 二十个单位共享一件武器。请求更改“这个单位的伤害”会克隆关联链,只重新连接该单位,并明确告诉你复制了什么——除非你明确要求修改共享的原始对象。
编辑是无损、可预览、可逆的。 XML 更改精确拼接字节范围,因此编辑之外的一切——注释、属性顺序、CRLF 行尾、文件是否以换行符结尾——都保持不变。每次变更都会先创建快照,支持
dry_run,生成统一差异,如果任何部分失败则完全回滚,并且之后可以撤销。
要求
Node.js 22 或更新版本(针对 26 开发)
pnpm 10
Windows,用于任何涉及 StarCraft II 本身的操作。核心是跨平台的,但编辑器集成不是。
快速开始
pnpm installpnpm run verifyverify 会运行 lint、类型检查、构建和完整测试套件——包括一个集成测试,该测试将构建后的服务器作为真实子进程启动,并通过 stdio 与其进行 MCP 通信。
要读取或写入打包的 .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 客户端
服务器通过 stdio 提供 MCP 服务。将你的客户端指向构建后的入口点:
{
"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 deployed
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
2,000+ MCP servers read at source level. Know what one does before you connect. Free, no key.
MCP registry & directory: search, find & install 31k+ MCP servers & tools. Catalog and marketplace.
Create, inspect, validate, and save editable 3D building scenes with Pascal's hosted MCP server.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceMCP server for reading World of Warcraft client files via CASC storage, enabling file discovery and content retrieval.1-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI agents to read, edit, analyze, procedurally generate, and preview Celeste .bin map files without the Lönn editor.2MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for Windows process memory inspection/editing and crash dump analysis, enabling live memory scanning, patching, pointer resolution, disassembly, and offline dump examination via structured tool calls.MIT
- AlicenseNot gradedqualityCmaintenanceLocal MCP server for interacting with Umbrella Lua scripts and match state, enabling runtime status, script management, and game data inspection.2MIT