HullForge MCP Connector
Соединитель HullForge MCP
Серверная часть MCP для HullForge, которая позволяет Claude управлять запущенным редактором Unreal Engine 5.
Лицензия MIT. Этот репозиторий содержит только соединитель.
Что это такое, а что нет
HullForge состоит из двух программ.
Этот репозиторий | Соединитель. Общается с Claude по протоколу MCP через stdio и с редактором по протоколу JSON с префиксом длины через loopback. Лицензия MIT. |
Плагин редактора | Отдельный проприетарный плагин для Unreal Engine, который содержит все инструменты и выполняет всю работу. Лицензируется по собственной EULA и распространяется через Fab. В этом репозитории его нет. |
Соединитель не содержит никакой логики Unreal Engine. Он отвечает за транспортировку, обрамление, обнаружение сессий и поверхность MCP. Сам по себе он бесполезен: без запущенного редактора он предоставляет ровно один инструмент, который сообщает, что редактор не запущен.
Related MCP server: unreal-engine-mcp
Почему это отдельный процесс
Встраивание MCP-сервера непосредственно в плагин на C++ было бы одной программой вместо двух, что звучит проще. Но это не так.
Поверхность MCP меняется гораздо чаще, чем привязки к движку. Разделение означает, что уровень протокола можно перестроить за секунды без перекомпиляции C++ модуля и перезапуска редактора.
Игровой поток редактора бесценен. Всё, что касается UObject, должно выполняться в нём,
и всё медленное в нём замораживает редактор. Вынос протокола, обрамления, повторных попыток и
транспортировки наружу означает, что в этот поток направляется только реальная работа.
Изоляция сбоев. Ошибка в обработке протокола приводит к падению небольшого внешнего процесса, а не редактора с несохранённой работой.
Как он находит редактор
Ничего не настраивается. Каждый запущенный редактор регистрирует себя в общепользовательском реестре:
%LOCALAPPDATA%/HullForge/sessions/<project>-<pid>.jsonКаждая запись содержит порт, токен сессии, имя и путь к проекту, а также идентификатор процесса. Соединитель сканирует этот каталог, фильтрует по признаку активности процесса и отдаёт предпочтение редактору, к которому уже подключён, чтобы открытие второго редактора не привело к незаметному переключению цели во время разговора.
Он объявляет возможность MCP listChanged и следит за этим реестром, так что инструменты появляются,
когда редактор открывается, и исчезают, когда он закрывается, без перезапуска клиента.
Это важно, потому что MCP-серверы запускаются клиентом: соединитель, который запускается до редактора,
в противном случае навсегда сообщал бы пустой список инструментов, так как у клиента нет причин
запрашивать его снова.
Один инструмент, hf_bridge_status, реализован здесь, а не в редакторе. Поэтому он всегда доступен,
и "нет инструментов" никогда не является молчаливым состоянием.
Надёжность
Две вещи здесь существуют, потому что альтернатива приводит к потере работы.
Идемпотентность. Каждый изменяющий вызов содержит operation_id. Соединитель генерирует один
идентификатор на вызов и повторно использует его при повторной попытке транспортировки, так что
разорванное соединение не может применить одно и то же изменение дважды. Редактор распознаёт
повторный идентификатор и возвращает исходный результат.
Честные состояния ошибок. Вызов, который определённо не удался, и вызов, результат которого неизвестен, — это разные ответы, и они сообщаются по-разному. "Неизвестно" означает, что соединитель перестал ждать, а не то, что ничего не произошло, и вызывающему коду сообщается, что нужно проверить перед повторной попыткой.
Разработка
Требуется Python 3.13 и uv.
uv sync
uv run pytest # unit tests, no editor needed
uv run pytest -m integration # needs a running editor with the pluginСборка распространяемого бинарного файла:
.\Build-Sidecar.ps1 # Nuitka, for release
.\Build-Sidecar.ps1 -Fast # PyInstaller, local iteration onlyBuild-Sidecar.ps1 объясняет, почему сборки для релиза используют Nuitka вместо
PyInstaller, и запускает проверку утечек после каждой сборки, а не предполагает результат.
Установка
Большинству людей не нужно собирать это. Установите готовый пакет .mcpb, который
содержит скомпилированный бинарный файл и не требует Python.
В Claude Desktop: Настройки > Расширения > Дополнительные настройки > Разработчик расширений > Установить расширение...
Двойной щелчок по .mcpb также работает, если в ОС зарегистрирована ассоциация
для него, но меню выше надёжно везде.
Полные инструкции: jigwright.com/hullforge/docs
Конфиденциальность
Соединитель ничего не собирает, ничего не передаёт и не обращается ни к одному серверу. Вся связь осуществляется через loopback. Полная политика: jigwright.com/privacy.
Поддержка
Документация: https://jigwright.com/hullforge/docs
Вопросы в этом репозитории, касающиеся соединителя
Электронная почта support@jigwright.com по любым вопросам о плагине редактора
Лицензия
MIT, см. LICENSE. Это относится только к соединителю в этом репозитории. Плагин редактора HullForge является отдельным проприетарным продуктом на своих собственных условиях.
Available Tools
1 toolhf_bridge_statusBridge StatusARead-onlyIdempotent
Whether HullForge is connected to a running Unreal editor, and what to do if not. This tool is always available even when no editor is open. When an editor starts, the rest of the tools appear automatically - there is no need to restart the client.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds behavioral context beyond this: the tool is always available, and describes the automatic appearance of other tools when an editor starts. This explains the tool's behavior in the broader system workflow.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and front-loaded with the core purpose. It is efficient and contains no filler. Could be slightly more concise by removing the second sentence about 'restart the client' if not essential, but overall it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description adequately covers what the tool does and its context in the toolset. It explains when it is used and how it relates to other tools. The only potential gap is not describing what the return value looks like, but since there is no output schema, the description still provides sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema already fully documents that. The description does not need to add parameter information since there are none. A score of 5 is appropriate as there is nothing missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates the tool checks connection status to a running Unreal editor and provides guidance if not connected. It specifies the verb ('Whether... connected') and the resource ('HullForge to Unreal editor bridge'), making the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool ('always available even when no editor is open') and what happens when an editor starts (other tools appear automatically). It implies the tool is for checking connection status and not for initiating connections, which is useful guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
hf_bridge_status
TDQS
Scored across 1 tool
With only a single tool, there is no possibility of overlapping purposes or confusion. The tool's purpose is clearly defined as a status check for the HullForge-Unreal connection.
The single tool name 'hf_bridge_status' follows a consistent snake_case convention and is descriptive of its function. There are no other tools to create inconsistency.
The server exposes only one tool for a connector that is expected to provide interaction with a running Unreal editor. The description hints at additional tools appearing dynamically, but the current set is extremely limited, making it a severe mismatch for the server's apparent scope.
The server's purpose is to bridge HullForge and Unreal Editor, yet the only tool available is a status check. There are no tools to perform any actual actions (e.g., launching assets, executing commands, or modifying editor state), leaving critical gaps that render the surface incomplete.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Cloud-hosted MCP server for durable AI memory
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceA two-process MCP bridge for Unreal Editor for Fortnite that lets Claude Code, Cursor, and other MCP clients drive a live UEFN editor safely.9-
- AlicenseBqualityCmaintenanceAn MCP server that gives AI agents broad control over Unreal Engine 5.7, enabling actor/asset/level management, Blueprint and material creation, screenshots, automation, and arbitrary editor Python execution.35MIT
- AlicenseNot gradedqualityAmaintenanceOpen-source MCP server connecting AI agents (Claude, Cursor, GitHub Copilot, Gemini, and more) to Unreal Engine 5.7, editor and runtime (C++ plugin + .NET sidecar).48Apache 2.0
- AlicenseBqualityBmaintenanceAn MCP server that lets an AI agent drive Unreal Engine 5: create projects, import assets, build levels and Blueprints, configure replication, compile C++, run Play In Editor and package the game.100150 PyPI5MIT