ue5-gameplay-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| game_connectA | Connect to the running game and report what is on the other end. Call this first, or after the game has been restarted. |
| game_statusB | Connection state, current level, and any input still being held. |
| game_reset_inputA | Release every held button, centre the sticks, lift the mouse buttons. Use this after |
| game_observeA | Look at the game: a screenshot plus the log lines since the last look.
|
| game_stateA | Structured world state -- no screenshot, cheap to call often. Returns the level name, world time and pause/dilation, the player pawn's
transform, velocity and movement mode, the camera, and the nearest actors
with their distance and their normalized screen position (the same 0..1
coordinates
Prefer this over reading numbers off the screen: it is exact, and it costs a fraction of the tokens an image does. |
| game_logC | New log lines since the last read. |
| game_wait_for_logA | Block until a log line matches This is the assertion primitive for automated tests: fire an action, then wait for the line the game prints when the thing you expected happened. |
| game_padA | Press pad buttons and push sticks for buttons: any of A B X Y UP DOWN LEFT RIGHT L1 R1 L2 R2 L3 R3 SELECT START HOME TOUCHPAD (aliases: CROSS/CIRCLE/SQUARE/TRIANGLE, LB/RB/LT/RT, BACK/OPTIONS/MENU). sticks: lx/ly left stick, rx/ry right stick (camera), l2/r2 analog triggers. Range -1..1, UE convention -- ly=+1 is forward. hold: keep this input applied after the call returns, so the character keeps moving between your turns. Clear it with game_reset_input. Example -- run forward for half a second and look at the result: game_pad(ly=1.0, duration=0.5) Example -- jump while running: game_pad(buttons=["A"], ly=1.0, duration=0.3) Example -- move and get exact positions back, not just a picture: game_pad(ly=1.0, duration=0.5, state=True) |
| game_pad_sequenceA | Run several pad states back to back in a single round trip. Each step is {"buttons": [...], "sticks": {"ly": 1.0}, "duration": 0.2, "gap": 0.05}. Use this for combos and for anything where the timing between inputs matters more than looking in between. Example -- a three hit combo: [{"buttons": ["X"], "duration": 0.1, "gap": 0.25}, {"buttons": ["X"], "duration": 0.1, "gap": 0.25}, {"buttons": ["Y"], "duration": 0.1}] |
| game_keyB | Tap a keyboard key for
|
| game_mouseA | Move or click the mouse at normalized screen coordinates. x/y are 0..1 with the origin at the top left -- exactly the numbers printed
on a action: click, down, up, double, move, setpos, wheel button: L, M, R, T1, T2 This is the fallback that works regardless of how the game builds its UI, when game_ui_click cannot see the widget tree. |
| game_consoleA | Run a console command and return the log lines it produced. Useful beyond cheats:
|
| game_time_scaleA | Slow down or speed up the world ( Drop to 0.1-0.3 when you need to place an action precisely; the game keeps running but each of your turns costs far less game time. |
| game_ui_dumpA | Dump the UMG widget tree. mode: all, button, debug. Only sees widgets registered through UMG. A game with custom Slate UI will come back empty or error -- that is expected, fall back to the pad or to game_observe(grid=True) plus game_mouse. |
| game_ui_clickB | Click a UMG widget by name. action: click, press, release, hover, unhover. Fast and exact when it works; use game_ui_dump first to learn the names. |
| game_ui_focusB | Set the game's input focus. mode: game, ui, game_and_ui, window. Bring the window forward and hand focus back to the game with mode="game" if input seems to be going nowhere. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Each tool targets a distinct interaction mode: connection, observation, state, input (pad/key/mouse/UI), logging, console, time scaling, and focus. Even overlapping actions like game_mouse vs game_ui_click are explicitly differentiated by target (screen coordinates vs widget tree) and fallback behavior.
All tools follow the predictable 'game_' prefix with an action verb (connect, log, observe, state, pad, key, mouse, console). The sub-group 'game_ui_*' maintains consistency with a clear sub-domain. No mixed conventions or vague verbs.
16 tools is slightly above the ideal 3-15 range but fully justified for a comprehensive UE5 gameplay API covering connection, observation, multiple input methods, UI interaction, and convenience utilities. Each tool serves a clear practical purpose.
The surface covers the full cycle: connect, observe (screenshot/state), act (pad/key/mouse/UI), read logs, wait for conditions, adjust time scale, and reset input. No obvious dead ends or missing operations for controlling a game; even edge cases like UI failure have explicit fallback guidance.