BioErrorLog Tech Blog

試行錯誤の記録

MCPでマインスイーパーを遊ぶ

MCPを介して、LLMにマインスイーパーをプレーさせます。

はじめに

MCPとゲームの組み合わせは個人的にとても面白いと思っています。

今回は、マインスイーパーをLLMがプレーするためのMCPサーバーMinesweeper MCP Serverを見つけたので、これを試して遊びます。

# 作業環境: macOS
# nodeバージョン
node --version
v20.19.0

The English translation of this post is here.

MCPでマインスイーパーを遊ぶ

全体構成

今回実行する構成はこちら。

全体構成

まず、マインスイーパーサーバーとMCPサーバーをローカルで起動します。 マインスイーパーサーバーはマインスイーパーをAPIでプレーできるようにしたサーバーで、MCPサーバーから操作します。

MCPクライアントにはClaude Desktopを使います。 Claude DesktopをMCPサーバーと接続し、ClaudeからのTool利用という形でマインスイーパーをプレーさせます。

マインスイーパーのゲーム画面は、ブラウザから閲覧可能です。

では、一つ一つやっていきます。

マインスイーパーサーバーを起動する

こちらのレポジトリから、ガイドに従ってマインスイーパーサーバーを起動します。

# コードをclone
git clone https://github.com/tonypan2/minesweeper-server.git
cd minesweeper-server

# インストール&実行
npm install
npm run dev

下記のような状態になったらOKです。

$ npm run dev

> minesweeper-server@0.1.0 dev
> next dev --turbopack -p 5000

   ▲ Next.js 15.2.3 (Turbopack)
   - Local:        http://localhost:5000
   - Network:      http://192.168.10.102:5000

 ✓ Starting...
Attention: Next.js now collects completely anonymous telemetry regarding usage.
This information is used to shape Next.js' roadmap and prioritize features.
You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
https://nextjs.org/telemetry

 ✓ Ready in 1022ms

この状態でブラウザでhttp://localhost:5000/viewを開けば、マインスイーパーのUI画面(待機中)が表示されます。

マインスイーパーのUI画面(待機中)をブラウザで開いた様子

MCPサーバーをビルドする

次はMCPサーバーをビルドします。

先ほどのマインスイーパーサーバーとは別のディレクトリで、下記コマンドを実行します。

# コードをclone
git clone https://github.com/tonypan2/minesweeper-mcp-server.git
cd minesweeper-mcp-server

# インストール&ビルド
npm install
npm run build

これでbuild/index.jsが生成されていれば成功です。

MCPサーバーはMCPクライアント(今回はClaude Desktop)から起動されるので、今ここで実行する必要はありません。

Claude DesktopとMCPサーバーを接続する

ここまで用意できたら、Claude DesktopとMCPサーバーを接続します。

Claude DesktopとMCPサーバー接続の一般的な方法については、下記記事に詳細をまとめています。 必要あればご参照ください。

www.bioerrorlog.work


今回用意したMCPサーバーとClaude Desktopを接続するためのconfigファイル形式はこちら:

{
  "mcpServers": {
    "mcp-server": {
      "command": "node",
      # ↓にMCPサーバーのビルドパスを指定
      "args": ["/path/to/minesweeper-mcp-server/build/index.js"],
      "env": {
        "DEBUG": "*"
      }
    }
  }
}


具体例:

{
  "mcpServers": {
    "mcp-server": {
      "command": "node",
      "args": ["/Users/bioerrorlog/dev/mines-mcp/minesweeper-mcp-server/build/index.js"],
      "env": {
        "DEBUG": "*"
      }
    }
  }
}


無事接続に成功すると、MCPサーバーから提供されているマインスイーパー用のtoolsが、金槌アイコンから確認できます。

マインスイーパー用MCPサーバーのtoolsがClaude Desktopと接続された様子

Claudeにマインスイーパーを遊んでもらう

それではいよいよ、Claudeにマインスイーパーをプレーしてもらいます。

マインスイーパーのUI画面 (http://localhost:5000/view)をブラウザで開いたまま、Claude Desktopで下記のようなプロンプトを投げます。

プロンプト例:

Start a new game of Minesweeper. Try your best to keep playing until you have flagged all mines. Remember that the coordinates are 0-indexed.

これで、ClaudeによるMCPを介したマインスイーパーのプレーが始まります。

マインスイーパーがプレーされる様子がこちら:

"start_game"ツールの呼び出しでマインスイーパーが始まった様子

Claudeによってマインスイーパーがプレーされている様子

ゲーム終了

動画はこちら:

何回か試行しましたが、Claudeはこの類のゲームは苦手なようです。 ゲームプレーをモデルに任せた場合、成功してるのはお目にかかれませんでした。

プロンプトを工夫したり、人間とのやりとりを挟む等すると面白そうです。

おわりに

以上、MCPを介してLLMにマインスイーパーを遊んでもらいました。

冒頭にも書きましたが、MCPとゲームの組み合わせは極めて多くの可能性も持っていると考えています。 色々試していきたいですね。

どなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

参考