UE5 MCP Server
Allows AI agents to interact with a live Unreal Engine 5 editor session, including inspecting and modifying scene objects, reading output logs, searching C++ source files, triggering console commands, and scaffolding new C++ classes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@UE5 MCP Serverrun console command stat unit"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
UE5 MCP Server
A Model Context Protocol server that bridges Claude AI to a live Unreal Engine 5 editor session. Claude can inspect and modify scene objects, read output logs, search C++ source files, trigger console commands, and scaffold new C++ classes — all from a natural language prompt.
How It Works
Claude ──JSON-RPC──► MCP Server (Node.js) ──HTTP──► UE5 Remote Control API (port 30010)
│
└──filesystem──► Source/*.cpp/h, Saved/Logs/*.logClaude Desktop spawns the MCP server as a child process over stdio. When Claude decides to use a tool, it sends a JSON-RPC request; the server translates it into a UE5 Remote Control HTTP call (or a file system read/write) and returns the result.
Related MCP server: UEMCP
Prerequisites
Unreal Engine 5
Open your project in the UE5 Editor.
Go to Edit → Plugins, search for Remote Control API, enable it, and restart the editor.
Add the following to
Config/DefaultEngine.ini:
[/Script/RemoteControlAPI.RemoteControlSettings]
bEnableRemoteControlHttp=True
RemoteControlHttpServerPort=30010
bRestrictServerToLocalHost=TrueSecurity: Keep
bRestrictServerToLocalHost=True. The Remote Control API has no authentication by default — exposing it to a network without protection is a serious risk.
Node.js
Node.js v20 or later is required.
Installation
cd C:/dev/ue5_MCP
npm install
npm run buildThis compiles TypeScript to dist/. The runnable entry point is dist/index.js.
Configuration
Copy .env.example to .env and fill in your paths. The MCP server reads these as environment variables (injected via Claude Desktop config — see below).
Variable | Required | Default | Description |
| No |
| Remote Control API base URL |
| Yes (for source tools) | — | Absolute path to your project's |
| Yes (for log tool) | — | Absolute path to the |
| No | — | Adds |
| No |
| Must be exactly |
| No |
| Comma-separated allowed extensions for file writes |
| No |
| Milliseconds before a staged batch expires (default: 10 minutes) |
Connecting to Claude
Claude Code (CLI / VS Code)
Add a .mcp.json file in the root of the project you want the tools available in (or in the MCP server directory itself):
{
"mcpServers": {
"ue5": {
"type": "stdio",
"command": "node",
"args": ["C:/dev/ue5_MCP/dist/index.js"],
"env": {
"UE5_RC_URL": "http://127.0.0.1:30010",
"UE5_PROJECT_SOURCE": "C:\\Github\\MyProject\\Source",
"UE5_LOG_PATH": "C:\\Github\\MyProject\\Saved\\Logs\\MyProject.log",
"UE5_ALLOW_FILE_WRITE": "false"
}
}
}
}Alternatively, add it via the CLI:
claude mcp add --transport stdio \
--env UE5_RC_URL=http://127.0.0.1:30010 \
--env "UE5_PROJECT_SOURCE=C:\Github\MyProject\Source" \
--env "UE5_LOG_PATH=C:\Github\MyProject\Saved\Logs\MyProject.log" \
--env UE5_ALLOW_FILE_WRITE=false \
ue5 -- node C:/dev/ue5_MCP/dist/index.jsWhen you start a new Claude Code session in a directory that has this .mcp.json, the 10 UE5 tools will be available automatically. You'll be prompted to approve the server on first use.
Claude Desktop (optional)
If you also want to use it with Claude Desktop, add to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"ue5": {
"command": "node",
"args": ["C:/dev/ue5_MCP/dist/index.js"],
"env": {
"UE5_RC_URL": "http://127.0.0.1:30010",
"UE5_PROJECT_SOURCE": "C:\\Github\\MyProject\\Source",
"UE5_LOG_PATH": "C:\\Github\\MyProject\\Saved\\Logs\\MyProject.log",
"UE5_ALLOW_FILE_WRITE": "false"
}
}
}
}Restart Claude Desktop after editing. The hammer icon in the toolbar should show 10 tools when a conversation is active.
Available Tools
Remote Control (4 tools)
These tools communicate directly with the running UE5 editor via the Remote Control API.
ue5_run_console_command
Executes any Unreal console command in the live editor.
command: "stat fps" → shows FPS overlay
command: "r.VSync 0" → disables VSync
command: "stat unit" → shows frame time breakdown
command: "showflag.Bloom 0" → disables bloomBlocked commands:
quit,exit,open,cmd,exec,start,shell,servertravel,disconnect
ue5_get_object_property
Reads a property value from any UObject by its full actor path.
objectPath: "/Game/Maps/TestMap.TestMap:PersistentLevel.PointLight_0"
propertyName: "Intensity"ue5_set_object_property
Sets a property on any UObject.
objectPath: "/Game/Maps/TestMap.TestMap:PersistentLevel.PointLight_0"
propertyName: "Intensity"
propertyValue: 5000ue5_call_function
Calls a Blueprint-callable UFUNCTION on any actor or component.
objectPath: "/Game/Maps/TestMap.TestMap:PersistentLevel.MyActor_0"
functionName: "ResetState"
parameters: {}Source Search (2 tools)
These tools search and read files in your UE5_PROJECT_SOURCE directory. They never write anything.
ue5_search_source
Full-text regex search across .cpp and .h files with context lines.
pattern: "AGameModeBase"
fileGlob: "**/*.h" (optional, default: **/*.{cpp,h})
maxResults: 30 (optional, default: 50)
contextLines: 3 (optional, default: 2)Example output:
=== MyGame/GameMode/MyGameMode.h:8 ===
6: #include "CoreMinimal.h"
7: #include "GameFramework/GameModeBase.h"
>> 8: class MYGAME_API AMyGameMode : public AGameModeBase
9: {
10: GENERATED_BODY()ue5_read_file
Returns the content of a specific source file, optionally scoped to a line range.
filePath: "MyGame/GameMode/MyGameMode.cpp"
startLine: 20 (optional)
endLine: 50 (optional)Log Reader (1 tool)
ue5_read_log
Reads the tail of the UE5 output log. Reads only the last N bytes to avoid loading gigabyte-sized session logs.
filter: "Error" (All | Error | Warning | Display, default: All)
maxLines: 200 (default: 100)
tailBytes: 1048576 (default: 512000 = 500 KB)Use filter: "Error" after a failed compile to surface just the relevant errors.
File Writer (3 tools)
Requires
UE5_ALLOW_FILE_WRITE=truein your environment. Disabled by default. Only.cppand.hfiles are permitted. Paths are jailed toUE5_PROJECT_SOURCE.
The write workflow is a three-step process designed to give you a review gate before anything touches disk:
Step 1 — Stage
ue5_stage_files:
files: [
{ path: "MyGame/MyActor.h", content: "..." },
{ path: "MyGame/MyActor.cpp", content: "..." }
]Files are held in memory. Nothing is written yet.
Step 2 — Preview
ue5_preview_stagedReturns the full content of every staged file. Review it before proceeding.
Step 3 — Commit
ue5_commit_files:
triggerCompile: trueWrites all staged files to disk (creating directories as needed), clears the staging area, and optionally triggers a hot reload compile. Follow up with ue5_read_log filter: "Error" to check compile results.
Example Prompts
"Turn on GPU timing stats in the UE5 editor."
→ Calls ue5_run_console_command: "stat gpu"
"Set the intensity of DirectionalLight_0 to 3.14."
→ Calls ue5_set_object_property with the actor path and Intensity value
"Show me everywhere UHealthComponent is used in the project."
→ Calls ue5_search_source: pattern "UHealthComponent", maxResults 50
"My project just failed to compile. What are the errors?"
→ Calls ue5_read_log: filter "Error", maxLines 50
"Create a minimal AActor subclass called APickup with a USphereComponent."
→ Calls ue5_search_source to find conventions, then ue5_stage_files,
ue5_preview_staged for your review, then ue5_commit_files with triggerCompile: trueDevelopment
npm run dev # Run directly with ts-node (no compile step)
npm run build # Compile TypeScript → dist/
npm run start # Run compiled output
npm run inspect # Open MCP Inspector browser UI to test tools interactivelyThe MCP Inspector is the fastest way to test tools without Claude Desktop. It shows all registered tools with their schemas and lets you call them manually.
Security
Risk | Mitigation |
Arbitrary console commands | Blocked prefix allowlist; |
Remote Control API exposure | Keep |
Path traversal in file reads |
|
Source file writes | Jailed to |
Log credential exposure | Logs may contain secrets from plugin init — redact before sharing raw log output |
HTTP transport | If switching from stdio to HTTP/SSE transport, validate |
Project Structure
src/
index.ts Entry point — bootstraps MCP server, registers tools
utils/
ue5-client.ts Axios wrapper for all Remote Control API HTTP calls
log-parser.ts Pure log line parsing/filtering (no I/O)
path-guard.ts Path traversal security guard (shared by read and write tools)
tools/
remote-control.ts ue5_run_console_command, ue5_get/set_object_property, ue5_call_function
source-search.ts ue5_search_source, ue5_read_file
log-reader.ts ue5_read_log
file-writer.ts ue5_stage_files, ue5_preview_staged, ue5_commit_files
dist/ Compiled JavaScript output (generated by npm run build)
.env.example Template for environment variable configurationAvailable Tools
10 toolsue5_call_functionB
Call a Blueprint-callable UFUNCTION on any actor or component by its full Unreal object path.
| Name | Required | Description | Default |
|---|---|---|---|
| objectPath | Yes | Full Unreal object path | |
| parameters | No | Key/value pairs matching function parameter names | |
| functionName | Yes | Exact name of the UFUNCTION to call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description carries the full behavioral burden because no annotations are provided. It discloses the basic action but does not mention side effects, whether the function may modify world state, permission requirements, failure behavior for non-callable functions, or whether a return value is captured. These are significant unknowns for an arbitrary function-call tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and contains no redundant filler. 'Blueprint-callable' and 'full Unreal object path' are meaningful qualifiers, not padding. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations and no output schema, so the description must compensate. It defines what is being called and how to target it, but omits return-value behavior, side-effect expectations, and error conditions for invalid paths or non-callable functions. For an execution tool that can invoke arbitrary function logic, this leaves important gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces that objectPath must be a full Unreal object path and that functionName refers to a Blueprint-callable UFUNCTION, but it adds no meaning about the optional parameters object beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Call'), a precise resource ('Blueprint-callable UFUNCTION'), and the targeting mechanism ('full Unreal object path'). This clearly distinguishes it from sibling tools like ue5_get_object_property and ue5_set_object_property, which handle property reads/writes rather than function invocation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: invoke a UFUNCTION on an object, rather than reading a property or running a console command. However, it gives no explicit when-to-use or when-not-to-use guidance and names no alternatives, so the agent must infer the appropriate choice from the verb and wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ue5_commit_filesA
Write all staged files (or a subset) to disk. Directories are created if needed. Optionally triggers a hot reload compile afterwards. Requires UE5_ALLOW_FILE_WRITE=true.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No | Relative paths of specific staged files to commit. If omitted, commits all staged files. | |
| triggerCompile | No | If true, sends a hot reload request via the Remote Control API after writing (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does well: it discloses a mutating write to disk, automatic directory creation, an optional hot reload compile, and an environment-gating requirement. It does not cover overwrite behavior or error cases, but the core behavioral profile is clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences cover the main action, side effects, optional behavior, and a prerequisite. There is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation tool with no output schema, the description is nearly complete: it defines what is committed, the optional compile trigger, and the required configuration. The main missing context is an explicit link to the staging prerequisite via ue5_stage_files, but this is reasonably inferable from 'staged files.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds 'if omitted, commits all staged files' and default false for compile, but these largely mirror the schema rather than introduce new meaning. A baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Write all staged files (or a subset) to disk.' It also clarifies behavior (directories created, optional hot reload) and distinguishes this tool from siblings like ue5_stage_files and ue5_preview_staged by emphasizing the actual disk write.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the expected workflow (operating on staged files) and gives a hard prerequisite (UE5_ALLOW_FILE_WRITE=true). However, it never explicitly says when to use this tool instead of alternatives or names sibling tools such as ue5_stage_files, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ue5_get_object_propertyA
Read a property value from any UObject in the current level by its full Unreal object path.
| Name | Required | Description | Default |
|---|---|---|---|
| objectPath | Yes | Full Unreal object path, e.g. "/Game/Maps/TestMap.TestMap:PersistentLevel.PointLight_0" | |
| propertyName | Yes | Property name as it appears in C++ or the Details panel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does make the read-only nature and object-path requirement explicit, but it does not disclose behavior for invalid paths, missing properties, or how the value is returned. That leaves meaningful behavior unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence that front-loads the action and includes the two most important constraints (scope and path requirement) with no filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter getter with a complete input schema, the description plus parameter docs are largely sufficient. No output schema exists and the exact return representation is not specified, but the description's 'Read a property value' conveys the expected result well enough for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters already have clear descriptions, including a concrete object path example. The tool description adds no additional parameter semantics beyond re-emphasizing 'full' path, so the schema-driven baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Read a property value'), a specific resource ('any UObject in the current level'), and the required addressing mechanism ('full Unreal object path'). This cleanly distinguishes it from the sibling ue5_set_object_property, making the intent immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read-vs-write contrast with ue5_set_object_property makes the basic use case inferable, and the 'current level' scope provides context. However, the description does not explicitly state when to prefer this tool over siblings or mention any exclusions, so the guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ue5_preview_stagedA
Preview the full content of all staged files before committing to disk. This is the review gate — inspect output before calling ue5_commit_files.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | No | If provided, show only this specific file (relative path). Otherwise shows all staged files. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'Preview' and 'before committing to disk' convey a non-mutating review action, and the scope of 'all staged files' is clear. It does not explicitly state side effects or behavior when no files are staged, but the core behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver the core function, scope, and workflow position with no filler. The review-gate guidance is front-loaded and actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter preview tool with no output schema, the description is mostly complete: it names the operation, the target files, and the correct workflow position. Minor gaps remain around the exact return/presentation format and behavior when no files are staged, but these do not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the optional filePath parameter is already clearly documented in the schema. The tool description itself adds no further parameter meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and object: 'Preview the full content of all staged files.' It clearly distinguishes this tool from commit and stage siblings by positioning it as 'the review gate' before ue5_commit_files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: before calling ue5_commit_files, as a review gate. It does not discuss when not to use it or alternatives like ue5_read_file, but the workflow context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ue5_read_fileA
Read the contents of a specific C++ source file in the project Source directory. Supports optional line range to limit output for large files.
| Name | Required | Description | Default |
|---|---|---|---|
| endLine | No | Last line to return (1-indexed, inclusive) | |
| filePath | Yes | Path relative to the Source directory, e.g. "MyGame/GameManager.cpp" | |
| startLine | No | First line to return (1-indexed, inclusive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It correctly conveys that this is a read operation and notes the line-range limiting behavior for large files. Missing details include return format, error behavior, and whether the file must already exist, but the core behavior is adequately conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The primary purpose is front-loaded, and the optional line-range capability is stated as a secondary supporting detail. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with complete schema documentation and no output schema, the description provides the necessary context: what is read, where it is read from, and how to limit output. It is slightly incomplete in not describing the return format or explicitly routing to alternatives, but it is sufficient for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the optional line-range semantics by mentioning it for large files, but it does not add meaning beyond what the schema already documents for startLine and endLine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and identifies the exact resource: a C++ source file in the project Source directory. This naturally distinguishes it from siblings like ue5_read_log and ue5_search_source without needing an explicit comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly scopes the tool to C++ files in the Source directory and mentions optional line ranges for large files, which implies when it is useful. However, it does not explicitly state when to prefer this over alternatives such as ue5_search_source for locating content or ue5_read_log for logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ue5_read_logA
Read recent lines from the UE5 output log. Optionally filter to only Error or Warning severity. Reads from the tail of the file to avoid loading multi-GB logs.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Severity filter: All, Error, Warning, or Display (default: All) | |
| maxLines | No | Maximum number of log lines to return (default: 100) | |
| tailBytes | No | Bytes to read from the end of the log file (default: 512000 = 500 KB) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the tool reads from the tail of the file, deliberately avoids loading multi-GB logs, and supports severity filtering. A minor limitation is that it mentions only Error/Warning though the schema also allows Display, but this is not a hidden side-effect or safety issue.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences: the first states action and resource, the second adds the optional filter and the key tail-read behavior. Every sentence earns its place and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with three optional, schema-documented parameters, the description covers the main operational aspects: what is read, where from, and how large files are handled. There is no output schema, but the return value ('recent lines') is stated; a fully exhaustive description would add output format details, but this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters with 100% coverage, so the baseline is 3. However, the description's phrase 'filter to only Error or Warning severity' is misleading because the filter enum also includes All and Display. This actively undermines schema semantics rather than adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb (read), resource (UE5 output log), and scope (recent lines, optional severity filtering, tail-based). It is immediately distinguishable from siblings such as ue5_read_file because it names the log and the tail behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: use this tool to inspect the UE5 output log rather than arbitrary files. It does not explicitly name alternatives or exclusions, but the target use case is unambiguous and no conflicting guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ue5_run_console_commandA
Execute a console command in the running UE5 editor session. Use for stat commands, CVars, level operations, actor spawning, etc. Destructive commands (quit, open, exit) are blocked.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The console command string, e.g. "stat fps" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It usefully reveals that destructive commands (quit, open, exit) are blocked and states a prerequisite (running editor session). However, it does not disclose whether the command returns output, whether execution is synchronous, or what happens when the editor is not running, leaving notable behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the core action and resource, follows with concrete usage examples, and ends with a critical safety note. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter) and the schema sufficiently covers the parameter. However, there is no output schema and no mention of what the agent should expect after execution—such as whether the command output is written to the UE log or whether the call returns any result. Given the sibling ue5_read_log exists, the description should clarify how output is retrieved, making it incomplete in this respect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% because the only parameter 'command' already has a descriptive schema entry with an example. The tool description adds context about valid use cases but does not add new semantic meaning beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Execute a console command') and a precise resource ('running UE5 editor session'). It also names representative use categories (stat commands, CVars, level operations, actor spawning) and a distinguishing safety constraint, making it clearly distinct from sibling tools like ue5_read_file or ue5_call_function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use the tool ('Use for stat commands, CVars, level operations, actor spawning, etc.'). It also implies when not to use it by mentioning blocked destructive commands, though it does not name alternative tools for other scenarios. This is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ue5_search_sourceA
Search C++ and header files in the UE5 project Source directory using a regex pattern. Returns file path, line number, and surrounding context for each match.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Text or regex pattern to search for | |
| fileGlob | No | Glob pattern relative to Source dir (default: **/*.{cpp,h}) | |
| maxResults | No | Maximum number of matches to return (default: 50) | |
| contextLines | No | Lines of context before/after each match (default: 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of explaining behavior. It clearly states that the operation is a search, is non-mutating, and defines the return contents: file path, line number, and surrounding context. It does not cover regex flavor or edge cases, but it gives a solid behavioral contract for a read-only search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single tightly written sentence that leads with the primary action and resource, then states the return value. Every phrase earns its place and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The combination of the description and the fully documented schema provides enough information for an agent to invoke the tool correctly: what is searched, what is returned, and how parameters constrain results. With no output schema, the description adequately covers the return contract, though it could mention path formatting or failure behavior for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines all parameters. The description adds some alignment by mentioning regex, C++/header files, and surrounding context, but it does not materially go beyond what the parameter descriptions already state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Search'), the target resource ('C++ and header files in the UE5 project Source directory'), and the method ('using a regex pattern'). It is specific enough to distinguish the tool from read/execute siblings, though it does not explicitly name or contrast any alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the appropriate use case: finding code matches by regex in the Source directory. However, it provides no explicit condition for when to choose this tool over siblings like ue5_read_file or ue5_read_log, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ue5_set_object_propertyB
Set a property value on any UObject in the current level. The value must match the expected JSON type for the property.
| Name | Required | Description | Default |
|---|---|---|---|
| objectPath | Yes | Full Unreal object path | |
| propertyName | Yes | Property name to set | |
| propertyValue | No | JSON-serialisable value matching the property type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden for behavioral disclosure. It reveals a mutation operation and a JSON type-matching constraint, but does not mention side effects, permissions, error behavior for invalid paths, or whether changes persist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core action and scope are front-loaded, and the type-matching warning is useful and directly relevant to invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is thin. It omits what happens on failure, whether the change is reversible, and any indication of return/success behavior, while also providing no usage routing to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents all three parameters. The description adds modest context by reminding the agent that propertyValue must match the property's JSON type, but it does not meaningfully expand on parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set a property value'), the resource type ('any UObject in the current level'), and implies write semantics. This directly distinguishes it from siblings like ue5_get_object_property and ue5_call_function, even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus reading a property, calling a function, or searching for objects. The behavior is inferred only from the verb 'Set' and sibling names, not from explicit usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ue5_stage_filesA
Stage one or more C++ files in memory for review before writing to disk. Nothing is written until ue5_commit_files is called. Requires UE5_ALLOW_FILE_WRITE=true. Only .cpp and .h files are permitted.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Array of files to stage | |
| allowOverwrite | No | If false (default), reject files that already exist on disk. Set true to allow overwriting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and discloses key traits: staging is in-memory only, no disk write until commit, and a required environment flag (UE5_ALLOW_FILE_WRITE=true). The .cpp/.h extension whitelist further manages agent expectations before invocation. It stops short of describing session persistence or failure modes, so a 4 is warranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each earning its place: purpose, write-deferral behavior, auth requirement, and file-type restriction. The core purpose is front-loaded and every remaining sentence is a high-value constraint with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with full schema coverage and no output schema, the description covers the critical operational context: the staged-write workflow, the commit dependency, the auth flag, and file-type rules. It doesn't reference the ue5_preview_staged sibling or return behavior, but nothing an agent needs to invoke it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 — both parameters are already documented with relative-path guidance and overwrite semantics. The description adds the file-extension constraint that complements the path parameter. This is helpful context but does not substantially exceed what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('stage'), a specific resource ('C++ files'), and the defining scope ('in memory for review before writing to disk'). This clearly differentiates it from the sibling ue5_commit_files, which performs the actual write. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names the follow-up sibling (ue5_commit_files) and explains the workflow: nothing is written until commit. It also states a precondition (UE5_ALLOW_FILE_WRITE=true), giving the agent an explicit go/no-go signal. It doesn't explicitly contrast with reading or preview siblings like ue5_read_file or ue5_preview_staged, so exclusions are only partially spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v1.0.0- First observed
ue5_call_function - First observed
ue5_commit_files - First observed
ue5_get_object_property - First observed
ue5_preview_staged - First observed
ue5_read_file - First observed
ue5_read_log - First observed
ue5_run_console_command - First observed
ue5_search_source - First observed
ue5_set_object_property - First observed
ue5_stage_files
TDQS
Each tool targets a distinct operation: console execution, object property read/write, function invocation, source search/read, log reading, and staged file editing. The only broad tool, run_console_command, is clearly framed as the engine command entry point and does not blur with the object or source tools.
All tools share the ue5_ prefix and follow lowercase snake_case with a leading verb: get, set, call, search, read, stage, preview, commit. The naming pattern is highly predictable and makes the tool surface easy to navigate.
Ten tools is well within the ideal range for a domain-specific MCP server. The set covers object inspection/mutation, console commands, source code access, log reading, and a safe file-writing workflow without unnecessary redundancy.
The core workflows are well covered, especially the staged file edit lifecycle and source/log access. The main gap is that object property and function tools require full Unreal object paths, but there is no dedicated tool for listing or discovering objects and actors; agents must rely on console commands as a workaround.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Share context and questions between Claude instances — VS Code, claude.ai web, and mobile.
Deploy, monitor, and manage your OpenClaw AI assistants via natural language.
Related MCP Servers
- FlicenseAqualityBmaintenanceBridges AI assistants to Unreal Engine 5 editor, enabling direct manipulation of levels, actors, Blueprints, and Animation Blueprints through natural language commands.162-
- AlicenseBqualityCmaintenanceEnables Claude to control Unreal Engine 5 editor, spawn actors, build materials, author Blueprints, and more, with zero plugin installation.31MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI clients like Claude Code, Cursor, or VS Code to drive the Unreal Editor: execute Python, capture screenshots, tail logs, check status, and run VERA commands.15MIT
- FlicenseAqualityCmaintenanceBridges Large Language Models with Unreal Engine 5 via the Model Context Protocol, enabling AI to control scenes, inject C++ code, and manage assets through UE5's Web Remote Control interface.20-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Rolthar/Claude_UE5_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server