Arma 3 Eden编辑器MCP服务器

一个MCP(模型上下文协议)服务器,通过自然语言控制Arma 3 Eden编辑器,支持创建实体、移动对象、读取地形数据等功能。

  • by diaverso
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 diaverso/Arma3-Eden-Editor-MCP-Server

使用说明

英语 | 西班牙语

使用任何兼容MCP的AI(克劳德代码等)用自然语言控制Arma 3 Eden编辑器。 使用任何与MCP兼容的AI以自然语言控制Arma 3的Editor Editor。


英语

这是什么?

一 MCP(模型上下文协议)服务器 它将AI助手(如VS Code中的Claude Code)连接到Arma 3 Eden编辑器。您可以创建实体、移动对象、读取地形数据、搜索位置、查找BI Wiki等,所有这些都可以通过与您的AI聊天来实现。

建筑

VS Code (Claude Code / any MCP client)
        │  stdio / JSON-RPC 2.0
        ▼
Python MCP Server  (mcp_server/)
        │  Named Pipe  \\.\pipe\arma3_mcp_bridge
        ▼
C++ Bridge DLL  (arma3_mcp_bridge_x64.dll)
        │  callExtension / RVExtensionRegisterCallback
        ▼
Arma 3 Eden Editor  (@ArmaDevBridge addon / SQF)

MCP服务器在Arma 3之外运行。DLL充当Windows命名管道上的桥梁。SQF插件在Eden Editor中运行,执行命令,并在顶部栏中显示状态指示器。

先决条件

工具 最低版本 注释
Windows 10/11(64位) -- 需要管理员权限 --请参阅下面的注释
Arma 3 2.02 蒸汽或独立
Python 3.9+ python.org
pywin32 任何 pip install pywin32
Visual Studio代码 任意 与任何MCP兼容的AI-- 如何在VS代码中添加AI

为什么是管理员? 默认情况下,Arma 3以管理员身份运行,这意味着它创建的命名管道需要提升访问权限。VS Code(以及MCP服务器)也必须以管理员身份运行,否则管道连接将被拒绝。

快速安装(5个步骤)

REM 1. Clone the repository
git clone https://github.com/YOUR_USER/arma3-eden-mcp "MCP Arma 3"
cd "MCP Arma 3"

REM 2. Install Python dependencies
pip install -r mcp_server/requirements.txt
pip install pywin32

REM 3. Pack and deploy the PBO addon (close Arma 3 first)
python tools/pack_pbo.py arma3_addon/addons/bridge bridge.pbo
copy bridge.pbo "K:\SteamLibrary\steamapps\common\Arma 3\@ArmaDevBridge\addons\bridge.pbo"

REM 4. Copy the DLL to the Arma 3 root folder
copy arma3_addon\addons\bridge\arma3_mcp_bridge.dll "K:\SteamLibrary\steamapps\common\Arma 3\arma3_mcp_bridge_x64.dll"

REM 5. Configure .mcp.json
copy .mcp.json.example .mcp.json
REM   Then edit .mcp.json and replace PATH_TO_PYTHON and PATH_TO_PROJECT

详细安装指南

步骤1——克隆并安装Python依赖项

git clone https://github.com/YOUR_USER/arma3-eden-mcp "MCP Arma 3"
cd "MCP Arma 3"
pip install -r mcp_server/requirements.txt
pip install pywin32

pywin32 是Windows上命名管道I/O所必需的,未在中列出 requirements.txt 因为它是特定于平台的。

步骤2——打包并部署PBO

PBO(打包BO)是编译的Arma 3插件。从SQF来源构建它,包括:

# Close Arma 3 before running this — the file is locked while the game is open
python tools/pack_pbo.py arma3_addon/addons/bridge bridge.pbo
cp bridge.pbo "K:/SteamLibrary/steamapps/common/Arma 3/@ArmaDevBridge/addons/bridge.pbo"

如果mod文件夹不存在,请创建它:

mkdir "K:\SteamLibrary\steamapps\common\Arma 3\@ArmaDevBridge\addons"

步骤3--复制DLL

copy arma3_addon\addons\bridge\arma3_mcp_bridge.dll "K:\SteamLibrary\steamapps\common\Arma 3\arma3_mcp_bridge_x64.dll"

DLL 必须 被放置在 根 Arma 3(旁边 arma3_x64.exe),不在里面 @ArmaDevBridge/addons/.

步骤4——配置 .mcp.json

copy .mcp.json.example .mcp.json

编辑 .mcp.json 并替换占位符值:

