Skip to main content
Glama
README.md
# unreal-mcp
> MCP server for Unreal Engine that uses Unreal Python Remote Execution

![hero](https://github.com/runreal/unreal-mcp/raw/refs/heads/main/hero.png)

![gif](https://github.com/runreal/unreal-mcp/raw/refs/heads/main/mcp.gif)

<p align="center">
  <a href="https://x.com/runreal_dev">Twitter</a>
  ยท
  <a href="https://discord.gg/6ZhWVU5W47">Discord</a>
</p>

<div align="center">
  <a href="LICENSE"><img alt="license" src="https://img.shields.io/badge/LICENSE-MIT-GREEN?style=flat-square"></a>
</div>

## โšก Differences

This server does not require installing a new UE plugin as it uses the built-in Python remote execution protocol.

Adding new tools/features is much faster to develop since it does not require any C++ code.

It can support the full [Unreal Engine Python API](https://dev.epicgames.com/documentation/en-us/unreal-engine/python-api)


## โš ๏ธ Note

- This is not an official Unreal Engine project.
- Your AI agents or tools will have full access to your Editor.
- Review any changes your Client suggests before you approve them.

## ๐Ÿ“ฆ Installation

#### ๐Ÿ“‹ Requirements
- ๐Ÿ”ง Unreal Engine 5.4+ (verified, may work with earlier versions)
- ๐ŸŸข Node.js with npx
- ๐Ÿค– MCP Client (Claude, Cursor, etc.)

1. Setting up your Editor:
   - Open your Unreal Engine project
   - Go to `Edit` -> `Plugins`
   - Search for "Python Editor Script Plugin" and enable it
   - Restart the editor if prompted
   - Go to `Edit` -> `Project Settings` 
   - Search for "Python" and enable the "Enable Remote Execution" option

  ![enable plugin](https://github.com/runreal/unreal-mcp/raw/refs/heads/main/img1.png)
  ![enable remote execution](https://github.com/runreal/unreal-mcp/raw/refs/heads/main/img2.png)

2. Set up your Client:
   - Edit your Claude (or Cursor) config
```json
{
  "mcpServers": {
    "unreal": {
      "command": "npx",
      "args": [
        "-y",
        "@runreal/unreal-mcp"
      ]
    }
  }
}
```

### ๐Ÿ”ง Troubleshooting

If you get an error similar to `MCP Unreal: Unexpected token 'C', Connection...` it means that the mcp-server was not able to connect to the Unreal Editor.

- Make sure that the Python Editor Script Plugin is enabled and that the Remote Execution option is checked in your project settings.
- Try also changing your bind address from `127.0.0.1` to `0.0.0.0` but note that this will allow connections from your local network.
- Restart your Unreal Editor fully.
- Fully close/open your client (Claude, Cursor, etc.) to ensure it reconnects to the MCP server. (`File -> Exit` on windows).
- Check your running processes and kill any zombie unreal-mcp Node.js processes.


## ๐Ÿ› ๏ธ Available Tools

| Tool | Description |
|------|-------------|
| `set_unreal_engine_path` | Set the Unreal Engine path |
| `set_unreal_project_path` | Set the Project path |
| `get_unreal_engine_path` | Get the current Unreal Engine path |
| `get_unreal_project_path` | Get the current Unreal Project path |
| `editor_run_python` | Execute any python within the Unreal Editor |
| `editor_list_assets` | List all Unreal assets |
| `editor_export_asset` | Export an Unreal asset to text |
| `editor_get_asset_info` | Get information about an asset, including LOD levels for StaticMesh and SkeletalMesh assets |
| `editor_get_asset_references` | Get references for an asset |
| `editor_console_command` | Run a console command in Unreal |
| `editor_project_info` | Get detailed information about the current project |
| `editor_get_map_info` | Get detailed information about the current map/level |
| `editor_search_assets` | Search for assets by name or path with optional class filter |
| `editor_get_world_outliner` | Get all actors in the current world with their properties |
| `editor_validate_assets` | Validate assets in the project to check for errors |
| `editor_create_object` | Create a new object/actor in the world |
| `editor_update_object` | Update an existing object/actor in the world |
| `editor_delete_object` | Delete an object/actor from the world |
| `editor_take_screenshot` | Take a screenshot of the Unreal Editor |
| `editor_move_camera` | Move the viewport camera to a specific location and rotation for positioning screenshots |

## ๐Ÿค Contributing

Please feel free to open issues or pull requests. Contributions are welcome, especially new tools/commands.

<a href="https://glama.ai/mcp/servers/@runreal/unreal-mcp">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/@runreal/unreal-mcp/badge" />
</a>

### License MIT

TDQS

B3.1/5.0

Scored across 20 tools

Disambiguation4/5

Most tools have distinct purposes, such as editor_create_object for creation and editor_delete_object for deletion, with clear boundaries. However, some tools like editor_get_asset_info and editor_get_asset_references could be slightly overlapping in providing asset metadata, but descriptions help differentiate them.

Naming Consistency5/5

Tool names follow a consistent snake_case pattern with a clear 'editor_' prefix for most tools, and a 'get_'/'set_' pattern for path-related tools. This uniformity makes the set predictable and easy to navigate, with no mixing of conventions.

Tool Count4/5

With 20 tools, the count is slightly high but reasonable for an Unreal Editor server, covering a broad range of operations from asset management to world editing. It might feel a bit heavy, but each tool appears to serve a specific function in the domain.

Completeness5/5

The tool set provides comprehensive coverage for Unreal Editor tasks, including CRUD operations for objects (create, update, delete), asset management (list, search, validate), project and map info, and utilities like screenshots and console commands. No obvious gaps are present for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessUnresponsive