MCP server

Let AI assistants inspect and modify the running game through the Model Context Protocol.

The runtime includes an HTTP-based Model Context Protocol server. It runs inside the game process and lets AI assistants find actors, read and write properties, and call functions at runtime. Unlocky uses it, and you can connect other MCP clients too.

Connection

The server starts automatically on port 3001 when the runtime initializes, as long as enable_mcp is true in uloader.ini. UnlockedKit enables it on install.

EndpointPurpose
http://127.0.0.1:3001/mcpStreamable HTTP MCP endpoint
http://127.0.0.1:3001/healthHealth check

Claude Code

Add the server to your Claude Code MCP settings:

.mcp.json
{
  "mcpServers": {
    "unreal-engine": {
      "type": "streamable-http",
      "url": "http://localhost:3001/mcp"
    }
  }
}

Tools

Actor discovery

ToolDescription
find_actorsSearch for actors by name, label, or class.
inspect_actorGet an overview of an actor: properties, components, and functions.
get_componentsList all components on an actor.

Property editing

Property access is reflection-driven, so anything the engine exposes is available.

ToolDescription
list_propertiesList all properties on an actor or component.
get_propertyRead a property value. Names are matched fuzzily.
set_propertyWrite a property value.

Function calling

ToolDescription
list_functionsList callable functions on an actor or component.
call_functionCall a function through ProcessEvent, returning its return value and named out parameters.

Examples

Set the player's walk speed:

{"method": "tools/call", "params": {"name": "set_property", "arguments": {"actor": "Character", "property": "MaxWalkSpeed", "component": "CharacterMovement", "value": 500}}}

Find every character:

{"method": "tools/call", "params": {"name": "find_actors", "arguments": {"class": "Character"}}}

Call a Blueprint function with parameters:

{"method": "tools/call", "params": {"name": "call_function", "arguments": {"actor": "BP_Player_C", "function": "SetMaxInventorySlots", "params": {"Slots": 900}}}}

Notes

  • Every UObject access is dispatched to the game thread with a 5-second timeout, so tool calls never touch engine state from another thread.
  • The server only listens on the local machine.
  • MCP is not used to run Lua. Scripts are sent over the local named pipe by UnlockedKit.

On this page