使用说明
游戏大师MCP
概述
Gamemaster是一个 棋盘游戏规则裁判:MCP服务器加上可选的瘦聊天客户端(CLI),该客户端使用以下命令回答自然语言问题 佩奇引用证据 从摄入的规则手册PDF中提取。检索很轻(仅限CPU且完全本地):SQLite FTS5、FAISS和一个小型交叉编码器重链器。任何MCP客户端(Cursor、Claude Desktop等)都可以使用服务器;所包含的CLI是一个工作示例客户端。
演示
特性
- 证据第一答案:答案以检索到的块为基础
(source_name, pp. start–end)引用。 - 混合上下文检索:稀疏(FTS5)+密集(FAISS)与RRF和交叉编码器重新排序器合并,用于证据检索。
- 无缝MCP集成:通过MCP暴露的工具和资源(stdio);从任何MCP客户端使用服务器。
- 内置摄入:摄取工具是服务器的一部分;代理人可以为你添加规则手册。
工具
MCP服务器公开:
list_games-在规则商店中列出游戏list_sources-在规则存储中列出游戏的源文件(PDF)search_rules-从规则存储中检索带有引用的证据块get_chunks-获取整段文本作为证据ask_user_clarification-用于请求澄清消息的包装器,因此代理和客户端可以共享严格的 “询问用户并将回复作为工具结果传递回”的协议submit_answer-发出最终答案的信号,以便客户可以收听ingest_pdf-将一个规则手册PDF导入规则存储ingest_pdfs-批量摄取多个PDF
安装
-
克隆仓库并安装Poetry:
poetry install -
复制
.env.example到.env并且至少设置:- 规则手册_目录 --规则手册PDF的目录(例如。
rulebooks). - OPENAI_API密钥 --要求包含
ask-gamemasterMCP客户端CLI。
- 规则手册_目录 --规则手册PDF的目录(例如。
配置
所有设置都是通过环境变量(或 .env 项目根目录中的文件)。看 .env.example 查看完整列表。
| 变量 | 默认值 | 描述 |
|---|---|---|
| 规则手册_目录 | rulebooks |
PDF路径的根;摄入使用 <RULEBOOKS_DIR>/<game_id>/<pdf_name>. |
| RULES_STORE_DIR | rules_store |
SQLite数据库和FAISS索引的目录。 |
| OPENAI_API_KEY | - | 对于是必需的 ask-gamemaster. |
| OPENAI_MODEL | gpt-5-mini |
使用的模型 ask-gamemaster CLI。 |
| 嵌入模型 | intfloat/e5-small-v2 |
句子嵌入模型。 |
| 重新登录模型 | cross-encoder/ms-marco-MiniLM-L-6-v2 |
重新排序搜索。 |
| TEXT_DENSITY_MIN_CHARS_PER_PAGE | 100 |
接受PDF的最小字符数/页(拒绝扫描/图像PDF)。 |
| AGENT_DEBUG_LOG_DIR | logs |
在哪里 --debug 写入代理日志。 |
| GAMEMASTER_CONTEXT_MAX_回合 | 50 |
在上下文中保持对话的次数(滑动窗口)。 |
| 游戏主_玩家_回合 | 20 |
在“我无法完成”之前,每个用户问题的最大LLM+工具轮次。 |
| GAMEMASTER _ QUIT_TRIGGER | /quit |
用户键入什么以退出聊天CLI。 |
可选: GET_CHUNKS_MAX_CHUNKS, GET_CHUNKS_MAX_CHARS, SEARCH_K_SPARSE, SEARCH_K_DENSE, HF_HOME, TRANSFORMERS_CACHE, HF_HUB_CACHE.
用法
手动摄取规则手册
可选-代理也可以从聊天CLI为您完成此操作(只需说“我需要摄取文件”)。
地方 基于文本 PDF在 RULEBOOKS_DIR/<game_id>/<filename>.pdf。扫描/图像PDF被拒绝。
单个文件:
poetry run ingest-rulebook "game_id=wingspan,pdf_name=wingspan_rulebook.pdf"
多个文件:
poetry run ingest-rulebook "game_id=wingspan,pdf_name=wingspan_rulebook.pdf" "game_id=everdell,pdf_name=everdell_rules.pdf"
通过MCP客户端CLI聊天
poetry run ask-gamemaster
CLI将MCP服务器作为子进程启动,并运行 长期会话:一段完整的历史对话。类型 /quit 退出。模型加载时,第一次运行可能需要1-2分钟;等待“Gamemaster就绪”。
- 可选:
--game-id <id>和--source-pdf-names all(或逗号分隔的列表)跳过代理的澄清问题。 - 调试:
--debug将提示和工具调用写入AGENT_DEBUG_LOG_DIR对于CLI会话。
仅运行MCP服务器
poetry run run-mcp
服务器通过MCP进行通话 标准.将任何MCP客户端指向此命令以使用工具;包含的 ask-gamemaster CLI是一个示例客户端。
项目布局
gamemaster-mcp/
├── src/gamemaster_mcp/
│ ├── mcp_server/ # FastMCP server, tools, resources, instructions
│ ├── ingest/ # PDF extraction, chunking, path validation, run_ingest
│ ├── index/ # Sparse (FTS), dense (FAISS), rerank
│ ├── storage/ # SQLite schema and store
│ ├── search/ # Retrieval pipeline (search_rules, get_chunks_for_agent)
│ ├── agent/ # LLM client, MCP session, runner (ask-gamemaster)
│ ├── cli/ # ingest-rulebook and ask-gamemaster CLIs
│ └── config.py # Env and settings
├── rules_store/ # SQLite DB + FAISS index (created on first ingest)
├── rulebooks/ # PDFs go here (or set RULEBOOKS_DIR)
├── .env # Copy from .env.example
└── pyproject.toml
