Show HN: I built a MCP server so Claude can play Minesweeper
123 tonypan 38 3/20/2025, 7:58:57 AM github.com ↗
Hi! I build an MCP server that allows clients to play Minesweeper. It turns out that Claude is not very good at it (makes obvious mistakes, hasn't won a single game on a 9x9 board after many attempts).
I am curious how I can prompt Claude to do better?
It doesn’t define what behavior should be where in a given app, just how to communicate what that behavior is and how to invoke it.
RPC and REST are architectural patterns/philosophies, not protocols.
SOAP and HTTP are protocols, like MCP.
Did Mario not do it for you? https://youtu.be/dCC7QoV5a6E
I would report only on the positions that has cleared neighbors, and hope for the best. Good luck!
(Impressive work BTW, I think we haven't even started to see the possibilities of MCP and I love people being this imaginative)
use this format for board representation
``` { "game_state": { "board_size": { "width": 9, "height": 9 }, "mines_total": 10, "mines_flagged": 2, "game_status": "in_progress", // "in_progress", "won", "lost" "time_elapsed": 45, "difficulty": "beginner" // "beginner", "intermediate", "expert", "custom" }, "board": [ ["1", "?", "?", "2", "1", "1", "1", "1", "0"], ["1", "2", "?", "2", "?", "1", "1", "?", "0"], ["0", "1", "1", "2", "1", "1", "1", "1", "0"], ["0", "0", "0", "0", "0", "0", "0", "0", "0"], ["1", "1", "0", "0", "0", "0", "0", "0", "0"], ["?", "1", "0", "0", "0", "1", "1", "1", "0"], ["1", "1", "0", "0", "0", "1", "F", "1", "0"], ["0", "0", "0", "0", "0", "1", "1", "1", "0"], ["0", "0", "0", "0", "0", "0", "0", "0", "0"] ], "last_action": { "action_type": "reveal", "x": 3, "y": 2, "result": "revealed_number", "timestamp": 1710931245 } } ```
and this format for llm response generation
``` { "action": { "action_type": "reveal", // "reveal", "flag", "unflag", "chord" "x": 5, "y": 3, "confidence": 0.95, "reasoning": "This cell is surrounded by revealed cells with low numbers, making it a safe choice." }, "game_analysis": { "identified_safe_cells": [[5, 3], [2, 5]], "identified_mine_cells": [[6, 1], [8, 2]], "uncertain_cells": [[1, 1], [2, 2]], "strategy": "Targeting isolated revealed areas first to gain more information." } } ```
It should fix all your issues plus also make it cheaper to play
* What is the data format it gets? Does it unambiguously correspond to output (i.e. without mistaking rows for cols, or indexes starting at 0 or 1)?
* What is the prompt?
* Is the model allowed to think? (If it is just JSON response, I expect it to suck, as tokens are units of thinking.)
MCP = Model Context Protocol
https://modelcontextprotocol.io/
"MCP is an open protocol that standardizes how applications provide context to LLMs."