Unreal Engine MCP server exposing tools for Python execution, image capture, web research, and other editor operations via the Model Context Protocol
Capture a screenshot delivered as a REAL image (the client renders it — no base64 text blob, no token blowout). source='game' captures the PIE game viewport INCLUDING the Slate/UMG HUD (the thing CaptureViewport cannot see); 'window' captures the whole active editor window (any editor UI); 'editor' captures the active editor viewport scene (no UI). Also writes a PNG under Saved/VibeUE/Captures and returns its path.
Web research and GPS geocoding with no API key required. Actions: search (DuckDuckGo HTML search with real web results), fetch_page (Jina AI Reader converts any URL to clean markdown), geocode (OpenStreetMap Nominatim: place name → lat/lng), reverse_geocode (OpenStreetMap Nominatim: lat/lng → place name)
Discover methods and attributes of one or MORE Python classes in a single call. PREFER batching: class_name accepts a comma-separated list ('unreal.MaterialService, unreal.WidgetService') and method_filter ORs keywords with '|' ('create|delete|compile'). One batched call replaces several single-class calls.
Discover contents of a Python module. IMPORTANT: The module name is 'unreal' (lowercase, not 'Unreal'). Use this before execute_python_code to find available classes/functions.
Execute Python code in Unreal Engine. IMPORTANT: Use 'import unreal' (lowercase). For subsystems use: unreal.get_editor_subsystem(unreal.LevelEditorSubsystem). Returns stdout, stderr, and execution status. A non-empty resident_maps in the reply means a map other than the open level is loaded in memory and the NEXT level load will crash the editor until it is released.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 21 | <=2025-11-25 | v2 |