Play DOOM via MCP - works with Claude Code, Cursor, and any MCP client
Three tools with complete input schemas and detailed descriptions. doom_start and doom_action have extensive, LLM-optimized descriptions (200+ chars) with clear usage rules. All parameters are typed with min/max constraints. However, output schemas are completely undocumented, LLMs cannot plan downstream actions or extract structured data. No error handling guidance. doom_screenshot lacks parameter descriptions. Missing idempotency and recovery patterns for destructive operations (game restart).
Perform actions in DOOM. All actions held simultaneously for the tick duration. Actions: forward, backward, turn_left, turn_right, strafe_left, strafe_right, fire, use, run, 1-7 FIRE: 'fire' once = hold fire. Pistol auto-fires every ~10 ticks. Do NOT repeat 'fire'. RULES: 1. ONLY fire when enemies in sight and angle near 0. NEVER combine turn+fire. 2. To reach an item/enemy: turn to face it (get angle to ~0) in ONE action, then 'forward,run' in the NEXT. Don't spiral - 2 actions max. 3. RECEDING items are auto-hidden after 2 ticks — if an item disappears, it was unreachable. Don't chase it. 4. Doors and switches appear as NEARBY — press 'use' while facing them to open/activate. 5. In 'I direct' mode: ONE action, describe surroundings vividly, then WAIT. 6. Use big ticks for movement (20-35). Small ticks (2-5) for precise aiming only. 7. Items only shown when player needs them (health items hidden at full HP). 8. SAFETY: Never advance within close range of a healthy Imp or Pinky Demon — they deal massive melee damage. Stay at nearby range or farther and strafe. 9. ESCAPE: When low HP, use 'strafe_left,backward,run' or 'strafe_right,backward,run' — do NOT turn in place while retreating. 10. If an enemy is not taking damage after 3+ shots, it may be behind cover — reposition rather than wasting ammo.
Save a full-resolution screenshot of the current DOOM view and open it in an image viewer. Use this when the user asks to see what's happening, wants to see the screen, or asks for a screenshot. Does not advance the game.
Start or restart DOOM. Use this whenever someone says 'play doom', 'new game', 'restart', 'start over', etc. Safe to call even if a game is already running — it will restart cleanly. Before calling, ask the user: 1. 'I direct' - user gives commands, you execute with doom_action 2. 'You play' - you play autonomously with doom_action After starting, use doom_action to play. Describe what happens each turn.
Output schemas completely undocumented. LLMs cannot infer what doom_start, doom_action, or doom_screenshot return, blocking downstream planning and data extraction.
doom_screenshot has no parameter descriptions. The empty properties object leaves LLMs unable to understand what the tool accepts or requires.
No error handling guidance. Tools do not document failure modes, recovery steps, or what LLMs should do if a call fails (retry, ask user, abort).
doom_start is destructive (restarts game, loses progress) but lacks confirmation or dry-run support. No idempotency guarantee documented.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Parameter descriptions lack format/constraint details. E.g., 'actions' in doom_action lists valid values in description text, not as enum constraint. LLMs cannot parse this reliably.