{"id":47617257,"url":"https://github.com/softdaddy-o/soft-ue-cli","last_synced_at":"2026-04-15T07:03:25.838Z","repository":{"id":344790068,"uuid":"1183045403","full_name":"softdaddy-o/soft-ue-cli","owner":"softdaddy-o","description":"Python CLI + UE plugin that lets Claude Code (AI coding agent) control Unreal Engine in real time. Spawn actors, edit blueprints, call functions, capture screenshots, manage PIE sessions, and more -- all from the terminal. Works with UE5 editor and packaged builds via an in-process HTTP bridge.","archived":false,"fork":false,"pushed_at":"2026-04-01T12:38:42.000Z","size":454,"stargazers_count":60,"open_issues_count":3,"forks_count":9,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T05:13:54.097Z","etag":null,"topics":["ai-assisted-development","ai-tools","anthropic","blueprints","claude-code","cli","devtools","game-development","python-cli","ue5","unreal-engine","unreal-engine-5","unreal-engine-automation","unreal-engine-plugin"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/softdaddy-o.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-16T08:08:51.000Z","updated_at":"2026-04-02T02:54:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/softdaddy-o/soft-ue-cli","commit_stats":null,"previous_names":["softdaddy-o/soft-ue-cli"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/softdaddy-o/soft-ue-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softdaddy-o%2Fsoft-ue-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softdaddy-o%2Fsoft-ue-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softdaddy-o%2Fsoft-ue-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softdaddy-o%2Fsoft-ue-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/softdaddy-o","download_url":"https://codeload.github.com/softdaddy-o/soft-ue-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softdaddy-o%2Fsoft-ue-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31428645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T02:22:46.605Z","status":"ssl_error","status_checked_at":"2026-04-05T02:22:33.263Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-assisted-development","ai-tools","anthropic","blueprints","claude-code","cli","devtools","game-development","python-cli","ue5","unreal-engine","unreal-engine-5","unreal-engine-automation","unreal-engine-plugin"],"created_at":"2026-04-01T21:37:23.964Z","updated_at":"2026-04-07T09:02:09.939Z","avatar_url":"https://github.com/softdaddy-o.png","language":"C++","funding_links":["https://github.com/sponsors/softdaddy-o","https://ko-fi.com/softdaddy"],"categories":[],"sub_categories":[],"readme":"# soft-ue-cli (+mcp)\n\n[![PyPI version](https://img.shields.io/pypi/v/soft-ue-cli.svg)](https://pypi.org/project/soft-ue-cli/)\n[![Python 3.10+](https://img.shields.io/pypi/pyversions/soft-ue-cli.svg)](https://pypi.org/project/soft-ue-cli/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Sponsor](https://img.shields.io/github/sponsors/softdaddy-o?label=Sponsor\u0026logo=github)](https://github.com/sponsors/softdaddy-o)\n[![Ko-fi](https://img.shields.io/badge/Ko--fi-Support-ff5e5b?logo=ko-fi)](https://ko-fi.com/softdaddy)\n\nBuilt and maintained by a solo developer. [Support this project](#support-this-project) if it saves you time.\n\n**Control Unreal Engine 5 from your AI agent or terminal.** soft-ue-cli gives any LLM — via **MCP server** or **CLI** — 60+ tools to spawn actors, edit Blueprints, inspect materials, run Play-In-Editor sessions, capture screenshots, profile performance, and more inside a running UE5 editor or packaged build.\n\nTwo ways to connect. Same 60+ tools. One pip install. One plugin copy.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/architecture.svg\" alt=\"soft-ue-cli architecture diagram\" width=\"680\"\u003e\n\u003c/p\u003e\n\n---\n\n## Why soft-ue-cli?\n\n- **MCP server + CLI in one package** -- use as an MCP server (`mcp-serve`) for Claude Desktop, Cursor, Windsurf, and other MCP clients, **or** as a standard CLI for Claude Code, shell scripts, and CI/CD. Same 60+ tools either way.\n- **AI-native UE automation** -- purpose-built so LLM agents can read, modify, and test Unreal Engine projects without a human touching the editor.\n- **60+ tools** covering actors, Blueprints, materials, StateTrees, widgets, assets, PIE sessions, profiling, and more.\n- **LLM skill prompts** -- ships with markdown workflows (e.g. Blueprint-to-C++ conversion) exposed as MCP prompts or CLI commands.\n- **Works everywhere UE runs** -- editor, cooked builds, Windows, macOS, Linux.\n- **Single dependency** -- only requires `httpx`. Add `[mcp]` extra for MCP server mode.\n- **Team-friendly** -- conditional compilation via `SOFT_UE_BRIDGE` environment variable means only developers who need the bridge get it compiled in.\n\n---\n\n## Quick Start\n\n### 1. Install\n\n```bash\npip install soft-ue-cli          # CLI only\npip install soft-ue-cli[mcp]     # CLI + MCP server\n```\n\n### 2. Install the plugin into your UE project\n\nRun the setup command **inside your LLM client** (Claude Code, Cursor, etc.) — it outputs step-by-step instructions that the AI agent will follow to copy the plugin, edit your `.uproject`, and configure itself:\n\n```bash\nsoft-ue-cli setup /path/to/YourProject\n```\n\nIf you're running manually (not via an LLM), follow the printed instructions yourself: copy the plugin directory, add the `\"Plugins\"` entry to your `.uproject`, and create the `CLAUDE.md` snippet.\n\n### 3. Rebuild and launch Unreal Engine\n\nAfter regenerating project files and rebuilding, launch the editor. Look for this log line to confirm the bridge is running:\n\n```\nLogSoftUEBridge: Bridge server started on port 8080\n```\n\n### 5. Verify the connection\n\n```bash\nsoft-ue-cli check-setup\n```\n\nYou should see all checks pass:\n\n```\n[OK]   Plugin files found.\n[OK]   SoftUEBridge enabled in YourGame.uproject.\n[OK]   Bridge server reachable.\n```\n\n### 5. (Optional) Connect your MCP client\n\nAdd to your MCP client config (Claude Desktop, Cursor, Windsurf, etc.):\n\n```json\n{\n  \"mcpServers\": {\n    \"soft-ue-cli\": {\n      \"command\": \"soft-ue-cli\",\n      \"args\": [\"mcp-serve\"]\n    }\n  }\n}\n```\n\nThe AI editor now has direct access to all 60+ UE tools and skill prompts — no terminal needed.\n\n---\n\n## How It Works\n\n```\nClaude Code\n    |\n    |  (runs CLI commands in terminal)\n    v\nsoft-ue-cli  (Python process)\n    |\n    |  HTTP / JSON-RPC requests\n    v\nSoftUEBridge plugin  (C++ UGameInstanceSubsystem, inside UE process)\n    |\n    |  Native UE API calls on the game thread\n    v\nUnreal Engine 5 editor or runtime\n```\n\nThe **SoftUEBridge** plugin is a lightweight C++ `UGameInstanceSubsystem` that starts an embedded HTTP server on port 8080 when UE launches. The CLI sends JSON-RPC requests to this server, and the plugin executes the corresponding UE operations on the game thread, returning structured JSON responses.\n\nAll commands output JSON to stdout (except `get-logs --raw`). Exit code 0 means success, 1 means error.\n\n### Skills Architecture\n\n```\nLLM client (Claude Code, Cursor, etc.)\n    |\n    |  soft-ue-cli skills get \u003cname\u003e\n    v\nSkill file  (markdown shipped with CLI pip package)\n    |\n    |  LLM reads instructions, type mappings, pre-filled commands\n    v\nLLM executes soft-ue-cli commands (query-blueprint, query-blueprint-graph, ...)\n    |\n    v\nLLM generates output (e.g. .h/.cpp files) following the skill's rules\n```\n\nSkills are **markdown files** at `cli/soft_ue_cli/skills/*.md`, shipped as package data in the pip distribution. Each skill is self-contained: workflow instructions, reference tables, example CLI commands, and verification test cases. The CLI discovers them via `skills list` / `skills get`. When running as an MCP server, the same files are exposed via the `prompts/list` and `prompts/get` protocol.\n\n### MCP Server Architecture\n\n```\nMCP Client (Claude Desktop, Cursor, Windsurf, etc.)\n    |\n    |  stdio (JSON-RPC, MCP protocol)\n    v\nsoft-ue-cli mcp-serve  (FastMCP server)\n    |\n    |  Reuses call_tool() — HTTP/JSON-RPC\n    v\nSoftUEBridge plugin (inside UE)\n```\n\nRunning `soft-ue-cli mcp-serve` starts an MCP server over stdio. It auto-generates MCP tool schemas from the CLI's argparse parser and forwards tool calls to the UE bridge. Skills are exposed as MCP prompts. Install the optional extra: `pip install soft-ue-cli[mcp]`.\n\n---\n\n## Complete Command Reference\n\nEvery command is available via `soft-ue-cli \u003ccommand\u003e`. Run `soft-ue-cli \u003ccommand\u003e --help` for detailed options.\n\n### Setup and Diagnostics\n\n| Command | Description |\n|---------|-------------|\n| `setup` | Copy SoftUEBridge plugin into a UE project |\n| `check-setup` | Verify plugin files, .uproject settings, and bridge server reachability |\n| `status` | Health check -- returns server status |\n| `project-info` | Get project name, engine version, target platforms, and module info |\n\n### Actor and Level Operations\n\n| Command | Description |\n|---------|-------------|\n| `spawn-actor` | Spawn an actor by class at a given location and rotation |\n| `query-level` | List actors in the current level with transforms, filtering by class or name |\n| `call-function` | Call any `BlueprintCallable` `UFUNCTION` on an actor |\n| `set-property` | Set a `UPROPERTY` value on an actor by name |\n| `get-property` | Read a `UPROPERTY` value from an actor or component using reflection |\n| `add-component` | Add a component to an existing actor |\n\n### Blueprint Inspection and Editing\n\n| Command | Description |\n|---------|-------------|\n| `query-blueprint` | Inspect a Blueprint asset -- components, variables, functions, interfaces, event dispatchers |\n| `query-blueprint-graph` | Inspect event graphs, function graphs, and node connections |\n| `add-graph-node` | Add a node to a Blueprint or Material graph (supports `AnimLayerFunction` for ALIs) |\n| `modify-interface` | Add or remove an implemented interface on a Blueprint or AnimBlueprint |\n| `remove-graph-node` | Remove a node from a graph |\n| `connect-graph-pins` | Connect two pins between graph nodes |\n| `disconnect-graph-pin` | Disconnect pin connections (all or specific with `--target-node`/`--target-pin`) |\n| `insert-graph-node` | Atomically insert a node between two connected nodes |\n| `set-node-position` | Batch-set node positions for graph layout |\n| `compile-blueprint` | Compile a Blueprint or AnimBlueprint and return the result |\n| `compile-material` | Compile a Material, MaterialInstance, or MaterialFunction |\n| `save-asset` | Save a modified asset to disk (with optional `--checkout` for source control) |\n| `set-node-property` | Set properties on a graph node by GUID (UPROPERTY, inner structs, pin defaults) |\n\n### Asset Management\n\n| Command | Description |\n|---------|-------------|\n| `query-asset` | Search the Content Browser by name, class, or path -- also inspect DataTables |\n| `create-asset` | Create new Blueprint, Material, DataTable, World (Level), or other asset types |\n| `delete-asset` | Delete an asset |\n| `set-asset-property` | Set a property on a Blueprint CDO or component |\n| `get-asset-diff` | Get property-level diff of an asset vs. source control |\n| `get-asset-preview` | Get a thumbnail/preview image of an asset |\n| `open-asset` | Open an asset in the editor |\n| `find-references` | Find assets, variables, or functions referencing a given asset |\n\n### Material Inspection\n\n| Command | Description |\n|---------|-------------|\n| `query-material` | Inspect Material, Material Instance, or Material Function -- parameters, nodes, connections, `--parent-chain` |\n| `query-mpc` | Read or write Material Parameter Collection scalar/vector values |\n\n### Class and Type Inspection\n\n| Command | Description |\n|---------|-------------|\n| `class-hierarchy` | Inspect class inheritance chains -- ancestors, descendants, or both |\n\n### Play-In-Editor (PIE) Control\n\n| Command | Description |\n|---------|-------------|\n| `pie-session` | Start, stop, pause, resume PIE -- also query actor state during play |\n| `trigger-input` | Send input events to a running game (PIE or packaged build) |\n\n### Screenshot and Visual Capture\n\n| Command | Description |\n|---------|-------------|\n| `capture-screenshot` | Capture the editor viewport, PIE window, or a specific editor panel |\n| `capture-viewport` | Capture the current viewport (auto-detects PIE, standalone, or editor) |\n| `set-viewport-camera` | Set editor viewport camera position, rotation, or preset view (top/front/right/perspective) |\n\n### Logging and Console Variables\n\n| Command | Description |\n|---------|-------------|\n| `get-logs` | Read the UE output log with optional category and text filters |\n| `get-console-var` | Read the value of a console variable (CVar) |\n| `set-console-var` | Set a console variable value |\n\n### Python Scripting in UE\n\n| Command | Description |\n|---------|-------------|\n| `run-python-script` | Execute a Python script inside UE's embedded Python interpreter |\n| `save-script` | Save a reusable Python script to the local script library |\n| `list-scripts` | List all saved Python scripts |\n| `delete-script` | Delete a saved script |\n\n### StateTree Editing\n\n| Command | Description |\n|---------|-------------|\n| `query-statetree` | Inspect a StateTree asset -- states, tasks, transitions |\n| `add-statetree-state` | Add a state to a StateTree |\n| `add-statetree-task` | Add a task to a StateTree state |\n| `add-statetree-transition` | Add a transition between StateTree states |\n| `remove-statetree-state` | Remove a state from a StateTree |\n\n### Widget Blueprint Inspection\n\n| Command | Description |\n|---------|-------------|\n| `inspect-widget-blueprint` | Inspect UMG Widget Blueprint hierarchy, bindings, and properties |\n| `inspect-runtime-widgets` | Inspect live UMG widget geometry during PIE sessions |\n| `add-widget` | Add a widget to a Widget Blueprint |\n\n### DataTable Editing\n\n| Command | Description |\n|---------|-------------|\n| `add-datatable-row` | Add or update a row in a DataTable asset |\n\n### Performance Profiling (UE Insights)\n\n| Command | Description |\n|---------|-------------|\n| `insights-capture` | Start or stop a UE Insights trace capture |\n| `insights-list-traces` | List available trace files |\n| `insights-analyze` | Analyze a trace file for CPU, GPU, or memory hotspots |\n\n### Build and Live Coding\n\n| Command | Description |\n|---------|-------------|\n| `build-and-relaunch` | Trigger a full C++ rebuild and optionally relaunch the editor (`--wait` to monitor progress) |\n| `trigger-live-coding` | Trigger a Live Coding compile (hot reload); waits for result by default |\n\n### Skills (LLM Workflow Prompts)\n\n| Command | Description |\n|---------|-------------|\n| `skills list` | List all available LLM skill prompts shipped with the CLI |\n| `skills get \u003cname\u003e` | Print a skill's full content to stdout for LLM consumption |\n\nSkills are markdown prompts that teach an LLM client how to perform complex multi-step workflows using soft-ue-cli commands. They include step-by-step instructions, type mapping tables, and pre-filled CLI commands.\n\n**Available skills:**\n\n| Skill | Description |\n|-------|-------------|\n| `blueprint-to-cpp` | Generate C++ `.h`/`.cpp` from a Blueprint asset -- Layer 1 (class scaffolding) + Layer 2 (graph logic translation) |\n| `level-from-image` | Populate a UE level from a reference image -- analyzes the image, maps scene elements to project assets, batch-places actors, then iterates with visual feedback (viewport screenshots) |\n\n### MCP Server Mode\n\n| Command | Description |\n|---------|-------------|\n| `mcp-serve` | Run as an MCP (Model Context Protocol) server over stdio |\n\nExposes all 60+ commands as MCP tools and skills as MCP prompts. Compatible with Claude Desktop, Claude Code, Cursor, Windsurf, and other MCP clients. Requires the optional `mcp` extra:\n\n```bash\npip install soft-ue-cli[mcp]\n```\n\n---\n\n## Usage Examples\n\n### Spawn an actor at a specific location\n\n```bash\nsoft-ue-cli spawn-actor BP_Enemy --location 100,200,50 --rotation 0,90,0\n```\n\n### Query all actors of a specific class\n\n```bash\nsoft-ue-cli query-level --class-filter StaticMeshActor --limit 50\n```\n\n### Call a BlueprintCallable function\n\n```bash\nsoft-ue-cli call-function BP_GameMode SetDifficulty --args '{\"Level\": 3}'\n```\n\n### Inspect a Blueprint's components and variables\n\n```bash\nsoft-ue-cli query-blueprint /Game/Blueprints/BP_Player --include components,variables\n```\n\n### Start a PIE session and send input\n\n```bash\nsoft-ue-cli pie-session start --mode SelectedViewport\nsoft-ue-cli trigger-input key --key SpaceBar\nsoft-ue-cli pie-session stop\n```\n\n### Capture a screenshot of the editor viewport\n\n```bash\nsoft-ue-cli capture-screenshot viewport --output screenshot.png\n```\n\n### Edit a Blueprint graph programmatically\n\n```bash\nsoft-ue-cli add-graph-node /Game/BP_Player K2Node_CallFunction \\\n  --properties '{\"FunctionReference\": {\"MemberName\": \"PrintString\"}}'\nsoft-ue-cli connect-graph-pins /Game/BP_Player node1 \"exec\" node2 \"execute\"\n```\n\n### Manage Blueprint interfaces\n\n```bash\nsoft-ue-cli modify-interface /Game/ABP_Character add ALI_Locomotion\nsoft-ue-cli modify-interface /Game/ABP_Character remove ALI_Locomotion\nsoft-ue-cli query-blueprint /Game/ABP_Character --include interfaces\n```\n\n### Create an anim layer function on an AnimLayerInterface\n\n```bash\nsoft-ue-cli add-graph-node /Game/ALI_Locomotion AnimLayerFunction --graph-name FullBody\n```\n\n### Insert a node between two connected nodes\n\n```bash\nsoft-ue-cli insert-graph-node /Game/ABP_Hero AnimGraphNode_LinkedAnimLayer \\\n  {source-guid} OutputPose {target-guid} InputPose --graph-name AnimGraph\n```\n\n### Save and compile after edits\n\n```bash\nsoft-ue-cli compile-blueprint /Game/ABP_Hero\nsoft-ue-cli save-asset /Game/ABP_Hero\n```\n\n### Disconnect a specific wire (preserving others)\n\n```bash\nsoft-ue-cli disconnect-graph-pin /Game/ABP_Hero {node-guid} OutputPose \\\n  --target-node {other-guid} --target-pin InputPose\n```\n\n### Convert a Blueprint to C++ using the LLM skill\n\n```bash\n# List available skills\nsoft-ue-cli skills list\n\n# Feed the blueprint-to-cpp skill to your LLM client\nsoft-ue-cli skills get blueprint-to-cpp\n# The LLM reads the skill instructions, then runs:\n#   soft-ue-cli query-blueprint /Game/BP_Player --include all --include-inherited\n#   soft-ue-cli query-blueprint-graph /Game/BP_Player --list-callables\n# ...and generates the .h/.cpp files from the JSON responses\n```\n\n### Populate a level from a reference image\n\n```bash\n# Get the level-from-image skill instructions\nsoft-ue-cli skills get level-from-image\n# The LLM analyzes the image, searches for matching assets, places them,\n# then enters a visual feedback loop:\n#   soft-ue-cli set-viewport-camera --preset top --ortho-width 8000\n#   soft-ue-cli capture-viewport --source editor --output file\n# Compares screenshot to reference, auto-corrects, then asks for human feedback\n```\n\n### Profile with UE Insights\n\n```bash\nsoft-ue-cli insights-capture start --channels CPU,GPU\n# ... run your scenario ...\nsoft-ue-cli insights-capture stop\nsoft-ue-cli insights-analyze latest --analysis-type cpu\n```\n\n### Use as an MCP server (Claude Desktop, Cursor, etc.)\n\n```bash\n# Install with MCP support\npip install soft-ue-cli[mcp]\n\n# Run the MCP server (used in MCP client config, not run manually)\nsoft-ue-cli mcp-serve\n```\n\nAdd to your MCP client config (e.g. `claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"soft-ue-cli\": {\n      \"command\": \"soft-ue-cli\",\n      \"args\": [\"mcp-serve\"]\n    }\n  }\n}\n```\n\n---\n\n## Configuration\n\n### Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SOFT_UE_BRIDGE_URL` | *(none)* | Full bridge URL override (e.g. `http://192.168.1.10:8080`) |\n| `SOFT_UE_BRIDGE_PORT` | `8080` | Port override when using localhost |\n| `SOFT_UE_BRIDGE` | *(none)* | Set to `1` to enable conditional compilation in `Target.cs` |\n\n### Server Discovery Order\n\nThe CLI finds the bridge server using this priority:\n\n1. `--server` command-line flag\n2. `SOFT_UE_BRIDGE_URL` environment variable\n3. `SOFT_UE_BRIDGE_PORT` environment variable (constructs `http://127.0.0.1:\u003cport\u003e`)\n4. `.soft-ue-bridge/instance.json` file (searched upward from the current working directory -- written automatically by the plugin at startup)\n5. `http://127.0.0.1:8080` (default fallback)\n\n### Conditional Compilation for Teams\n\nIf you want only specific developers to compile the bridge plugin (to avoid any overhead for artists or designers), use the `SOFT_UE_BRIDGE` environment variable in your `Target.cs`:\n\n```csharp\n// MyGameEditor.Target.cs\nif (Environment.GetEnvironmentVariable(\"SOFT_UE_BRIDGE\") == \"1\")\n{\n    ExtraModuleNames.Add(\"SoftUEBridge\");\n}\n```\n\nDevelopers who need the bridge set `SOFT_UE_BRIDGE=1` in their environment. Everyone else builds without it.\n\n---\n\n## Compatibility\n\n| Requirement | Supported Versions |\n|-------------|--------------------|\n| **Unreal Engine** | 5.7 |\n| **Python** | 3.10+ |\n| **Platforms** | Windows, macOS, Linux |\n| **Build types** | Editor, Development, Shipping (cooked/packaged) |\n| **Dependencies** | `httpx \u003e= 0.27` (sole runtime dependency); optional `mcp \u003e= 1.2` for MCP server mode |\n\n---\n\n## Development\n\n```bash\ngit clone https://github.com/softdaddy-o/soft-ue-cli\ncd soft-ue-cli\npip install -e .\npytest -v\n```\n\n---\n\n## Feedback\n\n### Report a bug\n\n```bash\nsoft-ue-cli report-bug \\\n  --title \"Short bug summary\" \\\n  --description \"Detailed description\"\n```\n\nOptional flags: `--steps`, `--expected`, `--actual`, `--severity critical|major|minor`, `--no-system-info`.\n\n### Request a feature\n\n```bash\nsoft-ue-cli request-feature \\\n  --title \"Short feature summary\" \\\n  --description \"What the feature should do\"\n```\n\nOptional flags: `--use-case`, `--priority enhancement|nice-to-have`.\n\n### Share a testimonial\n\n```bash\nsoft-ue-cli submit-testimonial \\\n  --message \"Great tool for UE automation!\" \\\n  --agent-name \"Claude Code\" \\\n  --rating 5\n```\n\nOpens a GitHub Issue (label: `testimonial`) with auto-collected metadata (CLI version, usage streak, top tools). A consent prompt appears before posting unless `--yes` is passed.\n\nAll feedback commands require GitHub auth: set `GITHUB_TOKEN` env var or run `gh auth login`.\n\n---\n\n## Frequently Asked Questions\n\n### What is soft-ue-cli?\n\nsoft-ue-cli is a Python tool that gives AI agents and developers 60+ operations to control Unreal Engine 5. It works as an **MCP server** (for Claude Desktop, Cursor, Windsurf, and other MCP clients) or as a **standard CLI** (for Claude Code, shell scripts, CI/CD). It communicates with a C++ plugin (SoftUEBridge) running inside UE via HTTP/JSON-RPC, enabling actor spawning, Blueprint editing, material inspection, Play-In-Editor sessions, screenshot capture, performance profiling, and more.\n\n### How do AI agents use soft-ue-cli?\n\n**MCP clients** (Claude Desktop, Cursor, Windsurf): Connect via `soft-ue-cli mcp-serve`. The agent sees all 60+ tools with typed schemas and skill prompts — it can directly call UE operations without going through a terminal.\n\n**Claude Code**: Runs soft-ue-cli commands in the terminal. Add a `CLAUDE.md` file to your UE project describing available commands, and Claude Code autonomously queries your level, spawns actors, edits Blueprints, runs PIE sessions, and iterates on your game.\n\n### Can I use soft-ue-cli without an AI agent?\n\nYes. soft-ue-cli is a standard Python CLI. You can use it in shell scripts, CI/CD pipelines, custom automation tools, or any workflow that can invoke command-line programs. Every command outputs structured JSON, making it easy to parse and integrate.\n\n### Does it work with packaged/cooked Unreal Engine builds?\n\nYes. The SoftUEBridge plugin works in both the UE editor and in cooked/packaged builds (Development and Shipping configurations). This makes it useful for automated testing of packaged games.\n\n### What Unreal Engine versions are supported?\n\nsoft-ue-cli is actively developed against Unreal Engine 5.7.\n\n### Is there any runtime performance impact?\n\nThe SoftUEBridge plugin adds a lightweight HTTP server that listens on a single port. When no requests are being made, the overhead is negligible. The server processes requests on the game thread to ensure thread safety with UE APIs. For production builds where you do not want the bridge, use conditional compilation via the `SOFT_UE_BRIDGE` environment variable.\n\n### How do I change the default port?\n\nSet the `SOFT_UE_BRIDGE_PORT` environment variable before launching UE, or use the `--server` flag when running CLI commands. The default port is 8080.\n\n### Can multiple UE instances run simultaneously?\n\nYes. Each UE instance writes its port to a `.soft-ue-bridge/instance.json` file in the project directory. Use `SOFT_UE_BRIDGE_URL` or `--server` to target a specific instance when multiple are running.\n\n### How do I edit Blueprints from the command line?\n\nUse `query-blueprint-graph` to inspect existing graph nodes, `add-graph-node` to create new nodes, `connect-graph-pins` to wire them together, and `remove-graph-node` to delete nodes. This enables fully programmatic Blueprint construction -- useful for AI-driven development and automated testing.\n\n### What is the difference between soft-ue-cli and Unreal Engine Remote Control?\n\nUnreal Engine's built-in Remote Control API focuses on property access and preset-based workflows. soft-ue-cli provides a broader command set specifically designed for AI coding agents -- including Blueprint graph editing, StateTree manipulation, PIE session control, UE Insights profiling, widget inspection, and asset creation -- with a simpler setup process (one pip install, one plugin copy).\n\n### How do I use soft-ue-cli with Claude Desktop or Cursor?\n\nRun `pip install soft-ue-cli[mcp]` to install MCP support, then add the server to your MCP client config. For Claude Desktop, add to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"soft-ue-cli\": {\n      \"command\": \"soft-ue-cli\",\n      \"args\": [\"mcp-serve\"]\n    }\n  }\n}\n```\n\nThe MCP server exposes all 60+ commands as MCP tools and skills as MCP prompts. The AI editor can then directly call UE operations without going through the terminal.\n\n### What is the difference between soft-ue-cli and other UE MCP servers?\n\n| | soft-ue-cli | unreal-mcp, ue5-mcp, etc. |\n|---|---|---|\n| **Tools** | 60+ | 10–49 |\n| **Coverage** | Blueprints, materials, StateTrees, widgets, PIE, profiling, DataTables, CVars, Live Coding | Varies; most cover actors + basic assets |\n| **LLM skill prompts** | Yes (MCP prompts + CLI) | No |\n| **CLI mode** | Yes — shell scripts, CI/CD, Claude Code | MCP-only |\n| **Setup** | `pip install soft-ue-cli[mcp]` + copy one plugin | Varies; often requires custom C++/Python scripting |\n\n---\n\n## Support this project\n\nsoft-ue-cli is free, open-source, and maintained by one person. If it saves you hours of manual editor work or helps your AI workflow, consider supporting continued development:\n\n- [Sponsor on GitHub](https://github.com/sponsors/softdaddy-o) — recurring or one-time\n- [Buy me a coffee on Ko-fi](https://ko-fi.com/softdaddy) — quick one-time donation\n\nUsing soft-ue-cli in your project? [Share your experience](https://github.com/softdaddy-o/soft-ue-cli/issues/new?labels=testimonial\u0026title=Testimonial) — I'd love to hear about it.\n\n---\n\n## Roadmap\n\n- UE 5.8 support\n- More LLM skills (Material-to-HLSL, Animation Blueprint automation)\n- Visual diff for Blueprint changes\n- CI/CD integration examples\n\n---\n\n## License\n\nMIT License. See [LICENSE](https://github.com/softdaddy-o/soft-ue-cli/blob/main/LICENSE) for details.\n\n---\n\n## Links\n\n- **PyPI**: [pypi.org/project/soft-ue-cli](https://pypi.org/project/soft-ue-cli/)\n- **GitHub**: [github.com/softdaddy-o/soft-ue-cli](https://github.com/softdaddy-o/soft-ue-cli)\n- **Claude Code**: [docs.anthropic.com/en/docs/claude-code](https://docs.anthropic.com/en/docs/claude-code)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftdaddy-o%2Fsoft-ue-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftdaddy-o%2Fsoft-ue-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftdaddy-o%2Fsoft-ue-cli/lists"}