o3de-mcp
Automate Open 3D Engine (O3DE) with AI — an MCP server for editor control, project & build management.
README
o3de-mcp
Automate Open 3D Engine (O3DE) with AI — an MCP server for editor control, project & build management.
See the architecture documentation for a detailed system diagram and communication flow.
Features
Capability Detection:
get_capabilities— check editor connectivity and CLI availability before using other tools- Dynamic tool discovery — new tools are automatically reported
Editor Automation (requires a running O3DE Editor with the AiCompanion + EditorPythonBindings gems):
- Execute arbitrary Python scripts inside the editor (
azlmbrAPI) - List, create, delete, and duplicate entities
- Add components, get/set component properties
- Load, save, and query levels
- Enter/exit game mode, undo/redo
- Fast-fail when editor is unreachable (avoids repeated timeouts)
Project & Build Management (CLI-based, no editor required):
- Discover local O3DE engine installations (multi-engine support)
- List registered projects, gems, and available templates
- Create projects and gems from templates
- Register, enable, and disable gems
- Edit project properties
- Build projects via CMake
- Export projects for distribution
Prerequisites
- Python 3.10+
- O3DE installed and registered (engine path in the O3DE manifest or
O3DE_ENGINE_PATHenv var)- Linux/macOS:
~/.o3de/o3de_manifest.json - Windows:
%USERPROFILE%\.o3de\o3de_manifest.json
- Linux/macOS:
- For editor tools (optional): O3DE Editor running with the o3de-ai-companion-gem and EditorPythonBindings gems enabled. The companion gem provides the AgentServer that o3de-mcp connects to for real-time editor automation. Project tools work without the editor — call
get_capabilities()to check what's available.
Installation
pip install -e .
Or with uv:
uv pip install -e .
Usage
As a standalone MCP server
o3de-mcp
With Claude Code
Add to your MCP config (or use a project-level .mcp.json):
- Linux/macOS:
~/.claude/mcp.json - Windows:
%USERPROFILE%\.claude\mcp.json
{
"mcpServers": {
"o3de": {
"command": "o3de-mcp"
}
}
}
With Claude Desktop
Add to your Claude Desktop config:
{
"mcpServers": {
"o3de": {
"command": "o3de-mcp"
}
}
}
Testing with MCP Inspector
MCP Inspector provides a web UI for interactively testing tools without an AI assistant. Useful for verifying tool behavior, inspecting responses, and debugging.
npx @modelcontextprotocol/inspector o3de-mcp
This opens the Inspector UI at http://localhost:6274. From there you can browse all registered tools, invoke them with custom parameters, and see raw responses.
To pass environment variables (e.g., a custom engine path or editor port):
npx @modelcontextprotocol/inspector -e O3DE_ENGINE_PATH=/path/to/engine -e O3DE_EDITOR_PORT=4600 o3de-mcp
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run a single test
pytest tests/test_project.py::TestValidateName::test_valid_simple
# Lint and format
ruff check src/ tests/
ruff format src/ tests/
# Type checking
mypy src/
SBOM (Software Bill of Materials)
A CycloneDX SBOM is generated on every CI run and uploaded as a build artifact. To generate one locally:
python scripts/generate-sbom.py # JSON + XML
python scripts/generate-sbom.py --format json # JSON only
The script creates an isolated virtual environment with only runtime dependencies, so the SBOM accurately reflects what ships — dev/build tooling is excluded.
CI
GitHub Actions runs lint, type checking, tests, and SBOM generation on every push and PR to main. See .github/workflows/ci.yml.
Security
- Editor tool inputs (entity IDs, component types) are validated against strict regex patterns before use.
- User-supplied strings are serialized via
json.dumps/json.loadswhen passed into editor scripts — never raw string interpolation. - Project and gem names are validated against O3DE naming conventions.
- Filesystem paths are resolved and validated before being passed to subprocesses.
Documentation
| Document | Audience | Description |
|---|---|---|
| AGENTS.md | AI agents | Token-efficient usage guide, decision trees, error handling |
| docs/architecture.md | Developers & agents | System architecture diagram and communication flows |
| docs/tool-reference.md | Agents & developers | Compact parameter reference for all tools |
| docs/recipes.md | Agents & developers | Composable patterns for scenes, physics, lighting, scripting |
| docs/components.md | Agents & developers | O3DE component name catalog with dependency chains |
Examples
Progressive walkthroughs from project creation to a complete game:
- New Project — create, configure, and build a project
- Build a Scene — sky, lights, ground, camera, static objects
- Physics Playground — dynamic bodies, triggers, stacking
- Scripted Game — complete mini-game with player, obstacles, goals
- Batch Operations — efficient bulk entity creation patterns
- CLI-Only Workflow — project management without the editor
- Gem Development — create and integrate custom gems
- MCP Inspector — interactively test tools via a web UI
Configuration
| Environment Variable | Description | Default |
|---|---|---|
O3DE_ENGINE_PATH |
Override automatic engine discovery | Auto-detected from manifest |
O3DE_ENGINE_NAME |
Select engine by name when multiple are registered | First valid engine |
O3DE_EDITOR_HOST |
Editor remote console host | 127.0.0.1 |
O3DE_EDITOR_PORT |
Editor remote console port | 4600 |
O3DE_EDITOR_TIMEOUT |
Editor command timeout (seconds) | 10 |
O3DE_CMAKE_GENERATOR |
CMake generator for builds | Auto-detected per platform |
O3DE_CONFIGURE_TIMEOUT |
CMake configure timeout (seconds) | 600 |
O3DE_BUILD_TIMEOUT |
CMake build timeout (seconds) | 1800 |
O3DE_EXPORT_TIMEOUT |
Project export timeout (seconds) | 3600 |
The server also reads the O3DE manifest for registered engines, projects, and gems:
- Linux/macOS:
~/.o3de/o3de_manifest.json - Windows:
%USERPROFILE%\.o3de\o3de_manifest.json
Related Projects
- o3de-ai-companion-gem — O3DE Gem that provides the AgentServer for editor-side communication. Required for editor automation tools. Enable it alongside EditorPythonBindings in your O3DE project.
- O3DE (Open 3D Engine) — The open-source game engine.
License
This project is dual-licensed under Apache 2.0 or MIT (your choice), matching the O3DE engine license. Free for commercial and non-commercial use.
SPDX-License-Identifier: Apache-2.0 OR MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.