{
  "mcpServers": {
    "arma3-eden": {
      "type": "stdio",
      "command": "C:\\Users\\YOUR_USER\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
      "args": ["-m", "mcp_server"],
      "cwd": "C:\\Users\\YOUR_USER\\Desktop\\MCP Arma 3",
      "env": {
        "ARMA3_BRIDGE_PIPE": "\\\\.\\pipe\\arma3_mcp_bridge",
        "ARMA3_BRIDGE_TIMEOUT": "30"
      }
    }
  }
}

要找到你的Python路径:打开一个终端并运行 where python 或 py -c "import sys; print(sys.executable)".

步骤5——以管理员身份启动Arma 3和VS代码

  1. 右击 Arma 3在蒸汽中→ 属性→ 启动选项→ add -mod=@ArmaDevBridge 或者从命令行启动:

    "K:\SteamLibrary\steamapps\common\Arma 3\arma3_x64.exe" -mod=@ArmaDevBridge
    
  2. 打开 伊甸园编辑。状态指示器出现在顶部栏中:

    颜色 状态
    黄色 正在初始化
    绿色 网桥处于活动状态,DLL已连接
    红色 DLL未找到
    白色(闪烁) 收到命令
  3. 右击 VS Code→ “以管理员身份运行”

  4. 在VS Code中打开项目文件夹。Claude Code从以下位置检测到MCP服务器 .mcp.json 自动。

  5. 验证连接:询问Claude “桥连接了吗?” --它应该以状态作为响应 ok: true.

可用的MCP工具

实体

工具 说明
create_entity 创建一个实体(车辆、单位、对象、触发器……)。自动地面捕捉(z=0 ATL=地面标高)。车辆创建为 Object 没有船员。
delete_entity 按ID删除实体
move_entity 将实体移动到新位置
list_all_entities 列出任务中给定类型的所有实体
get_all_editor_objects 所有具有完整细节的对象(分页)
get_all_editor_objects_full 相同但无页码(小型任务)
get_selected_entities 当前在编辑器中选择的实体

属性

工具 说明
set_attribute 设置3DEN属性(skill, fuel, health, ammo, init, isPlayable…)
get_attribute 读取实体的特定属性
get_all_attributes 阅读 全部 Eden属性,包括库存/货物

班级搜索

工具 说明
find_classname 通过显示名称查找车辆/单元的确切类名
get_placeable_categories 列出可用的类别/派系以供放置
search_placeable_objects 按名称或派系搜索可放置的类

使命

工具 说明
get_mission_info 任务元数据(地形、作者、实体计数)
save_mission 保存任务(可选名称)
clear_mission 删除所有实体(可通过Ctrl+Z撤消)
undo_last_action 撤消上一个操作
get_bridge_status 检查Arma 3的连接

地形和地图

工具 说明
get_terrain_info 一个或多个位置的地形高度(ASL)、水质和表面类型
get_roads 位置附近的路段(类型、宽度、桥旗)
get_map_objects 附近的地形物体:建筑物、树木、墙壁、岩石、道路
find_location 搜索命名地图位置(城市、村庄、丘陵、机场……)

维基

工具 说明
wiki_lookup 从本地BI Wiki镜像中查找Arma 3 SQF命令或函数
wiki_search 在5000多篇BI Wiki文章中进行全文搜索

AI的内存/上下文

这 .claude/memory/ 目录包含Claude Code(和其他AI助手)在处理此项目时自动加载的结构化上下文文件:

文件 内容
MEMORY.md 所有内存文件的索引
project_arma3_mcp.md 架构、关键文件、PBO工作流程、陷阱
feedback_eden_spawning.md 强制性产卵规则:地面捕捉、水面、净空半径、船员撤离、航路点水/陆规则
user_profile.md 用户技术背景和偏好

如果你克隆这个仓库并用Claude Code打开它,这些文件将被自动拾取,不需要额外的配置。

从源头构建

重新打包PBO(修改SQF文件后)

# Close Arma 3 first
python tools/pack_pbo.py arma3_addon/addons/bridge /tmp/bridge.pbo
cp /tmp/bridge.pbo "K:/SteamLibrary/steamapps/common/Arma 3/@ArmaDevBridge/addons/bridge.pbo"

重建DLL(仅当您修改C++代码时)

从安装了MinGW-w64的WSL:

cd tools
bash build_dll_wsl.sh

或者在Windows上使用MSVC:

cd bridge_dll
cmake -B build -A x64
cmake --build build --config Release

