article
README
🚀 扫雷MCP服务器
这是一个模型上下文协议(MCP)服务器,提供扫雷游戏功能。用户可以创建自定义大小的扫雷棋盘,并通过AI助手来玩经典的扫雷游戏。
✨ 主要特性
- 自定义棋盘大小:可创建任意大小(最大50x50)的扫雷棋盘。
- 灵活的地雷数量:可设置任意数量的地雷(在合理范围内)。
- 多局游戏:管理多个并发的游戏棋盘。
- 可视化显示:以ASCII艺术形式展示游戏棋盘。
- 游戏状态跟踪:检测胜负并记录游戏时间。
- 格子操作:翻开格子、标记或取消标记疑似地雷。
📦 安装指南
- 克隆或下载此仓库。
- 安装依赖项:
npm install - 编译TypeScript代码:
npm run build - 启动服务器:
npm start
📚 详细文档
可用工具
create_board
创建一个具有自定义尺寸和地雷数量的新扫雷棋盘。
参数:
id(字符串):棋盘的唯一标识符。width(数字):列数(1 - 50)。height(数字):行数(1 - 50)。mineCount(数字):要放置的地雷数量。
示例:
创建一个10x10的棋盘,包含15个地雷,ID为 "game1"
reveal_cell
翻开棋盘上的一个格子。如果是地雷,游戏结束;如果是空的,相邻格子可能会自动翻开。
参数:
boardId(字符串):棋盘的ID。x(数字):列坐标(从0开始)。y(数字):行坐标(从0开始)。
示例:
翻开棋盘 "game1" 上位置为 (5, 3) 的格子
flag_cell
标记或取消标记一个格子为疑似地雷。
参数:
boardId(字符串):棋盘的ID。x(数字):列坐标(从0开始)。y(数字):行坐标(从0开始)。
示例:
标记棋盘 "game1" 上位置为 (2, 7) 的格子
get_board
显示棋盘的当前状态。
参数:
boardId(字符串):要显示的棋盘的ID。
list_boards
列出所有活跃的游戏棋盘及其状态。
参数:无
delete_board
删除一个游戏棋盘。
参数:
boardId(字符串):要删除的棋盘的ID。
游戏符号
.= 未翻开的格子F= 标记的格子*= 地雷(游戏结束时显示)1 - 8= 相邻8个格子中的地雷数量(空格) = 周围没有地雷的空格子
示例游戏流程
- 创建棋盘:
create_board with id="easy", width=9, height=9, mineCount=10 - 开始翻开格子:
reveal_cell on board="easy" at x=4, y=4 - 标记疑似地雷:
flag_cell on board="easy" at x=0, y=0 - 检查棋盘状态:
get_board for boardId="easy" - 继续游戏,直到获胜或踩到地雷!
游戏规则
- 目标:翻开所有不包含地雷的格子。
- 获胜条件:翻开所有非地雷格子。
- 失败条件:翻开包含地雷的格子。
- 数字:显示相邻8个格子中的地雷数量。
- 标记功能:标记你怀疑包含地雷的格子(防止意外翻开)。
- 自动翻开:当你翻开一个空格子(周围没有地雷)时,所有相邻格子会自动翻开。
开发相关
项目结构
src/
├── index.ts # 主要的MCP服务器实现
└── minesweeper.ts # 核心游戏逻辑和类型
脚本命令
npm run build- 将TypeScript编译为JavaScript。npm run dev- 开发时的监听模式。npm start- 运行编译后的服务器。
与AI助手集成
此MCP服务器可以与支持模型上下文协议的AI助手集成,如Claude Desktop。AI可以帮助你:
- 创建具有最佳地雷分布的棋盘。
- 提供战略建议。
- 分析棋盘模式。
- 同时跟踪多局游戏。
📄 许可证
本项目采用MIT许可证,你可以根据需要自由使用和修改!
Scan to join WeChat group