Skip to main content
Glama

CU-MCP-Bridge

Мод BepInEx + Python MCP-сервер, который позволяет ИИ-ассистентам управлять игровым процессом Casualties Unknown в реальном времени через именованный канал.

Требования

  • Windows 10/11

  • Casualties Unknown (Steam)

  • Python 3.10+

  • .NET SDK (для сборки мода)

  • BepInEx, установленный в игру

Related MCP server: Unity-MCP

Быстрый старт

1. Установка мода

Скопируйте два DLL-файла из mod/ в папку BepInEx/plugins/ вашей игры:

<game directory>/BepInEx/plugins/CU-MCP-Mod.dll
<game directory>/BepInEx/plugins/Newtonsoft.Json.dll

2. Установка зависимостей Python

pip install -r requirements.txt

3. Настройка ИИ-клиента

Добавьте в вашу MCP-конфигурацию (например, opencode.json):

{
  "mcp": {
    "servers": {
      "cu-mcp-bridge": {
        "type": "stdio",
        "command": "python",
        "args": ["src/bridge_server/server.py"],
        "cwd": "/path/to/CU-MCP-Bridge"
      }
    }
  }
}

4. Игра

  1. Запустите игру и войдите в уровень

  2. Запустите Python-сервер: python src/bridge_server/server.py

  3. Попросите вашего ИИ-ассистента управлять игроком

Порядок важен: сервер должен запускаться после запуска игры.

Сборка из исходного кода

# Build the C# mod
dotnet build BepInEx/CU-MCP-Mod.csproj -c Release

# Deploy to game (kills the game process, rebuilds, copies DLL)
.\deploy.ps1 -Action deploy

Результат: BepInEx/bin/Release/net472/CU-MCP-Mod.dll

Архитектура

AI Client (opencode)
        |
    stdio (JSON-RPC)
        |
Python FastMCP Server (src/bridge_server/)
        |
    Named Pipe (win32pipe, newline-delimited JSON)
        |
C# BepInEx Mod (BepInEx/, inside Unity game)
        |
    Unity Game (Casualties Unknown)

Взаимодействие

  • ИИ -> Игра: Команды отправляются через именованный канал и выполняются в главном потоке Unity

  • Игра -> ИИ: Состояние игрока и результаты запросов возвращаются по тому же каналу

  • Блокировка: Каждая команда блокируется, пока мод не сообщит о завершении (успех/ошибка/таймаут)

Структура проекта

CU-MCP-Bridge/
├── BepInEx/                # C# mod source (BepInEx plugin)
│   ├── Executor/           # Order execution, pathfinding, movement
│   ├── Collector/          # Game state collection (player, environment)
│   ├── Contingency/        # Local condition-action rules
│   ├── Pipe/               # Named pipe client + protocol
│   ├── AIPlayerManager.cs  # AI companion creation/destruction
│   ├── BridgePlugin.cs     # Entry point, tick loop
│   └── DebugGUI.cs         # F6 debug panel
├── src/bridge_server/      # Python MCP server
│   ├── server.py           # MCP tool definitions
│   ├── state_manager.py    # Pipe reader, state cache
│   ├── order_manager.py    # Order queue
│   ├── pipe_server.py      # Named pipe server (win32pipe)
│   └── contingency.py      # Contingency rule manager
├── tests/                  # Unit & integration tests
├── deploy.ps1              # Build + deploy script
└── requirements.txt        # Python dependencies

Инструменты MCP

Инструмент

Описание

get_game_state

Состояние игрока (позиция, здоровье, инвентарь) + снимок окружения

get_map_info

Информация о местности и сущностях вокруг игрока

get_nearby_items

Список выброшенных предметов рядом с игроком

query_position

Запрос сущностей/местности по конкретной мировой координате

search_blocks

Поиск местности по названию материала (например, «sand», «rock»)

move_to

Переместить активного игрока в мировую позицию

move_to_player

Переместить ИИ-компаньона к игроку-человеку

follow

Заставить ИИ-компаньона следовать за человеком

jump

Прыжок (поддерживается горизонтальное направление)

use_item

Использовать предмет из инвентаря

pick_up_item

Подобрать находящийся рядом предмет (по имени или ближайший)

drop_item

Выбросить предмет из инвентаря

sleep

Отдых для восстановления энергии

heal_ai

Вылечить конкретную конечность ИИ-компаньона

create_ai_player

Клонировать ИИ-компаньона рядом с человеком

destroy_ai_player

Удалить ИИ-компаньона

set_contingency

Задать правила «условие-действие» (например, «лечить, если HP < 30%»)

update_contingency

Обновить правила «условие-действие» во время выполнения

user_interact

Вмешательство человека с наивысшим приоритетом

Известные проблемы

  • Совместимость со скин-модами: Установка сторонних скин-модов (например, «Skin Sync») может привести к тому, что у ИИ-компаньона появится дублирующийся хвост, повторяющий хвост игрока-человека. Это проблема совместимости со скин-модами и не возникает в оригинальной игре.

Лицензия

MIT

Related MCP Connectors

Related MCP Servers