返回市场
麦克风游戏公共服务器

麦克风游戏公共服务器

作者:IshanTiwari01122 星标更新:2025-09-30

项目介绍

MCP游戏服务器

一个模型上下文协议(MCP)服务器,通过统一的工具接口为AI代理提供多种经典游戏、Gymnasium环境和棋盘游戏的访问。

特性

  • 33+ MCP工具用于游戏交互
  • 可视化渲染 - 返回游戏状态为base64 PNG图像或SVG
  • 多种游戏类型 - 经典控制、棋盘游戏、Atari游戏
  • 统一接口 - 所有游戏类型的API一致
  • 丰富的游戏状态 - 视觉和文本的游戏状态信息

安装

# 克隆仓库
git clone https://github.com/itsish/mcp-games-public
cd mcp-games-public

# 安装依赖
pip install -r requirements.txt

# 运行服务器
python -m src.main

快速开始

对于Claude桌面

在你的claude_desktop_config.json中添加:

{
  "mcpServers": {
    "mcp-games": {
      "command": "python",
      "args": ["-m", "src.main"],
      "cwd": "/path/to/mcp-games-public"
    }
  }
}

对于MCP Inspector

npx @modelcontextprotocol/inspector python -m src.main

支持的游戏

经典控制(Gymnasium)

  • CartPole-v1 - 在移动的小车上平衡一根杆
  • MountainCar-v0 - 驾驶一辆车爬上陡峭的山
  • FrozenLake-v1 - 导航穿过冰冻的湖泊避免洞穴

Atari游戏

  • Breakout - 经典的砖块破坏街机游戏

棋盘游戏

  • Tic-Tac-Toe - 经典的3x3网格游戏
  • 国际象棋 - 完整的国际象棋实现,带有合法移动验证
  • 四子连线 - 下棋以连接四个棋子成一行
  • 二十一点 - 赌场纸牌游戏(抽牌或停牌以达到21点)

多智能体游戏(PettingZoo)

  • 国际象棋(PettingZoo) - 带有完整规则实现的两人国际象棋

可用工具

游戏管理

  • list_games - 列出所有可用的游戏
  • start_game - 开始一个新的游戏实例
  • get_game_state - 获取当前游戏状态并进行可视化渲染
  • reset_game - 将游戏重置到初始状态
  • end_game - 结束并清理游戏实例

CartPole操作

  • cartpole_move_left - 向左移动小车
  • cartpole_move_right - 向右移动小车
  • cartpole_get_state - 获取小车位置、速度、杆角度

MountainCar操作

  • mountaincar_accelerate_left - 向左加速汽车
  • mountaincar_accelerate_right - 向右加速汽车
  • mountaincar_coast - 不加速滑行

Breakout操作

  • breakout_start - 开始新的Breakout游戏
  • breakout_move - 移动挡板(向左/向右/停留)
  • breakout_get_state - 获取游戏状态和视觉帧

二十一点操作

  • blackjack_start - 开始新的二十一点游戏
  • blackjack_hit - 抽另一张牌
  • blackjack_stand - 保留当前手牌
  • blackjack_get_state - 获取当前手牌和庄家可见的牌

Tic-Tac-Toe操作

  • tictactoe_start - 开始新的Tic-Tac-Toe游戏
  • tictactoe_place - 在位置放置X或O
  • tictactoe_get_state - 获取棋盘状态

FrozenLake操作

  • frozenlake_move_up - 向上移动玩家
  • frozenlake_move_down - 向下移动玩家
  • frozenlake_move_left - 向左移动玩家
  • frozenlake_move_right - 向右移动玩家

国际象棋操作

  • chess_move - 进行国际象棋移动(例如,“e2e4”)
  • chess_get_legal_moves - 获取当前位置的所有合法移动
  • chess_analyze_position - 获取位置分析和评估

四子连线操作

  • connectfour_start - 开始新的四子连线游戏
  • connectfour_drop_piece - 在列中放下棋子(0-6)
  • connectfour_get_state - 获取棋盘状态和视觉
  • connectfour_get_valid_moves - 获取有效列列表
  • connectfour_undo_move - 撤销最后一步
  • connectfour_get_winner - 检查游戏是否有赢家

PettingZoo国际象棋操作

  • pettingzoo_chess_start - 开始PettingZoo国际象棋游戏
  • pettingzoo_chess_move - 使用动作索引进行移动
  • pettingzoo_chess_get_state - 获取棋盘观察
  • pettingzoo_chess_get_legal_actions - 获取合法动作索引

示例使用

# 开始一个游戏
response = await start_game(game_type="CartPole-v1", player_name="AI_Agent")

# 获取视觉状态
state = await cartpole_get_state(game_id=response.game_id)
# 返回带有当前帧的base64 PNG图像的状态

# 进行移动
result = await cartpole_move_right(game_id=response.game_id)

# 对于国际象棋
await chess_move(game_id=chess_id, move="e2e4")
legal_moves = await chess_get_legal_moves(game_id=chess_id)

可视化渲染

所有游戏支持响应中的可视化渲染:

  • PNG图像:作为base64编码字符串返回给基于像素的游戏
  • SVG渲染:向量图形用于棋盘游戏和简单环境
  • 自动格式选择:游戏选择最佳可视化格式

架构

  • FastMCP框架:简单的基于装饰器的MCP服务器实现
  • 游戏注册表:集中管理游戏类型和实例
  • Gymnasium集成:与OpenAI Gym环境直接集成
  • 模块化设计:易于添加新游戏和环境

要求

  • Python 3.10+
  • 查看requirements.txt获取包依赖

许可证

MIT许可证

贡献

欢迎贡献!请随意:

  • 添加新的游戏或环境
  • 改进可视化渲染
  • 提升游戏状态表示
  • 修复错误或改进文档

支持

对于问题或疑问,请在GitHub上打开一个issue。