Native C++ Model Context Protocol (MCP) plugin for Unreal Engine 5.6+
Language: English | 简体中文
UEBridgeMCP is a native C++ Unreal Engine plugin that exposes the Unreal Editor to any MCP-compatible AI client over Streamable HTTP. It embeds the MCP server directly inside the editor process, so tools can inspect and edit Blueprints, levels, assets, materials, widgets, StateTrees, PIE sessions, and build workflows without a separate bridge process.
Acknowledgments: This project is a heavily extended and optimized fork of yes-ue-mcp by softdaddy-o. Special thanks to the original author for the foundational MCP HTTP server architecture.
Current release: v1.19.0
Highlights:
- Native UE integration - uses Unreal's built-in HTTP stack and editor APIs
- 46 built-in tools - the authoritative list lives in
Source/UEBridgeMCPEditor/Private/UEBridgeMCPEditor.cpp - Cross-client compatible - works with Claude Code, Claude Desktop, Cursor, Continue, Windsurf, and other MCP clients
- Project-agnostic - no game-specific coupling; can be moved between UE 5.6+ C++ projects
- Extensible - add custom tools by subclassing
UMcpToolBase
| Document | Description |
|---|---|
| Tools Reference | Full list of the built-in tools, grouped by workflow and subsystem |
| Tool Development | How to implement, register, validate, and maintain your own MCP tools |
| Troubleshooting | Known failure modes, connection issues, PIE caveats, and debugging steps |
| Architecture | Module layout, request lifecycle, registry warmup, and threading model |
| Chinese Documentation Index | Chinese landing page with links to the translated docs |
- Unreal Engine 5.6+
- A C++ Unreal project (Blueprint-only projects should be converted by adding any C++ class)
- Core plugin dependencies enabled in
UEBridgeMCP.uplugin:EditorScriptingUtilitiesGameplayAbilitiesStateTreeGameplayStateTree
PythonScriptPluginpowersrun-python-script. The plugin descriptor marks it optional, but the current source build links against it directly inSource/UEBridgeMCPEditor/UEBridgeMCPEditor.Build.cs, so keep it enabled unless you intentionally remove Python tooling.
- Copy the plugin into your project:
<YourProject>/Plugins/UEBridgeMCP/
- Enable it in your
.uproject:
{
"Plugins": [
{ "Name": "UEBridgeMCP", "Enabled": true }
]
}- Regenerate project files and build your editor target.
- Launch the editor and confirm the module loads successfully.
Server settings live in Config/DefaultUEBridgeMCP.ini:
[/Script/UEBridgeMCPEditor.McpServerSettings]
ServerPort=8080
bAutoStartServer=true
BindAddress=127.0.0.1
LogLevel=LogImportant: on Windows, prefer 127.0.0.1 instead of localhost. Some clients resolve localhost to IPv6 ([::1]) while the server commonly binds IPv4, which causes avoidable connection failures.
Any MCP client that supports HTTP transport can connect. Examples:
Claude Code CLI
claude mcp add --transport http unreal-engine http://127.0.0.1:8080/mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"unreal-engine": {
"url": "http://127.0.0.1:8080/mcp"
}
}
}Cursor (.cursor/mcp.json)
{
"mcpServers": {
"unreal-engine": {
"url": "http://127.0.0.1:8080/mcp"
}
}
}VS Code Continue (.continue/config.json)
{
"mcpServers": [
{
"name": "unreal-engine",
"transport": {
"type": "http",
"url": "http://127.0.0.1:8080/mcp"
}
}
]
}Use a tools/list request to confirm the server is reachable:
curl -s -X POST http://127.0.0.1:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'If the plugin is running correctly, the response should contain the registered tool set for the current editor session.
The authoritative registration site is:
Source/UEBridgeMCPEditor/Private/UEBridgeMCPEditor.cpp
At v1.19.0, the plugin registers 46 built-in tools across the following groups:
| Group | Count | Examples |
|---|---|---|
| Query and inspection | 15 | query-blueprint-summary, query-asset, get-asset-diff, find-references, get-logs |
| Creation and editing | 14 | create-asset, add-widget, edit-blueprint-graph, edit-level-batch, apply-material |
| StateTree | 5 | query-statetree, add-statetree-state, add-statetree-transition |
| PIE, scripting, build, and RPC | 8 | run-python-script, trigger-live-coding, pie-session, pie-input, wait-for-world-condition, call-function |
| High-level orchestration | 4 | blueprint-scaffold-from-spec, query-gameplay-state, auto-fix-blueprint-compile-errors, generate-level-structure |
See Tools Reference for the full list and per-tool summaries.
MCP Client
-> HTTP POST /mcp
-> UEBridgeMCPEditor module
-> FMcpServer
-> FMcpToolRegistry
-> UMcpToolBase-derived tools
-> Unreal Editor subsystems / assets / worlds / PIE
The plugin ships two modules:
UEBridgeMCP- runtime protocol types, schema helpers, base classes, and tool registryUEBridgeMCPEditor- editor-only server, subsystem integration, built-in tools, and toolbar/status integration
See Architecture for the full lifecycle, warmup behavior, and threading constraints.
To add a new tool:
- Create a new
UMcpToolBasesubclass underSource/UEBridgeMCPEditor/Public/Tools/andPrivate/Tools/ - Override
GetToolName,GetToolDescription,GetInputSchema,GetRequiredParams, andExecute - Register the class in
FUEBridgeMCPEditorModule::RegisterBuiltInTools() - Rebuild or trigger Live Coding
- Add automated validation if your branch or repo contains a test harness; otherwise document a focused live-editor validation recipe such as a
tools/listortools/callrequest
See Tool Development for a fuller guide and recommended implementation rules.
UEBridgeMCP follows semantic versioning for public releases.
- Keep
VersionNameinUEBridgeMCP.upluginandUEBRIDGEMCP_VERSIONinSource/UEBridgeMCP/Public/UEBridgeMCP.hidentical. - Bump both in the same PR when public tool names, schemas, defaults, or externally visible behavior changes.
- Update
CHANGELOG.mdandRELEASE_NOTES.mdalongside the version bump.
Start with Troubleshooting if you hit any of these problems:
- The client cannot connect to
http://127.0.0.1:8080/mcp tools/listis empty or missing expected tools- PIE start/stop appears stuck
- Python execution fails or crashes the editor
- Live Coding or rebuild operations do not reflect recent code changes
- Multiple UE projects are fighting over the same server port
GNU General Public License v3.0 - see LICENSE for details.
