Skip to main content
Glama
basementstudio

MCP DOS - Classic DOS Gaming Server

README.md
# MCP DOS - Classic DOS Gaming Server

<a href="https://cursor.com/install-mcp?name=mcp-dos&config=ew0KICAgICAgInR5cGUiOiAic3RkaW8iLA0KICAgICAgImNvbW1hbmQiOiAibnB4IiwNCiAgICAgICJhcmdzIjogWw0KICAgICAgICAiLXkiLA0KICAgICAgICAibWNwLWRvc0BsYXRlc3QiDQogICAgICBdLA0KICAgICAgImVudiI6IHt9DQp9"><img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="Add mcp-dos MCP server to Cursor" height="32" /></a>

A Model Context Protocol (MCP) server that provides access to classic DOS games through js-dos emulation. Play legendary games like DOOM, Super Mario, Tetris, and Duke Nukem 3D directly from your AI assistant.

## Features

- **Classic DOS Games**: Play iconic DOS games including DOOM, Super Mario, Tetris, and Duke Nukem 3D
- **Web-based Emulation**: Uses js-dos for authentic DOS gaming experience in the browser
- **Fullscreen Support**: Enjoy games in fullscreen mode with proper controls
- **Keyboard Mapping**: Pre-configured key mappings for each game with on-screen controls
- **Server Management**: Tools to start, stop, and manage the gaming server

## Available Games

- **DOOM** (`doom`) - The legendary first-person shooter
- **Super Mario** (`super-mario`) - Classic platformer adventure
- **Tetris** (`tetris`) - The timeless puzzle game
- **Duke Nukem 3D** (`duke3d`) - Action-packed FPS adventure

## Getting Started

Add this server to your MCP client configuration:

```json
{
  "mcpServers": {
    "mcp-dos": {
      "command": "npx",
      "args": ["-y", "mcp-dos"]
    }
  }
}
```

## Game Controls

Each game comes with pre-configured controls displayed on screen:

### DOOM
- **Arrow Keys**: Movement (Forward/Back/Left/Right)
- **W**: Use
- **S**: Fire
- **A/D**: Strafe left/right
- **Enter**: Menu navigation

### Super Mario
- **Arrow Left/Right**: Movement
- **Alt**: Jump

### Tetris
- **7/8**: Move left/right
- **9**: Rotate piece
- **Space**: Drop piece
- **Enter**: Menu navigation

### Duke Nukem 3D
- **Arrow Keys**: Movement
- **Ctrl**: Fire
- **A**: Jump
- **Enter**: Menu navigation

## Tools Available

### 1. `List DOS Games`
Lists all available DOS games that can be played through the server.

**Returns:**
- Array of available game slugs
- Instructions on how to play games using the `open-dos` tool

### 2. `open-dos`
Opens and plays a specific DOS game using js-dos emulation in a browser window.

**Parameters:**
- `game` (string): DOS game slug to play (e.g., 'doom', 'super-mario', 'tetris', 'duke3d')

**Features:**
- Launches game in a new browser window
- Displays game-specific controls on screen
- Fullscreen support
- Authentic DOS gaming experience

### 3. `close-app`
Closes an existing running mcp-dos server instance.

**Parameters:**
- `port` (number): The port number of the server to close

**Use Cases:**
- Clean up server instances
- Resolve port conflicts
- Server maintenance

## Development

```bash
# Install dependencies
pnpm install

# Build the project
pnpm build

# Run the server
pnpm start
```

## Requirements

- Node.js ≥20.0.0
- Modern web browser with JavaScript enabled
- Internet connection for js-dos CDN resources

> This project is built using the [xmcp](https://xmcp.dev) framework.

TDQS

A3.6/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: close-app manages server lifecycle, List DOS Games provides a catalog, and open-dos launches a specific game. There is no overlap in functionality, and the descriptions clearly differentiate their roles.

Naming Consistency2/5

The naming is inconsistent with mixed conventions: close-app uses kebab-case, List DOS Games uses title case with spaces, and open-dos uses kebab-case. There is no uniform verb_noun pattern, and the styles vary significantly across tools.

Tool Count3/5

With only 3 tools, the count is borderline for a gaming server scope. It covers core operations (list, open, close), but feels thin compared to typical gaming servers that might include more features like save/load, settings, or game management. However, it is functional for basic play.

Completeness4/5

The tool set covers the essential lifecycle: list games, open a game, and close the server. Minor gaps exist, such as no tools for saving game progress, adjusting settings, or managing multiple sessions, but agents can perform basic gaming workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues