MCP MUD 游戏
一个专为通过模型上下文协议(MCP)实现AI代理交互而设计的经典多人文字冒险游戏(MUD)。此项目允许AI代理在一个动态生成的地下城环境中扮演角色,包含角色扮演游戏(RPG)机制、战斗和探索元素。
特点/功能
核心游戏系统
- 完整的角色扮演游戏角色系统职业(战士、法师、盗贼、牧师)包含属性、等级和成长路径
- 动态地牢生成AI驱动的地下城主创建房间、遭遇战和谜题
- 回合制战斗类似《龙与地下城》(D&D)的战斗系统,包括掷骰子、攻击判定和伤害计算
- 拼写系统具有法力值消耗和各种效果的专类法术
- 技能检定与环境互动时的力量、敏捷、智力检定
- 库存管理设备、武器、盔甲和消耗品
技术架构
- MCP服务器为AI代理提供与游戏互动的工具
- RabbitMQ回合制动作处理的消息队列系统
- DynamoDB(注:DynamoDB是亚马逊提供的一种完全托管的NoSQL数据库服务,其名称在中文中通常不翻译,直接使用原名)角色、房间和游戏状态的持久存储
- n8n 代理在Docker容器中运行的AI代理作为玩家和动态管理者(DM)
- Ollama(注:Ollama是一个开源的机器学习框架,用于训练和部署机器学习模型,但在此语境下,若仅作为名称翻译,则保持原样)用于人工智能决策的本地大型语言模型(LLM)
快速入门
先决条件
- Docker 和 Docker Compose
- Git
安装
- 克隆仓库
git clone
cd mcp-mud-game- 运行安装脚本
chmod +x scripts/setup.sh
./scripts/setup.sh- 启动游戏服务器
docker-compose up -d mcp-mud-server- 启动AI代理
docker-compose up -d n8n-player1 n8n-player2 n8n-dm接入点
- MCP 服务器:
localhost:8080 - RabbitMQ 管理:
http://localhost:15672(访客/访客) - n8n 玩家1:
http://localhost:5679(玩家1/玩家1) - n8n 玩家 2:
http://localhost:5680(玩家2/玩家2) - n8n 地下城主(或:n8n 玩家游戏主持人):
http://localhost:5681(dm/dm) - Ollama API:
http://localhost:11434
游戏机制
字符类别
勇士
- 主要属性力量
- 技能近战格斗,盾击,恐吓
- 起始设备铁剑,皮甲,木盾
魔法师
- 主要属性智慧
- 技能烈焰弹,魔法飞弹,奥术知识
- 启动设备木杖,法师长袍,法术材料
《Rogue》(注:Rogue在此处可能指的是一款游戏或某种特定名称,根据上下文可能有不同的翻译,但直接翻译为“流氓”并不准确,因此保留原英文名称以避免歧义。若确需翻译为中文且指游戏名,则可能根据具体游戏内容翻译为“冒险者”或“游侠”等,但在此无具体上下文的情况下,直接保留原名更为稳妥。)
- 主要属性灵巧性
- 技能开锁、潜行、背后偷袭
- 启动设备匕首、开锁工具、皮甲
神职人员
- 主要属性智慧
- 技能治疗术,驱散亡灵,神之眷顾
- 起动设备棍棒、锁子甲、圣徽
战斗系统
战斗采用Dungeons & Dragons(龙与地下城)风格的机制:
- 攻击检定20面骰(d20)加上攻击加值,对抗护甲等级(Armor Class)
- 损害;损坏武器伤害骰 + 属性修正
- 暴击自然20(掷骰子结果)翻倍伤害
- 重大失误自然1总是错失(或总是失误)
技能检定
技能检定采用以下难度等级:
- 琐碎的;微不足道的直流5(伏)
- 简单直流10伏
- 中等直流15(伏特)
- 艰难直流20(伏特)
- Epic(史诗般的;宏大的)直流25伏
- 传奇的直流30
MCP 工具
玩家行动
角色管理
create_character(player_id, name, character_class)- 创建一个新角色get_character_status(player_id)- 获取角色属性和状态rest_character(player_id)- 休息以恢复生命值和魔法值
行动与探索
move_character(player_id, direction)- 向某个方向移动examine_object(player_id, target)- 检查房间、物品或生物
战斗与行动
attack_target(player_id, target, weapon?)- 攻击怪物cast_spell(player_id, spell_name, target?)- 施放一个咒语use_item(player_id, item_name, target?)- 使用一个库存物品attempt_skill_check(player_id, skill_type, target?)- 进行技能检定
地下城主工具
generate_room(theme, difficulty, connections?)- 创建新房间add_encounter(room_id, encounter_type)- 添加怪物、陷阱或谜题update_room_description(room_id, new_description)- 修改房间描述create_custom_ability(name, description, mechanics)- 创建新能力get_dungeon_overview()- 查看当前地牢状态
建筑细节
数据库模式(DynamoDB)
玩家表
player_id(哈希键)- 角色数据、属性、库存、位置
房间表
room_id(哈希键)- 房间描述、出口、物品、怪物、谜题
游戏状态表
game_id(哈希键)- 回合顺序,活跃会话,全局状态
动作队列表
action_id(哈希键)timestamp(GSI) 可以翻译为“(全球定位系统)”或者根据具体上下文,也可能是“(某特定机构或系统的缩写)”,但通常“GSI”在没有特定上下文时,最直接的翻译是“全球定位系统”(Global Satellite-based Positioning System,不过更常见的缩写是GPS)。不过,由于“GSI”可能代表不同的含义,具体翻译需结合上下文。在这里,我给出了一个较为通用的翻译- 待处理的事项及其优先级
消息队列(RabbitMQ)
- 动作队列玩家操作等待处理
- DM 队列内容生成请求
- 事件队列游戏事件和通知
- 回合解决(或回合结束)有序动作处理
发展
项目结构
mcp-mud-game/
├── mcp_server.py # Main MCP server
├── game_engine.py # Core game logic
├── character_system.py # RPG character mechanics
├── dungeon_manager.py # Dynamic content generation
├── action_processor.py # RabbitMQ action handling
├── database_manager.py # DynamoDB operations
├── dice_system.py # Dice rolling and skill checks
├── config.py # Game configuration
├── docker-compose.yml # Full stack deployment
├── workflows/ # n8n workflow templates
├── scripts/ # Setup and utility scripts
└── docker/ # Docker configurations添加新功能
- 新的MCP工具添加到
mcp_server.py并在(其中)实施game_engine.py - 新的角色类别更新
config.py并且character_system.py - 新房间类型添加到
dungeon_manager.py房间模板 - 新法术/技能更新拼写数据库
game_engine.py
配置
编辑 config.py 修改:
- 字符类定义
- 难度等级
- 房间主题和生成参数
- 数据库和队列设置
AI代理集成
n8n 工作流
该项目包含预构建的n8n工作流,用于:
- 球员经纪人自主角色控制
- 地牢大师(或称为“地下城主”、“游戏主持人”,在角色扮演游戏领域中负责管理游戏进程、设定场景、扮演非玩家角色等)动态内容生成
- 共享节点可重用的MCP通信组件
Ollama 集成
AI代理使用本地Ollama模型进行决策:
- 角色动作选择
- 《地下城之主》的创造力
- 叙事生成
- 解决问题
故障排除
常见问题
- 服务未启动检查Docker守护进程和端口可用性
- 数据库连接错误确保DynamoDB Local正在运行
- RabbitMQ 连接问题验证RabbitMQ容器状态
- 未找到Ollama模型跑
docker exec ollama ollama pull llama3.2
日志
查看日志以进行调试:
docker-compose logs mcp-mud-server
docker-compose logs rabbitmq
docker-compose logs ollama做出贡献
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支
- 实施更改并进行测试
- 提交拉取请求
许可证
此项目遵循MIT许可协议授权——详情请参阅LICENSE文件。
致谢
- 采用模型上下文协议(MCP)构建
- 受经典MUD游戏的启发
- 采用D&D风格的机制以增强熟悉感
- 专为人工智能代理交互与自动化设计
