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.
| Endpoint | Purpose |
|---|---|
http://127.0.0.1:3001/mcp | Streamable HTTP MCP endpoint |
http://127.0.0.1:3001/health | Health check |
Claude Code
Add the server to your Claude Code MCP settings:
{
"mcpServers": {
"unreal-engine": {
"type": "streamable-http",
"url": "http://localhost:3001/mcp"
}
}
}Tools
Actor discovery
| Tool | Description |
|---|---|
find_actors | Search for actors by name, label, or class. |
inspect_actor | Get an overview of an actor: properties, components, and functions. |
get_components | List all components on an actor. |
Property editing
Property access is reflection-driven, so anything the engine exposes is available.
| Tool | Description |
|---|---|
list_properties | List all properties on an actor or component. |
get_property | Read a property value. Names are matched fuzzily. |
set_property | Write a property value. |
Function calling
| Tool | Description |
|---|---|
list_functions | List callable functions on an actor or component. |
call_function | Call 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.