Doom MCP logo

Doom MCP

Play DOOM through MCP clients by sending movement, combat, interaction, and game-start actions to an embedded engine.

Install Doom MCP

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "doom-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "doom-mcp"
      ],
      "env": {
        "DOOM_WAD_PATH": "YOUR_VALUE_HERE",
        "DOOM_MCP_DEBUG": "YOUR_VALUE_HERE"
      }
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Values are written into the snippet above so you can paste it as is. They never leave your browser.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

npx -y doom-mcp

Process exited before answering initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 2d ago.

Overview

  • doom
  • gaming
  • mcp
  • ai-agents

The doom-mcp MCP server connects MCP clients to a native DOOM engine embedded through Rust and FFI. It advances gameplay from tool calls and returns game state, enemy and item information, interactable doors or switches, and PNG frames for vision. Use it when you want an AI assistant to control or observe single-player DOOM through a standard stdio MCP configuration. It supports guided play, autonomous play, selectable episodes and maps, and custom WAD files.

Use cases

  • Play single-player DOOM through an AI coding client
  • Direct an AI through combat and level exploration
  • Watch an AI navigate E1M1 autonomously
  • Test custom DOOM WAD files with MCP actions

Key features

  • Embedded doomgeneric engine via Rust FFI
  • Game-state and enemy-intel responses
  • PNG gameplay frames for AI vision
  • Configurable episodes, maps, and difficulty
  • Custom WAD file support
  • Guided and autonomous play modes

Tools2

What Doom MCP lets your agent do. Expand a tool for its parameters.

Self-reported~2 tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked Today

Recent health check succeeded.

4/4 checks healthy over the last 21d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 14d ago via OSV.dev · doom-mcp (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars13Stargazers on the source repository.
npm downloads370Package downloads in the last 30 days.
Last commit7mo agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Tools exposed2Callable tools this server registers over MCP.
Directory activity1 viewsConfig copies, upvotes, and views on AllMCPs.

How Doom MCP works

What doom-mcp does

The doom-mcp MCP server lets an MCP-compatible AI client play single-player DOOM. The engine reports health, armor, ammunition, kills, position, weapon, visible enemies, nearby items, and nearby doors or switches. Responses also include a small PNG frame so the client can inspect the current scene.

Gameplay can be directed one action at a time or left to the AI. A session can begin on a selected episode and map, with difficulty levels from 1 through 5. The default starting point is episode 1, map 1, at medium difficulty.

The project includes a bundled Freedoom WAD for immediate use. It can also load a user-provided DOOM, DOOM 2, shareware, or other custom WAD through configuration.

How the doom-mcp MCP server works

The server is a Rust MCP process that links the doomgeneric C engine through FFI. It does not run the game as a child process or use an emulator. MCP tool calls inject input and advance the engine for a specified number of ticks; the process then extracts state from the engine and renders the current frame.

The documented gameplay interface includes doom_start, doom_action, and doom_screenshot. doom_start starts or restarts a game. doom_action accepts comma-separated simultaneous inputs such as movement, turning, strafing, firing, using, running, and weapon selection, plus an optional tick count. doom_screenshot writes a 320×200 image to the system temporary directory and opens it in the default image viewer without materially advancing the game.

The engine runs at 35 ticks per second. The default action duration is seven ticks, approximately 0.2 seconds, while 35 ticks is approximately one second. Turning and firing are best issued separately because firing while turning can waste ammunition.

Setup and configuration

Register the package as a stdio MCP server. For Claude Code, the documented command uses claude mcp add doom --scope user -- npx -y doom-mcp. Other clients can use an MCP configuration with npx as the command and -y doom-mcp as its argument.

DOOM_WAD_PATH selects a custom IWAD file. If it is omitted, the bundled Freedoom WAD is used. DOOM_MCP_DEBUG=1 enables debug logging in doom-mcp.log under the system temporary directory.

Tools and capabilities

  • Start or restart a game with configurable skill, episode, and map values.
  • Advance gameplay with movement, turning, strafing, running, firing, using, and weapon-switch inputs.
  • Inspect health, armor, ammunition, kills, position, weapon, enemies, items, doors, and switches.
  • Receive a thumbnail frame with gameplay state for client-side vision.
  • Save and open a full-resolution screenshot without advancing the game.
  • Use custom DOOM or DOOM 2 WAD files through DOOM_WAD_PATH.

Limitations and notes

The server does not implement multiplayer.

Each action returns roughly 1–2 KB of state text and a PNG thumbnail of about 6 KB. The README estimates approximately 1,500–2,500 tokens per action and 75,000–125,000 tokens for a typical 50-action session.

Enemy visibility uses DOOM's native line-of-sight check, so the AI is not intended to see enemies through walls. Items are detected by proximity but still require the player to walk over them. The project reports difficulty with enemies behind partial cover and complex door sequences.

The repository separately lists fire and use as exposed MCP tools, while its detailed tools reference describes the broader doom_action interface containing those inputs.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Doom MCP

doom-mcp is an MCP server that connects AI clients to an embedded DOOM engine through Rust and FFI. Its main tools start or restart games, advance gameplay with movement and combat actions, and capture screenshots. It returns game state, enemy and item information, interactable objects, and PNG frames for client-side inspection.

Install it by registering `npx -y doom-mcp` as a stdio MCP server. Claude Code can use `claude mcp add doom --scope user -- npx -y doom-mcp`; Cursor, Windsurf, and other MCP clients can add the same command and arguments to their MCP configuration.

Yes, set `DOOM_WAD_PATH` to the path of the WAD file in the MCP server environment. The server can use DOOM, DOOM 2, shareware, or other custom WAD files. Without that variable, it uses the bundled Freedoom WAD.

Yes, doom-mcp works with Cursor through a standard stdio MCP configuration. Add `npx` as the command and `-y doom-mcp` as its argument, then start a new session and ask the client to play DOOM.

No, multiplayer is not implemented. The documented server supports single-player DOOM, with either user-directed actions or autonomous AI control.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewDoom MCP AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/doom-mcp?style=directory)](https://allmcps.com/mcp/doom-mcp)
HTML Embed
<a href="https://allmcps.com/mcp/doom-mcp"><img src="https://allmcps.com/api/badge/doom-mcp?style=directory" alt="Doom MCP on AllMCPs" /></a>