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 | ["*"] | 允许的标题 |
认证
- 注册地址:
GET /register或POST /register - 通过获取API密钥
POST /auth/api-keys(JSON:{"username": "...", "password": "..."}) - 将密钥用作MCP端点的承载令牌:
Authorization: Bearer
每个用户都会获得存储在中的独立游戏状态 .state//.
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 (类型检查)。
