使用说明
40k MCP服务器
一 MCP(模型上下文协议) 允许LLM访问的服务器 所有战锤40000第10版 用于游戏决策和列表构建的派系规则数据。
使用TypeScript、本地向量嵌入和零外部API依赖项构建。
特性
5个MCP工具 对于所有派系的全面40k规则访问:
| 工具 | 说明 |
|---|---|
get_unit |
完整的数据表查找,包括统计数据、武器、能力、积分和关键字。支持模糊名称匹配和可选派系过滤 |
search_rules |
使用向量嵌入对所有规则进行语义搜索(RAG)。问一些自然语言的问题,比如“最好的反坦克武器”或“可以深度打击的单位”。按派系或规则类型筛选。 |
list_stratagems |
按派系、分离、类型或关键字浏览和过滤策略。 |
compare_units |
两个单位在属性、武器、能力和点数效率方面的并排比较。跨派系工作。 |
validate_list |
根据点数限制和构造规则(EPIC HERO重复,有效单位大小)验证军队名单。 |
数据覆盖范围: 1665个单位,1469个策略,776个增强,189个分遣队,6个派系规则,以及24个派系的7个核心规则部分。
支持的派系
| 帝国 | 混沌 | Xenos |
|---|---|---|
| 阿登普塔·索罗里塔斯。混沌守护者。艾尔达。 | ||
| 《Adeptus Custones》 | 《混沌骑士》 | Drukhari |
| 机械爱好者 | 混沌太空海军陆战队 | 基因窃贼崇拜 |
| Adeptus Titanicus | 死亡守卫 | 沃坦联盟 |
| Astra Militarum | 皇帝的孩子们 | Necrons |
| 灰骑士 | 千子 | Orks |
| 帝国特工 | 世界食客 | 唐帝国 |
| 帝国骑士团 | ||
| 太空海军陆战队 |
太空海军陆战队包括所有章节特定的内容(黑圣殿骑士、血天使、黑暗天使、死亡守望、太空狼)。
建筑
MCP Client (Claude Desktop / Claude Code)
|
| stdio (JSON-RPC)
v
MCP Server (TypeScript)
@modelcontextprotocol/sdk
|
+-----+------+
| |
Structured Vector DB
JSON (Vectra)
Lookups Semantic Search
- 结构化工具 (
get_unit,list_stratagems,compare_units,validate_list)对启动时加载的JSON数据进行精确/过滤查找 - 语义搜索 (
search_rules)将查询嵌入到本地转换器模型中,并搜索预先构建的向量索引 - 嵌入 使用本地生成
all-MiniLM-L6-v2通过@huggingface/transformers-不需要API密钥 - 矢量存储 用途 维克特拉,一个具有JSON文件存储的轻量级JS原生矢量数据库
多派别数据加载
启动时,服务器进行扫描 data/ 用于派系子目录,并并行加载所有JSON文件。每个派系的数据被合并为一个 GameData 对象,每个项目上都保留了派系元数据。
RAG区块链战略
为了准确检索,游戏数据被拆分为语义上有意义的块。每个块都包括用于过滤的派系元数据:
| 块类型 | 内容 |
|---|---|
unit_overview |
姓名、统计数据、关键字、积分、派系 |
unit_weapons |
所有带有关键字的武器配置文件 |
unit_abilities |
核心、派系和独特能力 |
unit_composition |
型号计数、作战装备选项、领导者信息 |
stratagem |
每个策略的完整时间/目标/效果文本 |
enhancement |
效果文本、限制、要点 |
detachment_rule |
分离能力文本 |
faction_rule |
全派系规则 |
core_rule |
核心游戏规则(阶段、概念) |
每个块都以上下文作为前缀(例如。, [Unit: Fire Dragons] (aeldari) Weapons:)因此嵌入捕获了内容及其来源。
快速开始
先决条件
- Node.js 18+
- npm
安装和构建
git clone https://github.com/Emeier2/40k-mcp-server.git
cd 40k-mcp-server
npm install
npm run build
构建矢量索引
必需的 search_rules 工具(首次运行下载嵌入模型,约80MB):
npm run build-index
配置Claude桌面
添加到您的Claude桌面配置(claude_desktop_config.json):
{
"mcpServers": {
"wh40k": {
"command": "node",
"args": ["/absolute/path/to/40k-mcp-server/build/index.js"]
}
}
}
然后重新启动Claude Desktop。工具将自动显示。
配置Claude代码
添加到您的Claude Code MCP设置中:
{
"mcpServers": {
"wh40k": {
"command": "node",
"args": ["/absolute/path/to/40k-mcp-server/build/index.js"]
}
}
}
交互示例
“中间人擅长什么?”
克劳德打电话来
get_unit("Intercessors", faction="space-marines")并获取包含统计数据、栓式步枪配置文件和能力的完整数据表。
“死亡守卫在射击阶段可以使用什么策略?”
克劳德打电话来
list_stratagems(faction="death-guard", keyword="shooting")并得到滤波结果。
“将幽灵卫士与火龙进行反坦克比较”
克劳德打电话来
compare_units("Wraithguard", "Fire Dragons")为了进行并排比较,那么search_rules("anti-tank weapons")以获取更多上下文。
“充电阶段的核心规则是什么?”
克劳德打电话来
search_rules("charge phase", type="core_rule")找到相关的核心规则。
“这份2000分的名单合法吗?”
克劳德打电话来
validate_list使用单位列表,检查积分总数,标记任何EPIC HERO重复或无效的单位大小。
项目结构
40k-mcp-server/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── tools/
│ │ ├── get-unit.ts # Unit datasheet lookup
│ │ ├── search-rules.ts # RAG semantic search
│ │ ├── list-stratagems.ts# Stratagem filtering
│ │ ├── compare-units.ts # Unit comparison
│ │ └── validate-list.ts # Army list validation
│ ├── data/
│ │ ├── loader.ts # Multi-faction JSON loader
│ │ └── types.ts # TypeScript interfaces
│ ├── rag/
│ │ ├── embeddings.ts # Local embedding generation
│ │ ├── vector-store.ts # Vectra index wrapper
│ │ └── chunker.ts # Intelligent data chunking
│ └── utils/
│ └── formatting.ts # LLM-optimized output formatting
├── data/
│ ├── {faction}/ # Per-faction data directories
│ │ ├── units.json # Unit datasheets
│ │ ├── stratagems.json # Stratagems
│ │ ├── enhancements.json # Enhancements
│ │ ├── detachments.json # Detachment rules
│ │ └── faction-rules.json# Faction-wide rules
│ ├── core-rules.json # Core game rules
│ └── index/ # Vector search index
├── scraper/ # Python scraping pipeline (offline)
│ ├── scrape_all.py # Master orchestration (all factions)
│ ├── scrape_datasheets.py # Unit datasheet scraper
│ ├── scrape_faction_data.py# Stratagems/enhancements/detachments
│ ├── scrape_core_rules.py # Core rules scraper
│ └── utils.py # Shared scraping utilities
└── scripts/
└── build-index.ts # Vector index builder
报废数据
要重新抓取所有派系数据(需要Python 3.10+及其依赖项):
pip install -r scraper/requirements.txt
python scraper/scrape_all.py
scraper支持恢复——它跳过输出目录已经包含所有5个文件的派系。要强制重新抓取特定派系,请删除其下的目录 data/.
技术栈
| 技术 | 角色 |
|---|---|
| TypeScript | 服务器实现 |
| @模型上下文协议/sdk | MCP服务器框架 |
| 维克特拉 | 本地矢量数据库(JS原生,JSON存储) |
| @拥抱面/变压器 | 局部嵌入模型(all-MiniLM-L6-v2) |
| 黄道带 | 工具输入模式验证 |
| Python/BeautifulSoup | 离线数据抓取 |
数据源
从中抓取游戏数据 瓦哈佩迪亚 并以结构化JSON的形式提交。scraper是一个离线工具——用户不需要Python或网络访问来运行MCP服务器。
战锤40000条规则和军队数据是Games Workshop的知识产权。这个项目是一个粉丝制作的个人使用工具。
许可证
麻省理工学院