witch-journey-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@witch-journey-mcpshow me the current game state summary"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
魔女终末旅途 MCP
这是一个用于 魔女终末旅途 的本地 MCP 工具包,让支持 MCP 的客户端可以通过游戏内自动化接口接管游戏操作,而不是盲猜屏幕点击。
它不是 Codex 专用工具。server.mjs 是标准 MCP stdio server,理论上可以被 Codex、Claude Desktop、Claude Code、Cursor、Windsurf 或你自己写的 MCP client 启动和调用。Codex 只是当前仓库已经验证过的接入方式之一。
工具包分为两部分:
server.mjs:标准 MCP stdio 服务器,供支持 MCP 的客户端使用。bridge-mod/:游戏内CodexMcpBridge模组。它会在本机开启 HTTP 桥接服务,并调用游戏里的Witch.UI.Automation.*运行时接口。
默认桥接地址是 http://127.0.0.1:18171。
默认启用无鼠标模式:MCP 会拒绝 witch_input_mouse 和底层 input.mouse,自动接管会优先使用游戏合法动作、UI 自动化、场景自动化和运行时调用。
最新改动说明
当前版本已经补齐“完全无鼠标接管”的关键路径,并在真实运行中的游戏进程里完成严格证明检查:
witch_control_map会把当前可用的合法动作、UI 动作、场景对象动作、战斗动作和少量白名单runtime_action汇总成统一操作表。witch_execute_operation可以按operationId、family/action、label或index执行操作,默认dryRun:true,只有显式传入dryRun:false才会真实推进游戏。新增
witch_event_route_trace事件/地图路由追踪工具,用于把当前窗口、EventUI / MapSelectUI 节点、合法动作、MapManager / MapItem / EventUI 等运行时对象和可读组件字段关联起来,输出候选 event id、map node、分层 route 步骤、hook 日志摘要和置信度,方便定位地图卡、事件 id 与实际加载链路。新增只读断言工具
witch_assert_route、witch_assert_ui_text、witch_assert_event_id、witch_assert_forbidden_text,方便写“进入某张地图后必须出现/不得出现哪些文本或事件 id”的回归检查。收紧地图推进验证:
map_continue/CmdNextMap/map_next这类操作执行后必须能证明 UI、合法动作、event/map 候选或布局指纹发生变化;如果底层组件调用返回 success 但状态没变,MCP 会返回operation_unverified_no_state_change,不再把它当作真正成功。收紧 UI 输出:
includeHidden:false时 MCP 会在本层再次过滤隐藏窗口/节点,避免隐藏归档、后台窗口或旧 UI 文本污染断言;witch_control_map也会把奖励、确认、继续类可见按钮标成更明确的intent并放进recommendedOperations。新增高优先级轻量入口:
witch_event_choose_option、witch_story_map_snapshot、witch_log_tail、witch_screenshot、witch_map_select_node;并为witch_state_summary/witch_ui_interact增加compact/fields输出,为witch_runtime_component_call增加waitFor状态变化等待。新增地图放牌高层入口
witch_map_place_card/witch_map_fill_path;新版桥接 DLL 会优先调用游戏内map.place_card语义命令,直接执行MapItem -> SwapContentIdentity的放置逻辑并验证路径槽Content是否被填入,旧桥接才回退到“选卡牌再选路径槽”;witch_execute_operation按标签选择时也会优先 click/submit,避免默认落到 hover。package.json、MCPserverInfo.version和witch_capabilities.serverVersion已同步到0.9.0,与当前桥接 Mod 版本一致;仓库状态请参考STATUS.md和witch_capabilities实际返回。新增并验证了地图和战斗管理器上的保守运行时动作,例如显示地图选择、地图推进、战斗开始/结束回合检查等;这些动作默认不标记为 ready,真实执行需要
confirm:"CALL_WITCH_COMPONENT_METHOD"。当运行中的旧桥接 DLL 还不支持部分新命令时,MCP 会优先通过 runtime fallback 完成 UI、场景、合法动作和战斗观察/操作,而不是退回到 OS 鼠标。
prove-no-mouse-takeover.ps1 -Status已在实机战斗状态下返回strict proof complete: True,缺失证明项为0;现场样本覆盖 UI、合法动作、场景对象、战斗卡牌/目标和运行时动作。
这表示本仓库的目标不是“模拟鼠标点屏幕”,而是让支持 MCP 的客户端通过游戏内对象和自动化接口接管操作。是否能宣称某次安装环境已经完整可接管,应以该机器上 prove-no-mouse-takeover.ps1 -Status 或 witch_no_mouse_completion_audit 的结果为准。
Related MCP server: gameplay-mcp
安装
把
bridge-mod/复制到游戏 Mod 目录,并把复制后的文件夹命名为CodexMcpBridge。根据你的游戏安装情况,复制到下面一个或两个位置:Copy-Item -Recurse -Force .\bridge-mod "<游戏根目录>\Mods\CodexMcpBridge" Copy-Item -Recurse -Force .\bridge-mod "<游戏根目录>\Witch's Apocalyptic Journey_Data\Mods\CodexMcpBridge"在 MCP 客户端里加入这个 server。Codex 配置示例:
[mcp_servers.witchJourney] command = 'node' args = ["<本仓库路径>\\server.mjs"] startup_timeout_sec = 20 [mcp_servers.witchJourney.env] WITCH_JOURNEY_BRIDGE_URL = 'http://127.0.0.1:18171' WITCH_JOURNEY_GAME_ROOT = '<游戏根目录>' WITCH_JOURNEY_NO_MOUSE = 'true'WITCH_JOURNEY_GAME_ROOT用来告诉 MCP server 游戏安装在哪里,例如:WITCH_JOURNEY_GAME_ROOT = 'D:\Steam\steamapps\common\Witch''s Apocalyptic Journey'如果你把本仓库放在
<游戏根目录>\_mcp\witch-journey-mcp,可以不配置WITCH_JOURNEY_GAME_ROOT,工具会按旧布局自动推断游戏根目录。除此之外,建议始终显式配置这个环境变量,这样仓库 clone 到桌面、文档目录或其他位置也能使用。WITCH_JOURNEY_NO_MOUSE默认为true,表示禁止 OS 级鼠标兜底。只有在你明确需要旧的鼠标 fallback 时,才设置为0或false。其他 MCP 客户端通常也会使用同样的核心信息,只是配置文件格式不同:
{ "command": "node", "args": ["<本仓库路径>/server.mjs"], "env": { "WITCH_JOURNEY_BRIDGE_URL": "http://127.0.0.1:18171", "WITCH_JOURNEY_GAME_ROOT": "<游戏根目录>", "WITCH_JOURNEY_NO_MOUSE": "true" } }重启你的 MCP 客户端,让新的 server 配置生效。
重启游戏。
检查游戏内桥是否可用:
powershell -ExecutionPolicy Bypass -File .\check-bridge.ps1
工具能力
当前 MCP server 暴露 73 个工具,覆盖:
桥接状态检查、等待、重启编排
本地运行时诊断、Mod 文件检查、桥文件新旧检查
接管前准备、readiness 检查、完整接管审计
UI 快照、UI 点击和交互
场景对象快照、场景交互、raycast
截图、窗口聚焦、本地 OS 输入兜底
桥接 DLL 同步检查与确认式同步,例如
witch_sync_bridge_artifacts游戏合法动作、战斗快照、出牌、合法动作匹配、有边界的自动驾驶
运行时类型/对象检查、组件成员枚举、组件方法 dry-run/确认调用、组件属性 dry-run/确认写入、静态运行时方法调用
事件/地图路由追踪,例如
witch_event_route_trace会把当前EventUI/MapSelectUI、合法动作、MapManager/NormalMapManager/MapItem/EventUI运行时对象、可读组件字段和 hook 日志摘要聚合起来,输出候选 event id、map node、route 步骤和置信度,用来定位“点了这个地图卡最后到底走到哪个事件”只读断言工具,例如
witch_assert_route、witch_assert_ui_text、witch_assert_event_id、witch_assert_forbidden_text,用于自动判断当前状态是否出现期望 UI 文本/事件 id,或是否误出现禁用文本状态推进防误报:地图继续/下一地图类操作需要前后状态指纹变化,奖励/确认/继续类 UI 会在
recommendedOperations里优先浮出专用轻量操作/观察入口:
witch_event_choose_option、witch_story_map_snapshot、witch_log_tail、witch_screenshot、witch_map_select_node,以及compact:true/fields:[...]摘要输出地图牌放置入口:
witch_map_place_card、witch_map_fill_path,新版桥接通过map.place_card在游戏内部把可见地图牌放入路径槽,并验证槽位Content下出现非Null地图牌观察-规划-执行辅助,例如
witch_control_map、witch_execute_operation、witch_state_summary、witch_plan_next、witch_execute_plan、witch_takeover_step、witch_takeover_drive无鼠标能力审计、运行时覆盖矩阵、跨状态证据记录、操作级探针、ready 操作批量采证、证据驱动循环、证据机会监听、确认式状态推进、确认式重启后采证、完整证明编排、证据缺口计划和严格完成度审计,例如
witch_no_mouse_audit、witch_no_mouse_coverage、witch_no_mouse_record_evidence、witch_no_mouse_probe_operation、witch_no_mouse_collect_ready_evidence、witch_no_mouse_evidence_drive、witch_no_mouse_state_advance_drive、witch_no_mouse_watch_evidence、witch_no_mouse_restart_collect_audit、witch_no_mouse_restart_advance_audit、witch_no_mouse_evidence_plan、witch_no_mouse_completion_audit
建议对接管循环、组件调用、组件写入、静态运行时调用先使用 dry-run,确认目标和参数后再执行真实动作。
如果客户端想用统一入口接管当前可见操作,推荐先调用 witch_control_map 获取当前合法动作、UI、场景和战斗操作列表,再用 witch_execute_operation 按 operationId、family/action、label 或 index 执行对应的 no-mouse MCP 调用。witch_execute_operation 默认 dryRun:true,只有显式传 dryRun:false 才会真实执行,并且会拒绝任何映射到 OS 鼠标的操作。
无鼠标模式
MCP 默认不使用 OS 鼠标。也就是说:
witch_legal_actions、witch_perform_action_match、witch_auto_step、witch_auto_drive走游戏自己的合法动作层;如果旧桥接还不认识game.legal_actions或game.perform_action,MCP 会尝试通过RuntimeGameplayAutomationService走 runtime fallback。witch_ui_snapshot、witch_ui_interact、witch_ui_click_label、witch_ui_wait走游戏内 UI 自动化,即使 action 名叫click,也不是移动 Windows 鼠标;如果旧桥接还不认识ui.*命令,MCP 会尝试通过RuntimeUiAutomationService走 runtime fallback。witch_scene_snapshot、witch_scene_interact、witch_scene_raycast走游戏内场景自动化,也不是移动 Windows 鼠标;如果旧桥接还不认识scene.*命令,MCP 会尝试通过RuntimeSceneAutomationService走 runtime fallback。witch_battle_snapshot可以观察战斗手牌和可选目标,witch_play_card可以按卡牌/目标参数出牌,不需要移动鼠标去点卡牌;如果运行中的旧桥接还不认识battle.play_card,MCP 会尝试通过RuntimeBattleAutomationService.PlayCardAsync走 runtime fallback。witch_control_map还会暴露少量白名单runtime_action,例如地图管理器和战斗管理器上的无参流程方法。这类操作默认ready:false,只能 dry-run 预览;真实执行必须显式传dryRun:false和confirm:"CALL_WITCH_COMPONENT_METHOD",避免误触发状态切换。witch_input_mouse和witch_bridge_command里的input.mouse默认返回mouse_forbidden,不会触发SetCursorPos或mouse_event。
严格完成度审计会区分“能力路径可用”和“全部游戏状态已经证明”。如果运行中的旧桥接没有新版 battle.snapshot 或部分 ui.*、scene.*、game.* 命令,但本轮采样已经能通过直接命令或 runtime fallback 完成 UI、场景、合法动作观察,并且能通过 runtime 对战斗状态做等价观察,witch_no_mouse_completion_audit 会把这些路径作为能力证据;不过它仍然要求 UI、合法动作、场景、战斗等操作族都留下真实现场样本,证据不足时仍会返回 complete:false。
换句话说,本仓库提供并默认使用无鼠标控制路径,但不要把一次菜单或单一界面的成功理解成“已经证明所有游戏内操作都能完全接管”。要宣布完全接管,请以 witch_no_mouse_completion_audit 或 prove-no-mouse-takeover.ps1 -Status 的 complete:true 为准;如果仍缺 scene_live_sample_observed、battle_live_sample_observed 或 operation_type_samples_observed,说明还需要进入对应的真实游戏状态继续采证。
如果确实要临时恢复 OS 鼠标兜底,可以设置环境变量 WITCH_JOURNEY_NO_MOUSE=0,或单次调用 witch_input_mouse 时传 noMouse:false。不建议把它作为自动接管路径。
witch_no_mouse_coverage 用来确认能力是否齐全;witch_no_mouse_record_evidence 用来在不同游戏状态下记录紧凑证据,包括操作族和 action 类型摘要;witch_no_mouse_probe_operation 可以对当前某个 no-mouse operation 做 dry-run 或显式真实执行,并把操作级结果写入证据日志;witch_no_mouse_collect_ready_evidence 会自动挑选当前 ready 的 no-mouse operations 批量 probe,默认 dry-run,真实执行需要 confirm:"EXECUTE_NO_MOUSE_PROBES";witch_no_mouse_evidence_drive 会循环执行“计划、采 ready probe、记录证据、严格审计”,直到完成、达到轮数上限或当前状态没有 ready 证明步骤;witch_no_mouse_state_advance_drive 会在采证循环之间选择排序最高的 stateAdvanceCandidates,默认只 dry-run 展示将执行的 no-mouse 操作,真实推进游戏状态需要 confirm:"ADVANCE_NO_MOUSE_STATE",并支持 allowOperationIds、denyOperationIds、allowLabels、denyLabels、allowPaths、denyPaths 约束候选范围;witch_no_mouse_watch_evidence 会在一段时间内监听证据机会,一旦缺口 ready probe 出现就自动采证;当当前状态没有 ready 缺口时,witch_no_mouse_evidence_plan 和 witch_no_mouse_evidence_drive 会返回 stateAdvanceCandidates,给出可能进入下一游戏状态的 no-mouse 调用候选;witch_no_mouse_restart_collect_audit 会在显式 confirm:"RESTART_WITCH_GAME" 后重启游戏、等待桥接、采状态证据、采 ready probe 并跑严格审计;witch_no_mouse_restart_advance_audit 是完整证明编排入口,会在 restartConfirm:"RESTART_WITCH_GAME" 后重启加载新版桥接、记录证据,再调用状态推进驱动,且同样支持上述 allow/deny 参数;如果要真实推进游戏状态,还需要 advanceDryRun:false 和 advanceConfirm:"ADVANCE_NO_MOUSE_STATE";witch_no_mouse_evidence_plan 会把严格审计里的缺口转换成当前可执行的 witch_no_mouse_probe_operation 探针、需要进入的游戏状态或需要重启加载 DLL 的步骤;witch_no_mouse_completion_audit 更严格,用来判断是否已经足以宣布“完全无鼠标接管”目标完成。它会要求 UI、场景、战斗、合法动作等操作族都有现场证据;证据不足时会返回 complete:false 和下一步建议,而不是把单一界面的成功误报为全局完成。
证据日志默认写入仓库本地的 .witch-no-mouse-evidence.json,该文件已被 .gitignore 排除,不会上传到公开仓库。
验证
不启动真实游戏桥时,可以运行本地协议测试:
npm test如果只想运行不依赖真实游戏进程的 fake bridge 回归:
npm run test:fake也可以单独运行:
npm run selftest
npm run calltest
npm run orchestration-test
npm run state-advance-policy-test
npm run bridge-sync-test
npm run no-mouse-test
npm run e2e-fake安装桥接 Mod 并重启游戏后,可以运行真实游戏验证:
powershell -ExecutionPolicy Bypass -File .\wait-and-verify.ps1 -TimeoutSec 180 -IntervalSec 2如果只想先确认或同步新版桥接 DLL 到游戏 Data Mod 目录,而不关闭/重启游戏,可以调用 MCP 工具 witch_sync_bridge_artifacts。该工具默认 dryRun:true,真实复制需要 dryRun:false 且传入 confirm:"SYNC_BRIDGE_ARTIFACTS"。如果目标 DLL 被正在运行的游戏占用,可以传 waitForUnlock:true、timeoutMs 和 pollMs,让工具在你关闭游戏释放文件后自动重试同步。同步后的 DLL 通常要等下一次重启游戏才会被当前进程加载。
如果希望脚本自动重启游戏、等待桥上线、执行审计和完整验证:
powershell -ExecutionPolicy Bypass -File .\restart-and-verify.ps1 -ConfirmRestart RESTART_WITCH_GAMErestart-and-verify.ps1 会关闭并重启游戏。为了避免误操作,它必须传入 -ConfirmRestart RESTART_WITCH_GAME 才会执行。
确认重启时,MCP 会先在游戏进程退出后把仓库中的新版 bridge-mod/Scripts/Entry.dll 同步到游戏 Data Mod 目录,再启动游戏并执行验证。witch_restart_and_watch_bridge 和 witch_no_mouse_restart_collect_audit 使用同一条同步逻辑。
witch_no_mouse_restart_advance_audit 在没有 restartConfirm:"RESTART_WITCH_GAME" 时不会重启游戏,但会返回当前严格审计、缺口计划、状态推进候选和建议调用,方便先审查再执行。
如果目标是证明“完全不使用鼠标也能接管全部游戏内操作”,建议使用专门的证明脚本:
powershell -ExecutionPolicy Bypass -File .\prove-no-mouse-takeover.ps1想先查看所有模式、选项和退出码,可以运行:
powershell -ExecutionPolicy Bypass -File .\prove-no-mouse-takeover.ps1 -Help如果只想知道当前是否已经满足“完全无鼠标接管”的严格证明,不希望脚本关闭、重启、同步或推进游戏,可以运行只读状态检查:
powershell -ExecutionPolicy Bypass -File .\prove-no-mouse-takeover.ps1 -Status-Status 会汇总桥接是否在线、游戏进程是否正在运行、Data 目录桥接 DLL 是否已经带有 battle.snapshot、严格审计还缺哪些现场样本,以及下一条推荐命令。如果游戏正在运行且 Data 目录 DLL 还是旧版,同步预览可能显示 sync_ready_target_may_be_locked,表示新版源文件已准备好,但目标 DLL 需要等游戏关闭释放后才能可靠替换。它也支持 -OutputPath,写出的状态包便于复查当前卡点。
不带确认参数时,它只会预览严格审计缺口和当前无鼠标状态推进候选,不会关闭或重启游戏。确认已经保存好进度并希望加载新版桥接 DLL 后,可以运行:
powershell -ExecutionPolicy Bypass -File .\prove-no-mouse-takeover.ps1 -ConfirmRestart RESTART_WITCH_GAME上面的命令会重启游戏、等待桥接上线、记录证据、执行 dry-run 状态推进计划并跑 witch_no_mouse_completion_audit。如果你已经审查过候选操作,并允许脚本真实推进游戏状态,可以额外加 -ExecuteStateAdvance;如果还允许真实执行操作探针,可以再加 -ExecuteProbes。这两个开关都可能改变当前游戏状态,因此默认关闭。
如果不想让脚本关闭游戏,但希望它在你手动退出游戏后自动同步新版桥接 DLL,可以使用:
powershell -ExecutionPolicy Bypass -File .\prove-no-mouse-takeover.ps1 -WaitForDllUnlock这个模式不会关闭或重启游戏,只会等待 Entry.dll 可写;你手动关闭游戏释放 DLL 后,它会同步新版桥接。同步完成后,再手动启动游戏并重新运行证明脚本继续严格审计。
如果希望同步成功后继续等待你手动重新启动游戏,并在桥接上线后自动跑一次严格证明预览,可以加:
powershell -ExecutionPolicy Bypass -File .\prove-no-mouse-takeover.ps1 -WaitForDllUnlock -WaitForBridgeAfterSync如果需要保留机器可读的证明包,可以加 -OutputPath:
powershell -ExecutionPolicy Bypass -File .\prove-no-mouse-takeover.ps1 -OutputPath .\no-mouse-proof.json证明包会包含严格审计结果、缺失项、状态推进候选和完整 MCP 返回结果,方便之后复查。-WaitForDllUnlock 模式也支持 -OutputPath,会写出同步结果包;与 -WaitForBridgeAfterSync 一起使用时,会写出“同步、等待桥接、证明预览”的连续流程包。它是本地文件;仓库已忽略 no-mouse-proof*.json、witch-no-mouse-proof*.json 和 proof-bundles/,避免常见证明包误上传。如果你把 -OutputPath 指到其他文件名或仓库外路径,请按自己的隐私需求管理。
构建桥接 DLL
仓库已经包含 bridge-mod/Scripts/Entry.dll。如果修改了 bridge-mod/Dev/Entry.cs 并希望重新构建 DLL,需要把桥源码复制或同步到游戏 Mod 目录,然后运行:
powershell -ExecutionPolicy Bypass -File .\tools\compile-bridge.ps1构建脚本会引用已安装游戏里的 managed assemblies,因此默认要求仓库位于游戏根目录下,或者你自行调整脚本里的路径。
如果仓库不在游戏根目录下,先设置 WITCH_JOURNEY_GAME_ROOT 再运行构建脚本:
$env:WITCH_JOURNEY_GAME_ROOT = "<游戏根目录>"
powershell -ExecutionPolicy Bypass -File .\tools\compile-bridge.ps1安全设计
桥接服务只绑定本机 localhost。
重启游戏进程需要显式确认 token。
组件方法调用和组件属性写入默认是 dry-run,真实执行需要确认字符串。
动作策略可以按合法动作 id、kind、label 做 allow/deny,避免自动执行未审核动作。
This server cannot be deployed
Maintenance
Related MCP Connectors
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Connect any AI to your Foundry VTT world: actors, combat, dice, journals, tokens, compendiums.
1AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Decision Layer for AI Agents — 58+ tools, Advisor, MCP. Free key: POST /v1/register {}.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to inspect and automate Windows desktop UI elements by exploring UI trees, checking properties, performing actions like clicking and typing, and generating Python automation scripts.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI models to interact with Unity games at runtime by providing tools to list UI actions, inspect GameObjects, capture screenshots, and manage scenes.9MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with web applications through DOM inspection, user interaction simulation, and application state management.MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to control Windows GUI by listing and focusing windows, capturing element snapshots via UIA/OCR/CDP, performing clicks/inputs/scrolls, verifying changes, waiting for screen updates, taking screenshots, and obtaining visual descriptions.2-