Guide

How to set up the UEFN MCP server

Since 42.00, UEFN has an MCP server built into the editor. It lets an AI agent like Claude Code or Cursor read your Verse, place and edit devices, change assets and run play sessions in the project you have open. It runs on your own PC, and setup takes about five minutes.

What you need

1. Turn on Python Editor Scripting

Open Project Settings, go to Beta Access and turn on Python Editor Scripting. You don't need to restart UEFN.

Several toolsets are built on Python and only load with it on, including programmatic scripts and Execute Python, which an agent uses for batch work like editing dozens of actors in one call.

2. Start the server

  1. Go to Edit, then Editor Preferences.
  2. Open Agentic Workflows, then Model Context Protocol.
  3. Tick Auto Start Server, so it starts every time UEFN opens.
  4. Click Start Server. The status should read Running - http://127.0.0.1:8000/mcp.

The server only listens on your own PC. These are your editor preferences, so they apply to every project you open.

3. Connect your agent

An agent finds the server through a .mcp.json file in the folder you start it from. There are two ways to get one.

Let UEFN write it. On the same Model Context Protocol page, pick your agent under Client Selection and click Generate Client Config. UEFN saves .mcp.json in your Fortnite\FortniteGame install folder. Start your agent from that folder.

Write it yourself. Save this as .mcp.json in any folder you like, for example your project folder next to its .uefnproject file:

{
  "mcpServers": {
    "unreal-mcp": { "type": "http", "url": "http://127.0.0.1:8000/mcp" }
  }
}

Then open a terminal in that folder and start your agent. For Claude Code, that's:

claude

Type /mcp to check that unreal-mcp shows as connected.

4. Try it

Start small and specific. A few prompts from Epic's own docs:

Name things exactly ("the Timer device", not "that thing I added"), and ask for a plan before changes that take many steps.

How the agent sees UEFN

The server gives the agent just three tools: list_toolsets, describe_toolset and call_tool. The agent lists the toolsets, reads the one it needs, then calls a tool in it by name. With Python on, 43.00 has about 56 toolsets, covering Verse, devices, entities, assets, materials, UMG, Niagara, PCG, Sequencer, play sessions and more.

43.00 renamed most toolsets and moved tools to PascalCase names with camelCase arguments, so prompts and scripts written for 42.00 fail. A few of the renames:

Before 43.0043.00
editor_toolset.toolsets.scene.SceneToolsEditorToolset.LevelToolset
editor_toolset.toolsets.actor.ActorToolsEditorToolset.ActorToolset
editor_toolset.toolsets.object.ObjectToolsEditorToolset.ObjectToolset
ValkyrieToolset.VerseToolsetVerseToolset.VerseToolset
ValkyrieToolset.DeviceToolsetValkyrieFortniteToolset.DeviceToolset
EditorToolset.LogsToolsetConsoleToolset.LogsToolset

Tool names changed the same way: add_to_scene_from_class(actor_type) is now AddToSceneFromClass(actorType). Have your agent describe a toolset before it calls one, because a guessed name fails.

If it doesn't connect