RimWorld-MCP
RimWorld MCP
让 ClaudeCode / Codex 等 AI Agent 通过 MCP 协议(Model Context Protocol) 直接控制 RimWorld 的小人干活。
快速开始
# 1. 构建 Mod
.\build.ps1 -Install
# 2. 启动 RimWorld,在 Mod 列表启用 "RimWorld MCP Interface"
# 3. 加载存档
# 4. 连接 MCP Server
claude code --mcp "rimworld-mcp: node E:\Project\RimWorld-MCP\mcp-server\src\index.js"
架构
AI Agent (ClaudeCode/Codex)
│ MCP (stdio JSON-RPC)
▼
MCP Server (Node.js)
│ HTTP (localhost:5199)
▼
RimWorld Mod (C#)
│
▼
Pawn_JobTracker.TryTakeOrderedJob()
Mod 无 Harmony 依赖,零外部 DLL,即装即用。
MCP 工具
| 工具 | 说明 |
|------|------|
| list_pawns | 列出殖民地所有可控制小人 |
| get_pawn_state | 小人详细状态(技能/装备/负重/征召) |
| pawn_goto | 移动到坐标 |
| pawn_job | 通用工作接口,支持 287 种 RimWorld JobDef |
| scan_map | 扫描地图(Pawn/物品/坐标) |
| search_jobs | 搜索可用工作类型 |
| pawn_haul | 搬运到存储区 |
| pawn_mine | 采矿 |
| pawn_cut | 砍树/割植物 |
| pawn_wait | 原地等待 |
| pawn_deconstruct | 拆除建筑 |
| pawn_attack | 近战攻击 |
典型工作流
scan_map → 看地图(敌人位置、资源分布)
list_pawns → 看殖民地小人
get_pawn_state id=Pepper → 看技能(Shooting 11, Melee 13...)
search_jobs q=tend → 搜索医疗工作
pawn_job id=Pepper type=tendpatient thingId=Human824 → 治疗
pawn_goto id=Pepper x=50 z=50 → 移动
pawn_job 通用接口
type 参数支持全部 RimWorld JobDef,不区分大小写:
| 分类 | type 示例 |
|------|-----------|
| 战斗 | attackmelee, hunt, capture, arrest |
| 医疗 | tendpatient, rescue, feedpatient |
| 建造 | deconstruct, buildroof, smoothfloor, repair |
| 采集 | mine, cutplant, harvest, sow |
| 搬运 | haul, equip, unloadinventory |
| 制作 | research, dobill, refuel |
| 社交 | tame, train, prisonerattemptrecruit |
| 杂项 | clean, flick, strip, beatifire |
不确定用什么 type?用 search_jobs q=关键词 搜索。
HTTP API
| 方法 | 端点 | 说明 |
|------|------|------|
| GET | /api/health | 健康检查 |
| GET | /api/pawns | 小人列表 |
| GET | /api/pawns/{id}/state | 详细状态 |
| POST | /api/pawns/{id}/jobs | 指派工作 |
| GET | /api/map | 地图扫描 |
| GET | /api/jobs?q=xxx | 搜索工作 |
| POST | /api/debug/load-save | 加载存档(实验性) |
{id} 支持 ThingID、全名、昵称、First 名、Last 名。
快速开发
.\build.ps1 -Install # 编译 + 部署到 Mods 目录
.\debug.ps1 # 全自动循环:Kill → Build → Deploy → Start → 等存档
技术栈
- Mod: C#,零外部依赖,无 Harmony,编译用 .NET Framework 4.x csc
- MCP Server: Node.js, @modelcontextprotocol/sdk
- 通信: HttpListener (port 5199) + stdio JSON-RPC
- 线程: 后台 HTTP + Unity MainThread MonoBehaviour queue