# Funplay Unreal MCP

Connects an AI client to a running Unreal Editor, so the assistant can place actors, build levels and Blueprints, and send back screenshots. Handy when you would rather describe a scene than drag it together.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 7
- Author: FunplayAI
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/FunplayAI/funplay-unreal-mcp
- Updated: 2026-06-23
- HTML: https://affpapa.org/en/nevibecode/mcp/funplay-unreal-mcp

## What it does

Two pieces make it work. A pure-Python plugin sits inside the editor — nothing to compile — living in `Plugins/FunplayMCP/` and pulling in the engine's Python Editor Script Plugin. A small Node.js bridge, `funplay-unreal-mcp`, is what your client actually talks to: Claude, Codex, Cursor, Copilot, Windsurf, Cline, Zed or Gemini CLI.

The workhorse is `execute_python`, which runs a snippet inside the editor. Alongside it, `search_api`, `describe_class` and `inspect_object` read the docs shipped with the `unreal` module, so the assistant works from the real API rather than guessing at it. The default `core` profile exposes 32 tools; `full` opens up 97. Resources such as `unreal://project/context` and prompt templates like `level_review` come with it.

The server binds `http://127.0.0.1:8765/` and falls back to a free port if that one is taken. Its auth token lives in `<YourProject>/Saved/FunplayMCP/funplay_mcp_settings.json`; POST requests without it are rejected. Editor only — packaged games don't carry the server. Safety checks for `execute_python` are on by default, and `safety_checks=false` overrides them for a single call.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `FUNPLAY_UNREAL_MCP_URL`, `UNREAL_MCP_URL`, `FUNPLAY_UNREAL_MCP_TOKEN`, `UNREAL_MCP_TOKEN` — keys and tokens: ask the human for the values, never commit them or put them in shared files.
- Works with: Unreal Engine

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env FUNPLAY_UNREAL_MCP_URL=<FUNPLAY_UNREAL_MCP_URL> --env UNREAL_MCP_URL=<UNREAL_MCP_URL> --env FUNPLAY_UNREAL_MCP_TOKEN=<FUNPLAY_UNREAL_MCP_TOKEN> --env UNREAL_MCP_TOKEN=<UNREAL_MCP_TOKEN> --transport stdio funplay-unreal-mcp -- npx -y funplay-unreal-mcp
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add funplay-unreal-mcp --env FUNPLAY_UNREAL_MCP_URL=<FUNPLAY_UNREAL_MCP_URL> --env UNREAL_MCP_URL=<UNREAL_MCP_URL> --env FUNPLAY_UNREAL_MCP_TOKEN=<FUNPLAY_UNREAL_MCP_TOKEN> --env UNREAL_MCP_TOKEN=<UNREAL_MCP_TOKEN> -- npx -y funplay-unreal-mcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "funplay-unreal-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "funplay-unreal-mcp"
            ],
            "env": {
                "FUNPLAY_UNREAL_MCP_URL": "<FUNPLAY_UNREAL_MCP_URL>",
                "UNREAL_MCP_URL": "<UNREAL_MCP_URL>",
                "FUNPLAY_UNREAL_MCP_TOKEN": "<FUNPLAY_UNREAL_MCP_TOKEN>",
                "UNREAL_MCP_TOKEN": "<UNREAL_MCP_TOKEN>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "funplay-unreal-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "funplay-unreal-mcp"
            ],
            "env": {
                "FUNPLAY_UNREAL_MCP_URL": "<FUNPLAY_UNREAL_MCP_URL>",
                "UNREAL_MCP_URL": "<UNREAL_MCP_URL>",
                "FUNPLAY_UNREAL_MCP_TOKEN": "<FUNPLAY_UNREAL_MCP_TOKEN>",
                "UNREAL_MCP_TOKEN": "<UNREAL_MCP_TOKEN>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e FUNPLAY_UNREAL_MCP_URL=<FUNPLAY_UNREAL_MCP_URL> -e UNREAL_MCP_URL=<UNREAL_MCP_URL> -e FUNPLAY_UNREAL_MCP_TOKEN=<FUNPLAY_UNREAL_MCP_TOKEN> -e UNREAL_MCP_TOKEN=<UNREAL_MCP_TOKEN> funplay-unreal-mcp npx -y funplay-unreal-mcp
```
Replace <…> with your own values

## When to use it
- lay out actors and lighting from a written scene description
- build a level and a Blueprint without dragging nodes by hand
- grab a Play-In-Editor screenshot and hand it to the assistant
- run arbitrary Python in the editor when no dedicated tool fits
- check the real signature of an `unreal` class instead of guessing

## Example prompts
- Call `get_project_info` and tell me which project is open.
- Find the API class for static meshes and describe its methods.

## Similar
- [Pascal 3D Editor](https://affpapa.org/en/nevibecode/mcp/pascal-3d-editor.md) — MCP server · ★ 25085
- [Unity-MCP](https://affpapa.org/en/nevibecode/mcp/unity-mcp.md) — MCP server · ★ 4523
- [mcp](https://affpapa.org/en/nevibecode/mcp/sceneview-mcp.md) — MCP server · ★ 1348
- [Gearboy MCP Server](https://affpapa.org/en/nevibecode/mcp/gearboy-mcp-server.md) — MCP server · ★ 1219
- [ChiR24-unreal_mcp_server](https://affpapa.org/en/nevibecode/mcp/chir24-unreal-mcp-server.md) — MCP server · ★ 975
- [Nova3D](https://affpapa.org/en/nevibecode/mcp/nova3d.md) — MCP server · ★ 733

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
