mcpField
D
DOS2 Game Master

DOS2 Game Master

本地服务
github.com/o-shabashov其他01 天前更新

关于 DOS2 Game Master

DOS2 Game Master 是用于准备和运行《Divinity: Original Sin 2 – Definitive Edition》Game Master 战役的 MCP 服务。它可编辑战役文件并在写入前备份,也可通过 Script Extender 桥接 Mod 操控运行中的游戏。

主要功能

  1. 01读取和编辑战役内容
  2. 02创建 NPC 与物品模板
  3. 03管理插图、便笺和日志
  4. 04备份与恢复战役
  5. 05查看游戏角色并生成或移动角色
  6. 06在游戏服务器运行 Lua

适用场景

  1. 01准备战役场景和 NPC 模板
  2. 02添加地图便笺与日志条目
  3. 03游玩时生成或重新定位角色
  4. 04编辑后恢复战役文件

MCP 相关

向 MCP 客户端提供战役文件和实时游戏工具。实时操控依赖 Script Extender 桥接 Mod;Mod 通过文件而非网络套接字交换命令。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbdos2-gm-mcp.mcpb

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

dos2-gm-mcp

CI

English · Русский

一个 MCP 服务,让 AI 助手能够准备并运行 《神界:原罪 2 — 终极版》中的 GM 模式战役。

它分为两个层面:

  • 战役文件。 读取并编辑磁盘上的 GM 战役:NPC 和物品模板、使用自制美术素材的插画、地图便签、日志、场景氛围、附加模组。每次写入前都会先创建备份。
  • 实时游戏。 通过适用于 Norbyte's Script Extender 的小型桥接模组与正在运行的游戏通信:列出当前关卡中的角色、从模板生成 NPC、移动、重命名、升级、隐藏和显示,或在游戏服务端运行任意 Lua 代码。

通过该服务布置并配置角色的村庄场景

GM 便签概览地图有商人和储藏物的酒馆场景
概览地图酒馆

你可以提出的请求

  • “向我展示战役 My Campaign 中的内容:场景、模板、插画。”
  • “创建一个名为 Old Greta 的 NPC 模板,等级为 10,基于 Larian 示例战役中的女巫原型,并包含以下三个技能。”
  • “添加一张带有这张图片和三个投票选项的插画。”
  • “在概览地图上添加一张便签,写上战斗检查清单。”
  • “游戏正在运行:在船长旁边生成两个火焰小鬼,并告诉我所有人的生命值。”

Larian 随游戏提供的 GM 战役也可以读取,因此可用作 NPC 模板库,供你复制使用。

要求

  • Windows、《神界:原罪 2 — 终极版》(已在 Steam 版本 3.6.117.3735 上测试)
  • uv 和 Python 3.11+
  • .NET 8 运行时或更高版本(LSLib 的 Divine.exe 需要它)
  • 仅实时层需要:Script Extender v58 或更高版本(已在 v60 上测试)

安装

git clone https://github.com/o-shabashov/dos2-gm-mcp
cd dos2-gm-mcp
uv sync
uv run dos2-gm-fetch-lslib

最后一条命令会将官方的 LSLib v1.20.4 版本下载到 ./lslib,并校验其 SHA-256。LSLib 是 Norbyte 在 MIT 许可证下开发的项目;本仓库不会重新分发它。

将其连接到 Claude Code:

claude mcp add dos2-gm --scope user -- uv --directory C:\path\to\dos2-gm-mcp run dos2-gm-mcp

或连接到其他 MCP 客户端:

{
  "mcpServers": {
    "dos2-gm": {
      "command": "uv",
      "args": ["--directory", "C:\\path\\to\\dos2-gm-mcp", "run", "dos2-gm-mcp"]
    }
  }
}

Claude Desktop 也可使用单文件软件包:从最新版本下载 dos2-gm-mcp.mcpb,打开后让助手调用一次 dos2_fetch_lslib。该软件包会将 LSLib 和备份保存在 ~/.dos2-gm-mcp 中。

系统会自动查找游戏文件夹和 Documents\Larian Studios\Divinity Original Sin 2 Definitive Edition(包括 Steam 库和已迁移的 Documents 文件夹)。可通过环境变量或项目根目录中的 config.json 覆盖这些路径:

变量含义
DOS2GM_CAMPAIGNSGMCampaigns 文件夹
DOS2GM_GAME游戏文件夹
DOS2GM_DIVINEDivine.exe 的路径
DOS2GM_BACKUPS备份保存位置(默认值:./backups)
DOS2GM_MODS, DOS2GM_OSIRIS_DATA游戏文档目录中的 Mods 和 Osiris Data 文件夹
DOS2GM_HOMELSLib、备份、缓存和 config.json 的存放位置(默认值:项目根目录)

工具

campaign 参数接受战役名称、战役文件夹名称、UUID,或其中任意名称的一部分。

读取返回内容
dos2_status路径、游戏是否正在运行、战役列表
dos2_fetch_lslib一次性设置:下载 LSLib 并校验其 SHA-256(与 uv run dos2-gm-fetch-lslib 相同)
dos2_campaign元数据和附加组件、场景、带标记的地图、插图、模板、便笺、日志
dos2_scene场景中的角色(名称、模板、位置、生命值、阵营、遭遇)、遭遇、便笺
dos2_templates、dos2_templateNPC 和物品模板,或某个模板的完整内容
dos2_find_templates按名称、属性、技能、物品搜索所有战役中的模板
dos2_vignettes、dos2_notes完整的插图和便笺
dos2_raw任意战役文件的 LSX 内容,可使用 XPath 筛选
dos2_backups战役的备份
写入操作
dos2_put_npc_templateNPC 模板:从任意战役复制基础模板,设置名称、等级、阵营、属性和能力变更、天赋、技能、装备
dos2_put_item_template物品模板
dos2_put_vignette插图,可使用自定义图片或内置图片,并提供投票选项
dos2_put_note在总览地图上添加便笺;编辑场景便笺的文本
dos2_put_journal日志分类、章节和段落
dos2_scene_settings场景氛围和音乐
dos2_campaign_meta战役名称、描述、作者
dos2_addon、dos2_mod_install将现成的 .pak 模组附加到战役,或将模组文件夹打包成 .pak 并附加
dos2_delete_template、dos2_delete_vignette、dos2_delete_note删除
dos2_backup、dos2_restore完整复制战役,或从任意备份恢复
实时(游戏运行时)操作
dos2_live_status查看已就绪项目:游戏、Script Extender、桥接 .pak、已附加的战役、桥接心跳
dos2_bridge_install、dos2_bridge_detach将桥接打包为 Mods\DOS2GMBridge_….pak 并作为附加组件附加到战役,或将其分离
dos2_live_characters查看当前关卡中的角色:GUID、名称、模板、属性、等级、生命值、阵营、位置
dos2_live_spawn从根模板或 GM 模板生成角色,可放置在指定点或某人旁边
dos2_live_move、dos2_live_set、dos2_live_stage传送;更改名称、等级、阵营;使角色离场并将其带回
dos2_live_lua在游戏服务端运行 Lua(Ext、Osi)并获取返回值

安全

  • 写入操作针对已关闭的战役:游戏已关闭,或停留在主菜单。游戏进程正在运行时,写入需要设置 allow_running=true。
  • 每次写入前,都会将先前的文件复制到 backups\<campaign folder>\<time>-<operation>。dos2_restore 可还原其中任意备份。
  • 已放置的 NPC 和遭遇存储在场景缓存中,在此处为只读;你可以在游戏中或通过实时层放置它们。
  • dos2_live_lua 会在游戏中执行任意 Lua。请仅与可信任的助手一起使用。

实时层设置

  1. 安装 Script Extender:将其 DXGI.dll 放在 DefEd\bin 中,与 EoCApp.exe 同目录。
  2. 请助手为你的战役运行 dos2_bridge_install(游戏必须关闭)。该操作会构建桥接模组并将其添加到战役的附加组件中。
  3. 以 GM 模式加载战役并调用 dos2_live_status。

桥接是一个服务端 Lua 模组(bridge/)。每个 tick,它都会从 Osiris Data/dos2gm-mcp 读取命令、执行命令并写入答案;没有套接字,也不会监听网络。多人游戏中,每位玩家都需要相同的 .pak 和 Script Extender,与任何 DOS2 模组的要求相同。

我们对 GM 模式的了解

给自行构建工具的人提供的说明;均已在游戏中验证。

  • NPC 模板位于战役的 Eggs.lsf 中,类型为 GMExportCharacter。模板的第二个 Attribute 节点保存了游戏主持人对基础属性所做的调整。
  • 装备槽位:0 头盔,1 胸甲,2 腿部,3 武器,4 盾牌,5 和 10 戒指,6 腰带,7 靴子,8 手套,9 护身符,12 角,15 及以上背包。
  • 地图便签的 Type = 2,UI = 地图 UUID,NoteUIX/Y 使用地图像素坐标。场景便签的 Type = 0,附着在 LevelCache 中的一个隐形标记物品上。
  • 模组的 meta.lsx 需要使用 Definitive Edition 的 PublishVersion(例如 909321303)。如果使用 1.0.0.0,游戏会将模组标记为适用于 Classic Edition,并拒绝加载。
  • “Play campaign”会在战役副本上运行;准备好的战役不会受到影响。加载 GM 存档时会使用主菜单中的模组列表,因此也要在那里勾选你的附加模组。
  • 战役或关卡加载期间,任何 Osi.* 调用都会导致 Script Extender 原生崩溃,即使 Ext.Osiris.IsCallable() 已返回 yes。只有游戏状态为 Running、Paused 或 GameMasterPause 时才调用。
  • 游戏主持人暂停期间,Osiris 会延迟世界操作(放置、传送),直到解除暂停;创建角色后立即调用 SetOnStage 也会失效。桥接程序会为此类响应标记 applies_on_unpause。
  • CombatRoundStarted 和 CharacterVitalityChanged 在 GM 模式下永远不会触发。请按回合统计轮数,并轮询生命值。
  • 游戏主持人暂停期间,Script Extender 的控制台会拒绝命令;文件桥接程序仍可正常工作。
  • 运行时,物品支持 CustomDisplayName、CustomDescription 和 CustomBookContent,这些值会传递给玩家。

测试

uv run python tests/bridge_test.py                    # the real bridge Lua in Lua 5.3 against stubs
uv run python tests/mcp_probe.py                      # MCP handshake, tool list and one call over stdio
uv run python tests/check_mapping.py                  # scenes of all campaigns, read-only
uv run python tests/smoke_read.py "My Campaign"       # read-only
uv run python tests/write_test.py <temp folder>       # writes into copies of campaigns

致谢

  • Norbyte 开发的 LSLib 和 Script Extender 让这一切成为可能。
  • Divinity: Original Sin 2 是 Larian Studios 制作的游戏。这是一款非官方粉丝工具,与 Larian Studios 无关,也未获其认可。截图展示的是游戏本身的美术内容。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。