Fast code search for Unreal Engine projects in Claude Code.
- 11 MCP tools for searching types, members, files, assets, and code
- Indexes AngelScript, C++, Blueprints, and config files
- Sub-20ms queries across 100K+ types and 600K+ members
- Full-text code search via Zoekt (optional)
- Offline asset search across 400K+ content assets
In Claude Code, run:
/plugin marketplace add EmbarkStudios/UnrealClaudeFileHelper
/plugin install embark-claude-index@embark-claude-index
Or use the interactive plugin manager:
/plugin
Restart to load the plugin and MCP tools.
After restart, run the setup skill:
/embark-claude-index:setup
This will guide you through:
- Installing dependencies
- Detecting your
.uprojectfile and project structure - Configuring engine root and source paths
- Generating
config.json - Starting the indexing service and file watcher
- Node.js 20.18+ (22+ recommended)
- WSL2 with Ubuntu (Windows) — the indexing service runs on Linux for SQLite performance
- Go 1.20+ (optional) — for Zoekt full-text search
┌─────────────────┐ POST /internal/ingest ┌──────────────────┐
│ File Watcher │ ──────────────────────────── │ Indexing Service │
│ (Windows) │ │ (WSL / Linux) │
│ chokidar watch │ │ Express + SQLite │
└─────────────────┘ │ In-memory index │
│ Zoekt (optional) │
└────────┬─────────┘
│ HTTP API
┌────────┴─────────┐
│ MCP Bridge │
│ (stdio ↔ HTTP) │
└──────────────────┘
│
Claude Code reads
tools via MCP
- File Watcher (
src/watcher/watcher-client.js): Watches project directories for file changes, parses source files, and sends them to the service via HTTP. - Indexing Service (
src/service/index.js): Stores data in SQLite, loads everything into memory for fast queries. Optionally integrates with Zoekt for full-text search. - MCP Bridge (
src/bridge/mcp-bridge.js): Translates MCP tool calls from Claude Code into HTTP API calls against the service. - Dashboard (
http://localhost:3847): Web UI showing system health overview, watcher status with start/restart controls, query analytics, and MCP tool usage.
| Tool | Description |
|---|---|
unreal_find_type |
Find classes, structs, enums, delegates by name |
unreal_find_children |
Find all classes inheriting from a parent |
unreal_find_member |
Find functions, properties, enum values by name |
unreal_explain_type |
Get comprehensive type info (definition + members + children) |
unreal_find_file |
Find source files by filename |
unreal_find_asset |
Search 400K+ Unreal assets by name |
unreal_browse_module |
List types and files in a module/directory |
unreal_list_modules |
Discover code organization and module tree |
unreal_grep |
Full-text search across indexed source code |
unreal_refresh_index |
Rebuild the index on demand |
unreal_batch |
Execute multiple queries in a single call |
Configuration lives in config.json (generated by the setup wizard). See config.example.json for the full schema.
Key sections:
{
"projects": [
{
"name": "MyGame",
"paths": ["C:/Path/To/Project/Script"],
"language": "angelscript",
"extensions": [".as"]
}
],
"service": {
"port": 3847,
"host": "127.0.0.1"
},
"zoekt": {
"enabled": true,
"webPort": 6070
}
}Supported project languages: angelscript, cpp, content (assets), config (ini files).
Tools say "Unreal Index Service is not running"
- Start the service:
systemctl --user start unreal-index(or./start-service.sh --bgfrom the repo) - Check status:
systemctl --user status unreal-index - Check health:
curl http://127.0.0.1:3847/health - View logs:
journalctl --user -u unreal-index -f
No results returned
- Check that the file watcher is running and has completed initial indexing
- Verify
config.jsonpaths point to your actual project directories - Try removing the
projectfilter — it may not match your project names
Node.js version errors
- The service requires Node.js 20.18+. Check with
node --version - On WSL, you may need to install a newer Node.js separately
WSL networking issues
- Ensure
.wslconfighasnetworkingMode=mirroredfor localhost access - The service on WSL port 3847 should be accessible from Windows via
localhost:3847
Setup wizard doesn't detect my project
- Run
node src/setup.jsdirectly and provide paths manually - Or copy
config.example.jsontoconfig.jsonand edit paths by hand