二十一点MCP服务器
一个回合制的二十一点游戏,你扮演庄家,对抗由Ollama和LlamaIndex驱动的LLM玩家。游戏使用模型上下文协议(MCP)来公开游戏动作,作为LLM可以用来做出战略决策的工具。
特性
- MCP服务器:将二十一点游戏作为MCP工具和资源公开
- LLM玩家:使用LlamaIndex和Ollama制定战略决策
- 回合制游戏你扮演庄家的角色,法学硕士与你对决
- 博彩系统:LLM管理筹码余额并下注
- 战略AI:LLM解释了每个决定的理由
- 可配置的:自定义LLM模型、起始筹码和游戏规则
建筑
┌─────────────────┐
│ Main CLI │ You (Dealer)
│ (main.py) │
└────────┬────────┘
│
├──────────────┐
│ │
┌────────▼────────┐ ┌──▼──────────────┐
│ LlamaIndex │ │ MCP Server │
│ Agent │◄─┤ (Game Logic) │
│ (Ollama LLM) │ │ Tools/Resources│
└─────────────────┘ └─────────────────┘MCP工具
MCP服务器向LLM公开这些工具:
place_bet(amount)-下注开始新一轮view_table()-查看当前游戏状态(手牌、庄家向上牌、筹码)hit()-再抽一张牌stand()-结束转弯,让庄家玩get_hand_value()-获取当前手牌值get_chip_balance()-获取当前芯片余额
MCP资源
blackjack://game/state-当前游戏状态为JSONblackjack://rules-21点规则和策略指南
安装
先决条件
- 奥拉玛 -从以下位置安装 奥拉玛 或在远程服务器上运行
- LLM模型 -确保模型可用(例如。,
ollama pull llama3.2) - Docker&Docker编写 (推荐)或 Python 3.10+
选项1:Docker(推荐)
- 克隆存储库:
git clone
cd blackjack-mcp-server- 更新
config.yaml使用您的Ollama网址:
llm:
base_url: "http://192.168.33.12:11434" # Your Ollama server- 使用Docker Compose运行:
docker compose run --rm --service-ports blackjack就是这样!游戏将在容器中自动开始。
选项2:本地Python设置
- 克隆存储库:
git clone
cd blackjack-mcp-server- 安装依赖项:
pip install -e .或手动:
pip install mcp llama-index llama-index-llms-ollama pydantic pyyaml- 确保Ollama正在运行(本地或远程):
ollama serve # If running locally- 更新
config.yaml如果使用远程Ollama:
llm:
base_url: "http://your-ollama-server:11434"配置
编辑 config.yaml 要自定义游戏,请执行以下操作:
game:
starting_chips: 1000 # Starting chip balance
minimum_bet: 10
maximum_bet: 500
dealer_stands_on: 17 # Dealer stands on this value
llm:
model: "llama3.2" # Ollama model to use
base_url: "http://localhost:11434"
temperature: 0.7
request_timeout: 60.0
display:
show_reasoning: true # Show LLM's thought process
clear_screen: false用法
运行游戏
使用Docker:
docker compose up没有Docker:
python main.py游戏玩法
- 游戏开始时LLM有筹码(默认值:1000)
- 每一轮:
- 您(庄家)设置投注金额或使用默认值 - LLM下注并接收卡片 - LLM使用策略做出决策(命中/站立) - 经销商(您)根据规则自动进行游戏 - 获胜者已确定,并授予筹码
- 继续玩游戏,直到LLM用完筹码或退出
示例会话
🎰 BLACKJACK - You vs LLM 🎰
LLM Player starting chips: 1000
LLM Model: llama3.2
Dealer stands on: 17
🎲 Round 1
LLM Chips: 1000
Press Enter to let LLM bet 50 chips (or type amount/q to quit):
NEW ROUND - LLM Betting 50 chips
💭 LLM Reasoning:
I'll view the table first to see my hand...
My hand is [K♠ 7♥] = 17
Dealer shows: 5♦
Since I have 17 and dealer shows a weak card (5), I'll stand.
Result: You win! +50 chips
Remaining chips: 1050作为MCP服务器运行
您还可以仅运行MCP服务器,以便与其他MCP客户端集成:
python -m blackjack_mcp.server或者使用已安装的脚本:
blackjack-mcp发展
项目结构
blackjack-mcp-server/
├── src/
│ ├── blackjack_mcp/
│ │ ├── __init__.py
│ │ ├── game.py # Core game logic
│ │ └── server.py # MCP server
│ └── agent.py # LlamaIndex agent
├── main.py # CLI interface
├── config.yaml # Configuration
├── pyproject.toml # Project metadata
└── README.md运行测试
pytest代码格式化
black src/ main.py游戏规则
- 目标:在不经过的情况下,比经销商更接近21
- 卡片价值:
- 数字卡(2-10):面值 - 脸牌(J、Q、K):10分 - Aces:11或1(自动调整)
- 经销商规则:经销商必须达到17或更高
- 付出的巨款:
- 21点(21,2张牌):1.5倍赌注 - 常规获胜:1x赌注 - 推(平局):投注已退回 - 损失:输掉赌注
LLM战略
LLM使用基本的二十一点策略:
- 命中11或更少(不能失败)
- 17岁或以上(经销商门槛)
- 12-16岁:考虑经销商的上卡
- 经销商显示2-6(弱):站立 - 庄家显示7-Ace(强):命中
故障排除
Ollama连接错误
确保Olama正在运行:
ollama serve检查中的基本URL config.yaml 与您的Olama安装相匹配。
未找到型号
拉取配置中指定的模型:
ollama pull llama3.2导入错误
确保安装了所有依赖项:
pip install -e .许可证
MIT许可证
贡献
欢迎投稿!请打开问题或提交PR。
致谢
- 内置于 模型上下文协议(MCP)
- 由...驱动 Llama索引
- 用途 奥拉玛 用于本地LLM推理
