Compact reference for all o3de-mcp tools. Optimized for agent consumption.
Always available — use these first to determine what other tools can be used.
Check what O3DE MCP capabilities are currently available. No parameters.
Returns JSON with editor, cli, and tool_categories sections.
Best practice: Call this first in every session to avoid wasting tokens on tools that will fail.
Discover a gem's scripting API. These read the editor's generated stubs from disk, so they work without a running editor (the project must have been opened in the editor once to produce the stubs).
Return the reflected EBus schema for a module as JSON, so an agent can learn an API before calling it. Gem-agnostic: works for any reflected bus with no per-gem catalog.
Parameters:
module(optional): azlmbr submodule to inspect, e.g.diorama,physics. Must be a bare identifier. Omit to list the modules that have a stub.bus(optional): bus name to filter to, e.g.DioramaSpriteRequestBus.project_path(optional): project whose stubs to read. Omit to resolve fromO3DE_PROJECT_PATHor the single registered project that has a stub dump.
Returns JSON. With no module: {symbols_dir, modules}. With a module:
{module, source, buses: [{name, addressable, address_type, events: [{call_type, name, args, returns}]}], note}.
Note: The generated stub lists EBus event arguments by type only. For argument names and tooltips, use
get_bus_schema_live(below) which queries the running editor's BehaviorContext.
Query the running editor's BehaviorContext for a bus schema. Falls back to
get_bus_schema (stub-based) if the editor is unreachable.
| Param | Type | Required | Description |
|---|---|---|---|
module |
str | yes | azlmbr submodule name (e.g. physics) |
bus |
str | yes | Bus name (e.g. PhysicsRequestBus) |
project_path |
str | no | Project path for fallback stub resolution |
Returns JSON with a source field: "live" or "stub_fallback".
Trigger a RenderDoc frame capture in the O3DE editor. Sends the
r_captureFrame console command. After capture, use the renderdoc-mcp MCP
server tools to analyze the frame. No parameters.
Require a running O3DE Editor with AiCompanion + EditorPythonBindings gems.
If the editor is unreachable, these tools will fast-fail with an
editor_unavailable error within seconds rather than timing out.
Execute arbitrary Python in the editor. Full azlmbr API access.
| Param | Type | Required | Description |
|---|---|---|---|
script |
str | yes | Python code to run in editor |
timeout |
float | no | Per-call execution timeout (seconds). Omit to use O3DE_EDITOR_TIMEOUT (default 600). Raise for known-heavy scripts — the editor runs the script synchronously and does not reply until it finishes. |
List all entities in the current level. No parameters.
Returns JSON array: [{"id": "...", "name": "..."}]
Create a new entity in the current level.
| Param | Type | Required | Description |
|---|---|---|---|
name |
str | yes | Entity name |
parent_id |
str | no | Parent entity ID (omit for root) |
Delete an entity from the current level.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID to delete |
Duplicate an entity and its children.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID to duplicate |
Returns JSON: {"id": "...", "name": "..."}
List components on an entity.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID (numeric, e.g. 1234 or [1234]) |
Returns JSON array: [{"component_id": "...", "type": "..."}]
Add a component to an entity.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Target entity ID |
component_type |
str | yes | Component name (e.g. Mesh, PhysX Rigid Body) |
Get a property value from a component.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID |
component_type |
str | yes | Component type name |
property_path |
str | yes | Property path with | separator (e.g. Transform|Translate) |
Set a property value on a component.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID |
component_type |
str | yes | Component type name |
property_path |
str | yes | Property path with | separator |
value |
str | yes | Value as string (true/false for bools, numbers as strings) |
Assign an asset to a component property by resolving the asset path to an O3DE asset ID.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID |
component_type |
str | yes | Component type name |
property_path |
str | yes | Property path with | separator |
asset_path |
str | yes | Project-relative asset path (e.g. Objects/Props/box.fbx) |
Remove a component from an entity.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID |
component_type |
str | yes | Component type name to remove |
Set the world transform of an entity. Only provided components are changed.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID |
position |
list[float] | no | [x, y, z] world position |
rotation |
list[float] | no | [x, y, z, w] quaternion rotation (4 elements) |
scale |
list[float] | no | [x, y, z] scale |
Get the world transform of an entity.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID |
Returns JSON: {"position": [x,y,z], "rotation": [x,y,z,w], "scale": [x,y,z]}
Set the parent of an entity (reparent in the hierarchy).
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID to reparent |
parent_id |
str | yes | New parent entity ID |
Execute an O3DE console command in the running editor.
| Param | Type | Required | Description |
|---|---|---|---|
command |
str | yes | Console command (e.g. r_fog 0, loadlevel Levels/MyLevel) |
Get the value of an O3DE console variable.
| Param | Type | Required | Description |
|---|---|---|---|
name |
str | yes | CVAR name (e.g. r_fog) |
Returns JSON: {"name": "...", "value": "..."}
Set the value of an O3DE console variable.
| Param | Type | Required | Description |
|---|---|---|---|
name |
str | yes | CVAR name |
value |
str | yes | Value as string |
Open a level in the editor.
| Param | Type | Required | Description |
|---|---|---|---|
level_path |
str | yes | Level path relative to project (e.g. Levels/Main) |
Get current level name and path. No parameters.
Returns JSON: {"level_name": "...", "level_path": "..."}
Save the currently open level. No parameters.
Create a new empty level in the current project.
| Param | Type | Required | Description |
|---|---|---|---|
name |
str | yes | Level name (alphanumeric, starts with letter) |
List all levels in a project.
| Param | Type | Required | Description |
|---|---|---|---|
project_path |
str | no | Project path (auto-resolves if omitted) |
Returns JSON: {"levels": [...], "project": "..."}
Enter play-in-editor mode. No parameters.
Exit game mode, return to edit mode. No parameters.
Undo the last editor action. No parameters.
Redo the last undone action. No parameters.
Get the active editor viewport camera transform. No parameters.
Returns JSON: {"position": [...], "rotation": [...], "fov": ...}
Set the active editor viewport camera transform.
| Param | Type | Required | Description |
|---|---|---|---|
position |
list[float] | no | [x, y, z] camera position |
rotation |
list[float] | no | [x, y, z, w] quaternion rotation |
Focus the viewport camera on an entity.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID to focus on |
Capture a screenshot of the editor viewport.
| Param | Type | Required | Description |
|---|---|---|---|
output_path |
str | yes | File path (must end in .png/.jpg/.bmp/.tga) |
width |
int | no | Capture width in pixels |
height |
int | no | Capture height in pixels |
Instantiate a prefab in the current level.
| Param | Type | Required | Description |
|---|---|---|---|
prefab_path |
str | yes | Path to .prefab file |
position |
list[float] | no | [x, y, z] spawn position (defaults to origin) |
parent_id |
str | no | Parent entity ID |
Create a prefab file from an existing entity.
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Entity ID to create prefab from |
prefab_path |
str | yes | Path for the new .prefab file |
Save a prefab instance (propagate entity changes to the prefab file).
| Param | Type | Required | Description |
|---|---|---|---|
entity_id |
str | yes | Root entity ID of the prefab instance |
Begin a persistent Python session in the editor. No parameters.
Returns JSON: {"session_id": "..."}
Execute Python code in a persistent session. Variables persist across calls.
| Param | Type | Required | Description |
|---|---|---|---|
session_id |
str | yes | Session ID from begin_session |
script |
str | yes | Python code to execute |
End a persistent Python session and clean up.
| Param | Type | Required | Description |
|---|---|---|---|
session_id |
str | yes | Session ID from begin_session |
List variable names in a persistent session (names only, not values).
| Param | Type | Required | Description |
|---|---|---|---|
session_id |
str | yes | Session ID from begin_session |
Wrap the O3DE CLI and CMake. Do not require a running editor.
Get local O3DE engine metadata. No parameters. Returns JSON with engine version, path, and metadata.
List all registered O3DE projects. No parameters. Returns JSON array of project objects.
List all registered external gems. No parameters. Returns JSON array of gem objects.
Create a new O3DE project from a template.
| Param | Type | Required | Description |
|---|---|---|---|
name |
str | yes | Project name (alphanumeric, hyphens, underscores) |
path |
str | yes | Directory for the project |
template |
str | no | Template name (default: DefaultProject) |
Register an external gem with a project.
| Param | Type | Required | Description |
|---|---|---|---|
gem_path |
str | yes | Path to gem directory (must exist) |
project_path |
str | yes | Path to project directory (must exist) |
Enable a registered gem in a project.
| Param | Type | Required | Description |
|---|---|---|---|
gem_name |
str | yes | Gem name |
project_path |
str | yes | Path to project directory (must exist) |
Build a project with CMake.
| Param | Type | Required | Description |
|---|---|---|---|
project_path |
str | yes | Path to project (must exist) |
config |
str | no | debug, profile, or release (default: profile) |
Disable a gem in a project. Complement of enable_gem.
| Param | Type | Required | Description |
|---|---|---|---|
gem_name |
str | yes | Gem name |
project_path |
str | yes | Path to project directory (must exist) |
Create a new O3DE gem from a template.
| Param | Type | Required | Description |
|---|---|---|---|
name |
str | yes | Gem name (alphanumeric, hyphens, underscores) |
path |
str | yes | Directory for the gem |
template |
str | no | Template name (default: DefaultGem) |
Export a project for distribution. Long-running operation.
| Param | Type | Required | Description |
|---|---|---|---|
project_path |
str | yes | Path to project (must exist) |
output_path |
str | yes | Directory for exported output |
config |
str | no | debug, profile, or release (default: profile) |
Timeout configurable via O3DE_EXPORT_TIMEOUT env var (default: 3600s).
Edit properties of an existing project.
| Param | Type | Required | Description |
|---|---|---|---|
project_path |
str | yes | Path to project (must exist) |
project_name |
str | no | New project name |
origin |
str | no | New origin URL or description |
List available project and gem templates. No parameters. Returns JSON array of template objects with name, summary, and path.
List gems enabled in a specific project.
| Param | Type | Required | Description |
|---|---|---|---|
project_path |
str | yes | Path to the O3DE project |
Returns JSON: {"gems": [...], "count": N, "project_path": "..."}
Register an O3DE engine installation with the manifest.
| Param | Type | Required | Description |
|---|---|---|---|
engine_path |
str | yes | Path to engine root (must contain engine.json) |
Set the active O3DE engine by name (in-process, not persistent).
| Param | Type | Required | Description |
|---|---|---|---|
name |
str | yes | Engine name |
Start a CMake build in the background and return a build ID.
| Param | Type | Required | Description |
|---|---|---|---|
project_path |
str | yes | Path to project (must have a build directory) |
config |
str | no | debug, profile, or release (default: profile) |
target |
str | no | Build target (e.g. Editor). Omit to build all. |
Returns JSON: {"build_id": "...", "status": "running", ...}
Check the status of a background build.
| Param | Type | Required | Description |
|---|---|---|---|
build_id |
str | yes | Build ID from start_build |
Returns JSON: {"status": "running|completed|failed", "returncode": N, "output": "..."}
Monitor the Asset Processor and read diagnostic log files. These tools work with the filesystem and process list — they do not require a running editor.
Check whether the O3DE Asset Processor is running.
| Param | Type | Required | Description |
|---|---|---|---|
project_path |
str | no | Project path (for log directory info) |
Returns JSON: {"running": bool, "log_dir": "...", "project": "..."}
Wait for the Asset Processor to finish processing (or until timeout).
| Param | Type | Required | Description |
|---|---|---|---|
timeout |
int | no | Maximum wait in seconds (default: 300) |
Returns JSON: {"completed": bool, "elapsed": float}
Trigger an Asset Processor rescan for a project.
| Param | Type | Required | Description |
|---|---|---|---|
project_path |
str | no | Project path (auto-resolves if omitted) |
Read the last N lines of an O3DE log file.
| Param | Type | Required | Description |
|---|---|---|---|
log_name |
str | yes | Log name: Editor, AssetProcessor, CMakeOutput |
lines |
int | no | Number of lines (default: 50) |
filter |
str | no | Regex pattern to filter lines |
project_path |
str | no | Project path (auto-resolves if omitted) |
Returns JSON: {"log_name": "...", "lines": [...], "count": N}
Extract error lines from an O3DE log file.
| Param | Type | Required | Description |
|---|---|---|---|
log_name |
str | no | Log name (default: Editor) |
since_lines |
int | no | Lines to scan (default: 200) |
project_path |
str | no | Project path (auto-resolves if omitted) |
Returns JSON: {"errors": [...], "count": N}
All tools validate inputs before execution:
- Entity IDs: Numeric only —
1234or[1234] - Component types: Alphanumeric, spaces, hyphens, underscores, parentheses
- Project/gem names: Start with letter, then alphanumeric/hyphens/underscores
- Paths: Resolved to absolute;
must_existtools verify the path exists - Build configs: Allowlisted to
debug,profile,release