然后,必须将编译后的DLL复制到Arma 3根目录,如下所示 arma3_mcp_bridge_x64.dll.

添加新的SQF函数

每个新的SQF功能 必须 注册于 两地 在 fn_init.sqf:

  1. uiNamespace setVariable ["ArmaDevBridge_fnc_X", compile preprocessFileLineNumbers ...]
  2. ArmaDevBridge_bridge_fnc_X = uiNamespace getVariable "ArmaDevBridge_fnc_X"

缺少任一步骤都会导致函数 nil 运行时→ 无声超时。

故障排除

状态指示器未出现在Eden编辑器中 核实一下 bridge.pbo 在...里 @ArmaDevBridge\addons\ 并且该mod是活动的。检查 %LOCALAPPDATA%\Arma 3\arma3_x64_*.rpt 为了 ArmaDevBridge 错误。

找不到DLL(红色指示器) DLL必须 arma3_mcp_bridge_x64.dll 在 根 Arma 3(旁边 arma3_x64.exe),不在插件文件夹中。

Claude Code未显示MCP工具

  • 验证 .mcp.json 指向正确的Python可执行文件: python.exe --version 应该返回3.9+。
  • 重新加载VS代码(Ctrl+Shift+P → “开发人员:重新加载窗口”)。
  • 确认 mcp 已安装: python -m mcp_server 不应显示导入错误。
  • 确保VS Code以管理员身份运行。

“网桥未连接”错误 Arma 3必须在伊甸园编辑器处于活动状态时打开(不在预览模式,也不在任务中)。检查管道是否存在:

