使用说明
使用任何兼容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代码
-
右击 Arma 3在蒸汽中→ 属性→ 启动选项→ add
-mod=@ArmaDevBridge或者从命令行启动:"K:\SteamLibrary\steamapps\common\Arma 3\arma3_x64.exe" -mod=@ArmaDevBridge -
打开 伊甸园编辑。状态指示器出现在顶部栏中:
颜色 状态 黄色 正在初始化 绿色 网桥处于活动状态,DLL已连接 红色 DLL未找到 白色(闪烁) 收到命令 -
右击 VS Code→ “以管理员身份运行”
-
在VS Code中打开项目文件夹。Claude Code从以下位置检测到MCP服务器
.mcp.json自动。 -
验证连接:询问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:
uiNamespace setVariable ["ArmaDevBridge_fnc_X", compile preprocessFileLineNumbers ...]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
-
右击 在蒸汽中的武器3中→属性→发射选项→添加
-mod=@ArmaDevBridge或从命令行:"K:\SteamLibrary\steamapps\common\Arma 3\arma3_x64.exe" -mod=@ArmaDevBridge -
打开 伊甸园编辑。状态指示器出现在顶部栏中:
颜色 状态 黄色 初始化 绿色 桥激活,DLL连接 红色 找不到DLL 白色(闪光) 接收命令 -
右击 在VS代码中→“以管理员身份运行”
-
在VS代码中打开项目文件夹。Claude Code从检测MCP服务器
.mcp.json自动。 -
验证连接:问克劳德 “桥连接了吗?” -必须回答
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:
uiNamespace setVariable ["ArmaDevBridge_fnc_X", compile preprocessFileLineNumbers ...]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在磁盘上,直到用户从出版商给它起名字。
许可证
麻省理工学院
