Metadata-Version: 2.4
Name: ue5mcp
Version: 0.1.0
Summary: MCP server exposing UE5 editor automation to Claude
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: mcp>=1.0.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: starlette>=0.27.0
Requires-Dist: uvicorn>=0.27.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: respx>=0.20.0; extra == "dev"

# UE5MCP

MCP server exposing UE5 Remote Control API to Claude.

## Quick Start

### Option A — uvx (recommended)
No Python installation needed. Requires [uv](https://docs.astral.sh/uv/getting-started/installation/) (one-time install, ~10 seconds).

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "ue5mcp": {
      "command": "uvx",
      "args": ["ue5mcp"]
    }
  }
}
```

To override a port: add an `"env"` block, e.g. `"UE5_PORT": "30020"`.

### Option B — Windows .exe
1. Download `ue5mcp.exe` from [GitHub Releases](https://github.com/huyngo878/UE5MCP/releases)
2. Double-click to run — server starts on `127.0.0.1:8000`
3. Add to `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "ue5mcp": {
      "command": "C:\\path\\to\\ue5mcp.exe"
    }
  }
}
```

### UE5 side (both options)
1. Enable the **Remote Control** plugin in UE5 (Edit → Plugins → search "Remote Control" → Enable → restart)
2. Copy `UnrealMCP/` into your project's `Plugins/` folder, regenerate project files, rebuild

---

## build (contributors)

### Stack
Runtime: Python 3.10+
Deps: mcp>=1.0.0, httpx>=0.27.0, starlette>=0.27.0, uvicorn>=0.27.0, python-dotenv>=1.0.0

### Installation

```bash
pip install -r requirements.txt
python server.py
```

### Tests

```bash
pytest tests/
```

### Project Structure

- `server.py` → MCP entry, tool registry
- `ue5_client.py` → all HTTP to UE5
- `ue5_plugin_client.py` → socket transport to UnrealMCP plugin
- `tools/` → tool implementations
- `knowledge/` → object paths + console cmd index
- `UnrealMCP/` → UE5 plugin scaffold

### Conventions

- async/await throughout
- all UE5 calls via ue5_client.py or ue5_plugin_client.py
- new tools go in tools/, register in server.py
- object paths: `/Game/Maps/Level.Level:PersistentLevel.ActorName`
