项目简介

本项目是一个基于Model Context Protocol (MCP) 实现的简单后端服务,提供了一个完整的二十一点(Blackjack)游戏体验。它通过MCP的工具功能,允许LLM客户端与游戏进行互动,例如开始新游戏、下注、选择叫牌或停牌等。项目特别展示了如何在MCP服务器中通过工具调用和状态管理来引导用户进行结构化的输入,从而实现类似“Elicitation”的互动流程。

主要功能点

  • 完整的二十一点游戏逻辑: 实现了基本的二十一点规则,包括发牌、计算牌面价值(A可算1或11)、玩家叫牌/停牌、庄家行动规则(16点叫牌,17点停牌)、胜负判断、爆牌处理和二十一点(Blackjack)赔付。
  • 芯片管理和下注系统: 玩家有初始筹码,游戏过程中会根据输赢增减,开始新局需要下注,并有最低和最高下注限制。
  • 基于MCP工具的互动: 游戏的各个环节(开始游戏、下注、叫牌、停牌、查看状态、重置筹码)都通过注册为MCP工具来实现,LLM客户端可以通过调用这些工具来与游戏交互。
  • 引导式用户输入流程: 通过在工具的返回消息中提示用户下一步应该调用哪个工具及所需的参数(如下注时提示使用'place_bet(amount)'),巧妙地引导用户进行结构化输入,模拟了交互式输入流程。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/angrypenguinpng/elicitation-blackjack-example-mcp.git
    cd elicitation-blackjack-example-mcp
  2. 安装依赖: 项目使用 'uv' 进行包管理。确保您已安装'uv'(https://github.com/astral-sh/uv)。
    uv add -r requirements.txt
    # 或者直接 uv add "mcp[cli]"

服务器配置

本项目作为MCP服务器,需要被MCP客户端(如Claude Desktop)启动和连接。用户需要在其MCP客户端中添加一个新的服务器。通常需要提供服务器名称、用于启动服务器的可执行文件路径以及启动时传递给该文件的一系列参数。

  • 服务器名称: 建议使用 "Blackjack Casino"。
  • 启动命令 (command): 'uv' (这是uv工具的可执行文件路径)
  • 参数 (args): 'run', 'mcp', 'dev', 'src/blackjack_server.py' (这些参数告诉'uv'工具以开发模式运行位于'src/blackjack_server.py'的MCP服务器脚本)

将这些信息配置到您的MCP客户端中即可连接到此服务器。

基本使用方法

连接成功后,您可以通过LLM客户端调用以下MCP工具与二十一点游戏互动:

  1. 开始新游戏: 调用 'start_game()'。游戏将提示您下注。
  2. 下注: 在游戏提示下注后,调用 'place_bet(amount)',将 'amount' 替换为您想下注的金额。例如:'place_bet(50)'。
  3. 玩家叫牌: 在您的回合,调用 'hit()' 来获取另一张牌。
  4. 玩家停牌: 在您的回合,调用 'stand()' 来结束您的回合,庄家将开始行动。
  5. 查看游戏状态: 随时调用 'show_game_state()' 来查看当前牌面、筹码和游戏阶段。
  6. 重置筹码: 如果筹码输光,可以调用 'reset_chips()' 将筹码重置回初始金额。

游戏流程将根据您调用的工具和游戏状态推进。

信息

分类

AI与计算