健身房MCP-人工智能游戏平台
一种模型上下文协议(MCP)服务器,将游戏作为AI代理发现和玩游戏的工具。
🚀 快速开始
需求
- Python 3.10+
- MCP兼容客户端(克劳德桌面等)
安装
使用pip:
git clone
cd gym-mcp
pip install -e .或者使用紫外线(Dedalus Labs推荐):
git clone
cd gym-mcp
uv sync运行服务器
# With pip
python main.py
# With uv
uv run main测试服务器
python test_fastmcp.py🎮 可用游戏
- 井字游戏:经典的3x3网格游戏,X和O
🛠️ 可用工具
核心游戏工具
list_games-发现可用游戏和活动实例start_game-与玩家初始化新游戏make_move-执行游戏操作get_game_state-查看当前游戏状态reset_game-将游戏重置为初始状态
游戏专用工具
tic_tac_toe_place_mark-在板上放置X或O
📋 Claude桌面集成
添加到您的Claude桌面 claude_desktop_config.json:
{
"mcpServers": {
"gym-mcp": {
"command": "python",
"args": ["main.py"],
"cwd": "/path/to/gym-mcp"
}
}
}🎯 示例用法
# Discover available games
list_games()
# Start a tic-tac-toe game
start_game(game_type="tic-tac-toe", players=["Alice", "Bob"])
# Make moves using generic tool
make_move(game_id="uuid", action_type="place_mark", payload={"row": 1, "col": 1}, player="Alice")
# Or use game-specific tool
tic_tac_toe_place_mark(game_id="uuid", row=0, col=0, player="Bob")
# Check current state
get_game_state(game_id="uuid")🏗️ 建筑
核心组件
- FastMCP:基于装饰器的简单MCP服务器
- 游戏注册表:管理可用游戏类型和活动实例
- 游戏界面:定义游戏合约的抽象基类
- 动态工具:每个游戏都注册了自定义MCP工具
每个游戏工具
每个游戏都可以定义自己的特定工具:
- 井字游戏:
tic_tac_toe_place_mark(game_id, row, col, player) - 未来的游戏国际象棋本可以
chess_castle,chess_en_passant等等。
无状态设计
- 每个服务器会话存储在内存中的游戏
- 不要求进行验证
- 游戏逻辑和MCP协议之间的清晰分离
🔧 添加新游戏
- 创建游戏类 继承自
Game:
class Chess(Game):
def start(self, players): ...
def make_move(self, action): ...
def get_state(self): ...
# etc.- 定义特定于游戏的工具:
@classmethod
def get_tool_definitions(cls):
return [GameToolDefinition(
name="chess_castle",
description="Perform castling move",
input_schema={...}
)]- 在注册表中注册:
registry.register_game_type(Chess)- 添加FastMCP工具处理程序 在
server.py
🌟 未来计划
- OpenAI健身房集成:包裹体育馆环境
- PettingZoo支持:多代理游戏(国际象棋、扑克等)
- 实时游戏:WebSocket支持更快的交互
- 锦标赛模式:AI vs AI竞赛
- 观众工具:观看正在进行的游戏
🏛️ 架构优势
面向人工智能研究人员
- 标准化游戏测试环境
- 所有游戏的一致API
- 易于基准测试和评估
对于开发者
- 简单的游戏集成(只需实现界面)
- 自动生成MCP工具
- 内置状态管理
对于AI代理
- 统一发现机制(
list_games) - 一致的交互模式
- 游戏特定的优化机会
______________________________________________________________________
