Show HN: I built a MCP server so Claude can play Minesweeper

tonypan | 123 points

Yea Claude sucks at minesweeper (and many spatial reasoning tasks), but isn’t an idea of MCPs is that Claude should be able to ask an MCP what the next best move is rather than figuring it out itself? Like offload hard thinking/reasoning to purpose-built solvers because they are deterministic? Though I guess you’d expect a reasoning model to be able to come up with its own solvers on the fly, especially for well-known problems. Maybe having access to an MCP itself is confusing it?

breckenedge | a month ago

It feels nuts to me that there is a push away from strict APIs to conversational interfaces for products and then the actual technology itself under the hood is translating that into a strict set of API calls in order to understand something. Would it not be better to seek interoperability with fairly well scripted natural language handshake. I feel like MCP is built for understanding language and Syntax to a greater degree but not random tools and APIs.

tmitchel2 | a month ago

Maybe tell it it's a champion Minesweeper player and that loss is not an option :)

_joel | a month ago

By just looking at the README from the repo (Would look more deeply into this later) you're replying with an image of the current status? If you expect Claude to interpret the image corretly may be you're asking for too much. Besides the image (Gotta say I didn't know you could fed Claude images in MCP that's incredible cool) I'd rather / also return some json payload that informs Claude which positions has "cleared" neighbor positions, and their value. E.g.:

    {"loc": {"x": 4, "y": 3}, "neighbors": [{"loc": {"x": 4, "y": 4}, "value": 1}, ... ]}
(Might not be valid json, just wrote that by hand on the fly)

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)

ericol | a month ago

Ditch the image

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

codegladiator | a month ago

Key things for debugging:

* 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.)

stared | a month ago

Teach Claude how to play Solitaire or Candy Crush at work and we will have come full circle.

lopsidedgrin | a month ago

For the acroym-averse:

MCP = Model Context Protocol

https://modelcontextprotocol.io/

"MCP is an open protocol that standardizes how applications provide context to LLMs."

cbm-vic-20 | a month ago

Can you please share the original prompt you are using?

paugay | 23 days ago

MCP is the new agentic, it seems. Most MCP stuff I've seen seems over-engineered, but this one was actually fun to check out.

rcarmo | a month ago

Maybe I’m misunderstanding, but how is the actual game board / UI being rendered? I only see a MCP protocol definition.

helsinki | a month ago

Awesome to see MCP related work surfacing on the front page of HN!

punkpeye | a month ago

Why don't you play Go instead of Minesweeper?

minhoryang | a month ago

Why

xunil2ycom | a month ago

nice

road42runner | a month ago

cool

jakeprins | a month ago