Skip to main content
Glama
Vic563

Minesweeper MCP Server

by Vic563
README.md
# Minesweeper MCP Server

A Model Context Protocol (MCP) server that provides Minesweeper game functionality. Users can create custom-sized Minesweeper boards and play the classic game through AI assistants.

## Features

- **Custom Board Sizes**: Create Minesweeper boards of any size (up to 50x50)
- **Flexible Mine Count**: Set any number of mines (within reasonable limits)
- **Multiple Games**: Manage multiple concurrent game boards
- **Visual Display**: ASCII art representation of the game board
- **Game State Tracking**: Win/loss detection and timing
- **Cell Operations**: Reveal cells, flag/unflag suspected mines

## Installation

1. Clone or download this repository
2. Install dependencies:
   ```bash
   npm install
   ```
3. Build the TypeScript code:
   ```bash
   npm run build
   ```
4. Start the server:
   ```bash
   npm start
   ```

## Available Tools

### `create_board`
Create a new Minesweeper board with custom dimensions and mine count.

**Parameters:**
- `id` (string): Unique identifier for the board
- `width` (number): Number of columns (1-50)
- `height` (number): Number of rows (1-50)
- `mineCount` (number): Number of mines to place

**Example:**
```
Create a 10x10 board with 15 mines, ID "game1"
```

### `reveal_cell`
Reveal a cell on the board. If it's a mine, the game ends. If it's empty, adjacent cells may be automatically revealed.

**Parameters:**
- `boardId` (string): ID of the board
- `x` (number): Column coordinate (0-based)
- `y` (number): Row coordinate (0-based)

**Example:**
```
Reveal cell at position (5, 3) on board "game1"
```

### `flag_cell`
Flag or unflag a cell as a suspected mine.

**Parameters:**
- `boardId` (string): ID of the board
- `x` (number): Column coordinate (0-based)
- `y` (number): Row coordinate (0-based)

**Example:**
```
Flag cell at position (2, 7) on board "game1"
```

### `get_board`
Display the current state of a board.

**Parameters:**
- `boardId` (string): ID of the board to display

### `list_boards`
List all active game boards with their status.

**Parameters:** None

### `delete_board`
Delete a game board.

**Parameters:**
- `boardId` (string): ID of the board to delete

## Game Symbols

- `.` = Hidden cell
- `F` = Flagged cell
- `*` = Mine (revealed when game ends)
- `1-8` = Number of neighboring mines
- ` ` (space) = Empty cell with no neighboring mines

## Example Game Flow

1. **Create a board:**
   ```
   create_board with id="easy", width=9, height=9, mineCount=10
   ```

2. **Start revealing cells:**
   ```
   reveal_cell on board="easy" at x=4, y=4
   ```

3. **Flag suspected mines:**
   ```
   flag_cell on board="easy" at x=0, y=0
   ```

4. **Check board status:**
   ```
   get_board for boardId="easy"
   ```

5. **Continue until you win or hit a mine!**

## Game Rules

- **Objective**: Reveal all cells that don't contain mines
- **Winning**: Reveal all non-mine cells
- **Losing**: Reveal a cell containing a mine
- **Numbers**: Show count of mines in the 8 adjacent cells
- **Flagging**: Mark cells you suspect contain mines (prevents accidental revelation)
- **Auto-reveal**: When you reveal an empty cell (0 neighbors), all adjacent cells are automatically revealed

## Development

### Project Structure
```
src/
├── index.ts          # Main MCP server implementation
└── minesweeper.ts    # Core game logic and types
```

### Scripts
- `npm run build` - Compile TypeScript to JavaScript
- `npm run dev` - Watch mode for development
- `npm start` - Run the compiled server

## Integration with AI Assistants

This MCP server can be integrated with AI assistants that support the Model Context Protocol, such as Claude Desktop. The AI can help you:

- Create boards with optimal mine distributions
- Suggest strategic moves
- Analyze board patterns
- Track multiple games simultaneously

## License

MIT License - feel free to use and modify as needed!

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: create_board for initialization, delete_board for removal, flag_cell for marking, get_board for state retrieval, list_boards for enumeration, and reveal_cell for uncovering. The actions and targets are unambiguous, preventing agent misselection.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case (e.g., create_board, flag_cell, get_board). The verbs are clear and descriptive, and there are no deviations in style or convention throughout the set.

Tool Count5/5

With 6 tools, the count is well-scoped for a Minesweeper game server. It covers core operations without bloat, and each tool earns its place by addressing a specific aspect of board management and gameplay.

Completeness5/5

The toolset provides complete CRUD/lifecycle coverage for the Minesweeper domain: create, list, get, and delete for boards, plus reveal and flag for cell interactions. There are no obvious gaps, enabling agents to handle all essential gameplay workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues