civ6mcp
一个MCP服务器,让LLM代理玩《文明VI》的完整游戏。
将任何兼容MCP的客户端(Claude Code、Codex、Gemini CLI或您自己的客户端)连接到正在运行的Civ 6游戏。代理通过游戏自己的规则执行API读取游戏状态、移动单位、管理城市、进行外交和结束回合。没有作弊,不需要视觉模型。
能力
76个工具覆盖了整个游戏循环:
- 单位 --列出、移动、攻击、加固、建立城市、建造改进、推广、升级
- 城市 --检查、设定生产、购买黄金单位/建筑、管理重点
- 地图 --探索地形、资源、战争迷雾;获得定居和地区安置建议
- 研究 --浏览科技和城市树木,设定研究目标
- 外交 --关系、修改者、代表团、大使馆、联盟、和平协议
- 贸易 --提出并回应交易,管理贸易路线和目的地
- 政府 --交换政策卡片,更换政府,选择时代奉献
- 州长 --任命、分配到城市、推广
- 宗教 --发现万神殿和宗教,选择信仰,追踪传播
- 伟人 --招募、赞助、拒绝
- 世界大会 --对决议进行投票,管理外交支持
- 胜利 --跟踪所有胜利条件下的进展
- 游戏生命周期 --保存、加载、启动、重启、终止
每一个转弯, end_turn 拍摄之前/之后的快照,并报告发生的事情:单位损坏、城市扩张、生产完成、城市附近发现的威胁。
快速启动
1.配置Civ 6
启用FireTuner调试界面并配置推荐设置:
| 设置 | 值 | 为什么 |
|---|---|---|
| 调谐器 | Enabled | Required--打开MCP服务器连接的TCP调试端口。禁用成就。 |
| 自动结束转弯 | 已禁用 | 代理控制何时结束。自动结束会干扰阻断器分辨率流。 |
| 窗口模式 | 推荐 | 让您在代理玩游戏时观看游戏。基于OCR的保存加载所需。 |
窗户: 所有三个设置都可以在游戏内的“选项”菜单中找到。调谐器设置在游戏选项下显示为“调谐器(禁用成就)”。
macOS: 调谐器设置未显示在菜单中。编辑 AppOptions.txt 直接设置 EnableTuner 1:
~/Library/Application Support/Sid Meier's Civilization VI/Firaxis Games/Sid Meier's Civilization VI/AppOptions.txtLinux: 与macOS相同-编辑 AppOptions.txt 直接设置 EnableTuner 1:
~/.local/share/aspyr-media/Sid Meier's Civilization VI/AppOptions.txtWindows: additional setup
安装Civ 6 SDK --调谐器服务器是SDK的一部分,而不是基础游戏:
- 在Steam中,前往图书馆→ 按工具筛选
- 查找并安装“Sid Meier's Civilization VI SDK”
重要提示:
- 关闭
FireTuner.exe(SDK的GUI工具)在运行civ6-mcp之前——游戏只允许 一 一次连接调谐器 - 做 不 从WSL运行——WSL2和Windows之间的网络桥接不可靠,调谐器服务器在连接失败后锁定
- 如果连接失败, 重新开始游戏 --调谐器在握手失败后通常会挂起,在进程被回收之前不会恢复
Linux: additional notes
- 这 本机Linux端口 是必需的——FireTuner调试接口内置于本机二进制文件中。Proton/Wine构建不会暴露它。
- 游戏以单人模式运行
Civ6该进程通过Steam Linux运行时启动(士兵侦察)。 - GUI自动化(基于OCR的菜单导航)需要 X11在Wayland上,游戏通常在XWayland下运行,这应该是可行的,但本地X11会话是最可靠的。
重新启动Civ 6。游戏将在TCP端口4318上监听连接。
2.安装
git clone https://github.com/lmwilki/civ6-mcp.git
cd civ6-mcp
uv sync对于GUI自动化功能(屏幕截图、基于OCR的菜单导航):
# macOS
uv pip install 'civ6-mcp[launcher-macos]'
# Windows (uses built-in Windows OCR — no external binaries needed)
uv pip install 'civ6-mcp[launcher-windows]'
# Linux (Ubuntu/Debian)
sudo apt install xdotool tesseract-ocr
uv pip install 'civ6-mcp[launcher-linux]'3.测试连接
运行Civ 6并加载游戏:
uv run python scripts/test_connection.py您应该看到一个成功的握手和Lua状态列表(GameCore_Tuner、InGame等)。
4.配置您的MCP客户端
服务器通过stdio运行。向你的客户指出:
Claude Code
回购包括 .mcp.json --自动检测到:
cd civ6-mcp
claudeClaude Desktop
添加到您的配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"civ6": {
"command": "uv",
"args": ["run", "--directory", "/path/to/civ6-mcp", "civ-mcp"]
}
}
}Codex
添加 .codex/config.toml 在项目根目录中:
[mcp_servers.civ6]
command = "uv"
args = ["run", "--directory", "/path/to/civ6-mcp", "civ-mcp"]Gemini CLI
添加 .gemini/settings.json 在项目根目录中:
{
"mcpServers": {
"civ6": {
"command": "uv",
"args": ["run", "--directory", "/path/to/civ6-mcp", "civ-mcp"]
}
}
}Other MCP clients
服务器使用stdio JSON-RPC:
uv run civ-mcp5.玩
在Civ 6中加载游戏,连接您的客户端,然后尝试:
Play my Civ 6 game. Start by getting an overview, then check units and
cities, and play through the turn.代理人将与 get_game_overview,扫描地图上的威胁,移动部队,设置生产和研究,处理外交事务,结束转弯。
作为基准
《文明VI》是评估法学硕士战略推理的有力环境。游戏运行300多个回合,有复杂的决策、不完整的信息和多个相互竞争的目标,这比单回合或短期任务有了很大的进步。
- 多转弯规划 --决策在数百个回合中复杂化,延迟了回报
- 不完全信息 --战争迷雾、隐藏的人工智能意图、未开发的地图
- 资源管理 --平衡黄金、生产、科学、文化、信仰和军事
- 对手建模 --解读外交信号,预测人工智能行为
- 战略适应 --应对威胁,在比赛中期转移优先事项
MCP接口提供了一个干净的抽象:模型以文本形式接收叙述的游戏状态,并通过工具调用进行响应。所有游戏规则都由引擎执行。一个配套的网络应用程序可以让你轮流重播会话。
运作原理
Claude / Any MCP Client
| stdio (JSON-RPC)
v
MCP Server (Python) <- 70+ tools
|
| Generates Lua code at runtime
| TCP :4318
v
Civilization VI <- Game is the TCP server服务器通过FireTuner调试协议保持与Civ 6的持久TCP连接。它生成Lua代码,在游戏的两个Lua VM(GameCore用于读取状态,InGame用于发出命令)中执行它,解析输出,并将叙述文本返回给LLM。
回购包括 代理商.md 剧本(符号链接为 CLAUDE.md Claude Code),并为代理人提供了详细的说明:转弯、战斗、外交、常见陷阱。看 开发日志 了解完整的开发故事,包括FireTuner协议的反向工程和在此过程中发现的许多API怪癖。
需求
- macOS、Windows或Linux 《文明VI》(Steam版,收集风暴DLC)
- Python 3.12+ 和 紫外线
- 一 MCP客户端 (Claude Code、Codex、Gemini CLI或任何兼容MCP的客户端)
许可证
麻省理工学院
