游戏状态管理服务器

LLM驱动的文本游戏状态管理服务器,通过MCP协议提供玩家、位置、物品、实体和抽象概念的管理工具。

  • by MiloLug
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 MiloLug/llmmo-game-server

使用说明

LLMMO游戏服务器

MCP服务器,用于LLM驱动的文本游戏状态管理。通过MCP协议公开用于管理玩家、位置、项目、实体和抽象概念的工具。

使用FastAPI、FastMCP、Python 3.14构建。

设置

Docker(推荐)

cp .env.example .env  # adjust if needed
docker compose up --build app

本地

uv sync
uvicorn llmmo.main:app --reload --host 0.0.0.0 --port 8111

配置

环境变量(.env):

变量 默认值 描述
BACKEND__RUN__HOST localhost 服务器主机
BACKEND__RUN__PORT 8111 服务器端口
BACKEND__DB__BASE_PATH .state 游戏状态存储目录
BACKEND__CORS__ORIGINS ["http://localhost:8111"] 允许的CORS来源
BACKEND__CORS__CREDENTIALS true 允许凭据
BACKEND__CORS__METHODS ["*"] 允许的HTTP方法
BACKEND__CORS__HEADERS ["*"] 允许的标题

认证

  1. 注册地址: GET /register 或 POST /register
  2. 通过获取API密钥 POST /auth/api-keys (JSON: {"username": "...", "password": "..."})
  3. 将密钥用作MCP端点的承载令牌: Authorization: Bearer <api_key>

每个用户都会获得存储在中的独立游戏状态 .state/<username_hash>/.

MCP端点

MCP服务器安装在 /mcp。将您的MCP客户端连接到 http://localhost:8111/mcp.

数据模型

  • 玩家 --名称、库存(item_id -> quantity),当前位置
  • 位置 --名称、描述
  • 物品 --名称、描述(全局,由玩家引用)
  • 实体 --名称、描述、可选位置(NPC、物体、怪物)
  • 摘要 --名称、描述(事件、主题、传说——与地点无关)

所有ID都是UUID。状态以每个用户的JSON文件形式持久化。

发展

uv sync --all-groups  # install dev deps

提交前: ruff (lint/格式), mypy (类型检查)。