minesweeper-mcp
# minesweeper-mcp (stdio)
Rails 8 で動く Minesweeper Web/API を操作する **stdio MCP server** です。
Claude Code / Claude Desktop などの MCP Host からツールとして呼び出します。
- 起動: `npx minesweeper-mcp`(公開後)
- 通信: stdio(stdout は MCP プロトコル専用 / ログは stderr のみ)
- 操作: Rails の REST API に対して `start/open/flag/chord/end` を呼ぶ
API: [minesweeper-for-ai](https://github.com/geeknees/minesweeper-for-ai)
---
## Quick Start
### 1) 必要要件
- Node.js 22+(推奨: 24+)
- Rails 側の Web/API が起動していること
### 2) 環境変数
- `MINESWEEPER_BASE_URL` (必須): `https://example.com`(末尾スラッシュなし推奨)
- `MINESWEEPER_BEARER_TOKEN`(操作系に必須): Rails 側で発行した token
例:
```bash
export MINESWEEPER_BASE_URL="https://example.com"
export MINESWEEPER_BEARER_TOKEN="xxxxxx"
```
### 3) ローカル起動(開発中)
```bash
npm install
npm run build
node dist/index.js
```
詳細: `docs/development.md`
---
## MCPの設定方法(Host側)
MCP Host(Claude Desktop / Claude Code など)の設定ファイルに、stdioサーバとして登録します。
ローカルで動かす場合は `dist/index.js` を指定し、環境変数を渡してください。
### ローカル開発(distを直接起動)
```json
{
"mcpServers": {
"minesweeper": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/minesweeper-mcp/dist/index.js"],
"env": {
"MINESWEEPER_BASE_URL": "http://localhost:3000",
"MINESWEEPER_BEARER_TOKEN": "YOUR_TOKEN"
}
}
}
}
```
### 公開後(npxで起動)
```json
{
"mcpServers": {
"minesweeper": {
"command": "npx",
"args": ["-y", "github:geeknees/minesweeper-mcp"],
"env": {
"MINESWEEPER_BASE_URL": "https://example.com",
"MINESWEEPER_BEARER_TOKEN": "YOUR_TOKEN"
}
}
}
}
```
> 設定ファイルの場所や再読み込み方法は、使用しているMCP Hostのドキュメントに従ってください。
---
## Docs
- MCP tool reference: `docs/tools.md`
- Development guide: `docs/development.md`
- Rails API overview: `docs/api.md`
- Background article: `docs/minesweeper-mcp-article.md`
---
## License
MIT
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose with no ambiguity: chord, end, flag, open, state, list games, and start game are all unique actions in the Minesweeper domain. The descriptions clearly differentiate between game manipulation actions (chord, flag, open), game lifecycle actions (end, start), and query actions (state, list).
All tools follow a perfectly consistent verb_noun pattern with 'game_' or 'user_' prefixes indicating the resource type. The naming is systematic and predictable: game_chord, game_end, game_flag, game_open, game_state, user_games, user_start. This consistency makes the tool set easy to understand and navigate.
With 7 tools, this is well-scoped for a Minesweeper game server. Each tool earns its place by covering essential operations: starting/ending games, cell interactions (open, flag, chord), state retrieval, and game listing. The count is neither too thin nor bloated, perfectly matching the domain's requirements.
The tool surface provides complete coverage for Minesweeper gameplay. It includes all core operations: starting a game (user_start), ending it (game_end), cell interactions (open, flag, chord), state monitoring (game_state), and discovery (user_games). There are no obvious gaps—agents can fully manage the game lifecycle and player interactions without dead ends.