[System.IO.Directory]::GetFiles("\\.\pipe\") | Select-String "arma3"

工具调用超时 管道已连接,但SQF没有响应。验证 EachFrame 已在日志中注册。如果添加了新的SQF函数,请确保它出现在 两者 部分 fn_init.sqf.

地下产卵或漂浮的实体 重新部署PBO——旧版本的 fn_createEntity.sqf 可能处于活动状态。

已知限制

  • 撤销: undo_last_action 是占位符;使用 Ctrl+Z 在编辑器中手动。
  • 预览模式:进入预览时,加载项卸载;返回编辑器时,桥会重新连接。
  • 一次一个客户:DLL同时只接受一个Python连接。
  • 战眼:专为本地编辑器使用而设计。与受BE保护的多人游戏不兼容。
  • 未命名的任务: save_mission 在新的未命名任务中,不会创建 .sqm 直到用户从编辑器中指定一个名称。

许可证

麻省理工学院


西班牙语

这是什么?

一个 servidor MCP(模型上下文协议) 它将人工智能助理(如VS代码中的克劳德代码)与武器3的伊甸园编辑器连接起来。您可以创建实体、移动对象、读取地形数据、搜索位置、查询BI Wiki等-所有这些都是通过与您的人工智能对话来实现的。

建筑

VS Code (Claude Code / cualquier cliente MCP)
        │  stdio / JSON-RPC 2.0
        ▼
Servidor Python MCP  (mcp_server/)
        │  Named Pipe  \\.\pipe\arma3_mcp_bridge
        ▼
DLL Bridge C++  (arma3_mcp_bridge_x64.dll)
        │  callExtension / RVExtensionRegisterCallback
        ▼
Arma 3 Eden Editor  (addon @ArmaDevBridge / SQF)

MCP服务器在ARMA 3之外运行。DLL使用命名的Windows管道充当桥梁。SQF插件在Eden Editor中运行,执行命令并在顶部栏中显示状态指示器。

先决条件

工具 最低版本 说明
Windows 10/11(64位) -- 强制性管理员权限 -见注释
Arma 3 2.02 Steam独立版
Python 3.9+ python.org
PyWin32 任何 pip install pywin32
Visual Studio Code 任何 具有任何与MCP兼容的IA- 如何向VS代码添加AI

为什么是管理员? ARMA 3默认以管理员身份运行,这意味着它创建的命名管道需要提升访问权限。VS Code(因此MCP服务器)也必须作为管理员运行,否则到管道的连接将被拒绝。

快速安装(5步)

REM 1. Clonar el repositorio
git clone https://github.com/YOUR_USER/arma3-eden-mcp "MCP Arma 3"
cd "MCP Arma 3"

REM 2. Instalar dependencias Python
pip install -r mcp_server/requirements.txt
pip install pywin32

REM 3. Empaquetar y desplegar el PBO (cerrar Arma 3 primero)
python tools/pack_pbo.py arma3_addon/addons/bridge bridge.pbo
copy bridge.pbo "K:\SteamLibrary\steamapps\common\Arma 3\@ArmaDevBridge\addons\bridge.pbo"

REM 4. Copiar la DLL a la raíz de Arma 3
copy arma3_addon\addons\bridge\arma3_mcp_bridge.dll "K:\SteamLibrary\steamapps\common\Arma 3\arma3_mcp_bridge_x64.dll"

REM 5. Configurar .mcp.json
copy .mcp.json.example .mcp.json
REM   Editar .mcp.json y reemplazar PATH_TO_PYTHON y PATH_TO_PROJECT

详细安装指南

步骤1-克隆和安装Python依赖项

git clone https://github.com/YOUR_USER/arma3-eden-mcp "MCP Arma 3"
cd "MCP Arma 3"
pip install -r mcp_server/requirements.txt
pip install pywin32

pywin32 它是Windows中命名管道的I/O所必需的,并且不在 requirements.txt 因为它是特定于平台的。

第2步-包装和部署PBO

PBO是ARMA 3的编译插件。它是从SQF源生成的,具有:

# Cerrar Arma 3 antes — el archivo queda bloqueado mientras el juego está abierto
python tools/pack_pbo.py arma3_addon/addons/bridge bridge.pbo
cp bridge.pbo "K:/SteamLibrary/steamapps/common/Arma 3/@ArmaDevBridge/addons/bridge.pbo"

如果不存在,则创建mod文件夹:

mkdir "K:\SteamLibrary\steamapps\common\Arma 3\@ArmaDevBridge\addons"

第3步-复制DLL

copy arma3_addon\addons\bridge\arma3_mcp_bridge.dll "K:\SteamLibrary\steamapps\common\Arma 3\arma3_mcp_bridge_x64.dll"

La DLL 必须 在…中 根 武器3(旁边 arma3_x64.exe),不在 @ArmaDevBridge/addons/.

步骤 4 — 设置 .mcp.json

copy .mcp.json.example .mcp.json

编辑 .mcp.json 并替换示例值:

{
  "mcpServers": {
    "arma3-eden": {
      "type": "stdio",
      "command": "C:\\Users\\TU_USUARIO\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
      "args": ["-m", "mcp_server"],
      "cwd": "C:\\Users\\TU_USUARIO\\Desktop\\MCP Arma 3",
      "env": {
        "ARMA3_BRIDGE_PIPE": "\\\\.\\pipe\\arma3_mcp_bridge",
        "ARMA3_BRIDGE_TIMEOUT": "30"
      }
    }
  }
}

要找到您的Python路径:打开终端并运行 where python 哦 py -c "import sys; print(sys.executable)".

第5步-以管理员的身份启动Arma 3和VS Code

  1. 右击 在蒸汽中的武器3中→属性→发射选项→添加 -mod=@ArmaDevBridge 或从命令行:

    "K:\SteamLibrary\steamapps\common\Arma 3\arma3_x64.exe" -mod=@ArmaDevBridge
    
  2. 打开 伊甸园编辑。状态指示器出现在顶部栏中:

    颜色 状态
    黄色 初始化
    绿色 桥激活,DLL连接
    红色 找不到DLL
    白色(闪光) 接收命令
  3. 右击 在VS代码中→“以管理员身份运行”

  4. 在VS代码中打开项目文件夹。Claude Code从检测MCP服务器 .mcp.json 自动。

  5. 验证连接:问克劳德 “桥连接了吗?” -必须回答 ok: true.

可用的MCP工具

实体

工具 描述
create_entity 创建实体(车辆、单位、对象、触发器……)。地面-自动捕捉(Z=0 ATL=地面)。创建为 Object 他们没有船员。
delete_entity 按其ID删除实体
move_entity 将实体移动到新位置
list_all_entities 列出任务中类型的所有实体
get_all_editor_objects 所有具有完整详细信息的对象(分页)
get_all_editor_objects_full 相同但没有分页(小型任务)
get_selected_entities 当前在编辑器中选择的实体

属性

工具 描述
set_attribute 修改 3DEN 属性 (skill, fuel, health, ammo, init, isPlayable…)
get_attribute 读取实体的特定属性
get_all_attributes 李 待办事项 伊甸园属性,包括库存/费用

搜索类

工具 描述
find_classname 按名称查找车辆/单位的确切类名
get_placeable_categories 列出可放置的类别/派别
search_placeable_objects 按名称或派别搜索可放置的对象类

任务

工具 描述
get_mission_info 任务信息(地形、作者、实体计数)
save_mission 保存任务(可选名称)
clear_mission 删除编辑器中的所有实体(使用Ctrl+Z可撤消)
undo_last_action 撤消最后一个动作
get_bridge_status 验证与武器3的连接

地形和地图

工具 描述
get_terrain_info 地形高度(ASL),如果是水,以及一个或多个位置的表面类型
get_roads 靠近位置的路段(类型、宽度,如果是桥梁)
get_map_objects 附近地形的物体:建筑物、树木、墙壁、岩石、道路
find_location 在地图上搜索有名字的位置(城市、城镇、山丘、机场……)

维基

工具 描述
wiki_lookup 从BI Wiki的本地副本查询ARMA 3的SQF命令或函数
wiki_search 在BI Wiki上搜索5000多篇文章的全文

人工智能的记忆/背景

目录 .claude/memory/ 包含Claude Code(和其他IA向导)在处理该项目时自动加载的结构化上下文文件:

文件 内容
MEMORY.md 所有内存文件的索引
project_arma3_mcp.md 架构,关键文件,PBO流,Gotchas
feedback_eden_spawning.md 强制产卵规则:地面捕捉、水面、净空半径、船员处置、陆水航路点规则
user_profile.md 用户技术概况和偏好

如果您克隆这个存储库并用Claude Code打开它,这些文件将自动加载-不需要任何额外的设置。

从源代码编译

重新打包PBO(修改SQF文件后)

# Cerrar Arma 3 primero
python tools/pack_pbo.py arma3_addon/addons/bridge /tmp/bridge.pbo
cp /tmp/bridge.pbo "K:/SteamLibrary/steamapps/common/Arma 3/@ArmaDevBridge/addons/bridge.pbo"

重新编译DLL(仅当您修改C++代码时)

从安装了MinGW-W64的WSL:

cd tools
bash build_dll_wsl.sh

Windows与MSVC的关系:

cd bridge_dll
cmake -B build -A x64
cmake --build build --config Release

编译的DLL必须作为 arma3_mcp_bridge_x64.dll.

向桥添加新的SQF函数

所有新的SQF函数 必须 注册 两个地方 的 fn_init.sqf:

  1. uiNamespace setVariable ["ArmaDevBridge_fnc_X", compile preprocessFileLineNumbers ...]
  2. ArmaDevBridge_bridge_fnc_X = uiNamespace getVariable "ArmaDevBridge_fnc_X"

如果两者中的任何一个缺失,则函数为 nil 在运行时→无声超时。

解决问题

该指标不会出现在Eden Editor中 检查 bridge.pbo 他在 @ArmaDevBridge\addons\ 国防部很活跃。检查 %LOCALAPPDATA%\Arma 3\arma3_x64_*.rpt 寻找错误 ArmaDevBridge.

找不到DLL(红色指示灯) DLL必须是 arma3_mcp_bridge_x64.dll en la 根 武器3(旁边 arma3_x64.exe),不在插件文件夹中。

Claude Code不显示MCP工具

  • 检查 .mcp.json 指向正确的Python: python.exe --version 黛贝达3.9+。
  • 充值与代码(Ctrl+Shift+P → “开发人员:重新加载窗口”)。
  • 确认 mcp 已安装 : python -m mcp_server 您不应给出导入错误。
  • 确保VS代码以管理员身份运行。

错误“网桥未连接” Arma 3必须在Eden Editor处于活动状态时打开(不是在预览模式下,不是在任务中)。验证PowerShell中的管道:

[System.IO.Directory]::GetFiles("\\.\pipe\") | Select-String "arma3"

工具超时 管道连接,但SQF没有响应。验证 EachFrame 他在日志中注册了。如果添加了新的SQF函数,请确保它出现在 双方 的部分 fn_init.sqf.

实体出现在地下或漂浮 重新部署PBO-旧版本的 fn_createEntity.sqf.

已知限制

  • 撤销: undo_last_action 非占位符;美国 Ctrl+Z 在编辑器中手动。
  • 操作预览:进入预览后,加载项被下载;桥梁在返回出版商时重新连接。
  • 一次一个客户:DLL接受单个并发Python连接。
  • 战眼:专为编辑器中的本地使用而设计。不兼容受BE保护的多人游戏。
  • 无名任务: save_mission 在一个没有名字的新任务中,它不会创建文件 .sqm 在磁盘上,直到用户从出版商给它起名字。

许可证

麻省理工学院