返回 MCP 目录
public公开dns本地运行

civ5-mcp

这是一个将《文明5》游戏与AI代理通过MCP协议连接的模组,包含游戏桥接器和MCP服务器两部分,旨在为玩家提供类似人类视角的游戏状态信息辅助。

article

README

🚀 Civ 5 MCP

Civ 5 MCP 可借助 MCP 将你的《文明 5》游戏与智能体连接起来。此模组会创建一个进程间通信(IPC)通道,将你的实时游戏与 MCP 服务器相连,让智能体能够与之交互。

查看一些示例

该模组的设计理念是仅提供人类玩家在合理情况下能够知晓的信息。例如,我们会避免泄露奇观的位置或未接触过的玩家的信息。其核心目标是打造一个超级游戏顾问,助力你提升游戏水平。

本项目由两部分构成:游戏模组(即桥梁)和 MCP 服务器。要使用此模组,你必须同时使用这两部分。

⚠️ 重要提示

此模组仅在 Windows 系统的《文明 5:勇敢新世界》版本上进行过测试。

🚀 快速开始

操作步骤

  1. 下载最新版本并将内容解压到你的 MODS 目录。通常该目录为 %USERPROFILE%\Documents\My Games\Sid Meier's Civilization 5\MODS
    • 目录结构应如下所示:
MODS/
  Civ5MCP_Bridge (v VERSION)/
      Civ5MCP_Bridge.modinfo
      ... 一堆 .lua 文件 ...
  1. 启动游戏。
  2. 选择“MODS”。
  3. 点击小按钮启用此模组。
  4. 配置你的游戏。
  5. 配置你的智能体以运行 server/civ5_mcp_server.py
  6. 尽情享受游戏!

🛠️ 开发

构建

模组信息和常量文件会在构建时生成。mod_config.json 描述了模组以及将以《文明 5》所需格式导出的文件。

# 所有目标都有对应的 docker 变体,例如 make docker-lint

# 进行代码检查
make lint

# 运行单元测试
make test

# 生成《文明 5》可读取的目录
make build

# 可选操作:自动部署到你的《文明 5》MODS 文件夹
./tools/deploy.ps1

版本控制

Lua rockspec 和《文明 5》的版本格式有所不同。《文明 5》要求版本号为无点号或破折号的字符串。因此,《文明 5》的版本号会去掉修订号,并将主版本号和次版本号合并为 主版本号 * 10 + 次版本号

🌉 桥梁模块

游戏状态会在每回合开始时记录,并写入 SQLite 数据库。每个新游戏会作为一个新会话存储。会话和回合数将作为状态的 ID。回合历史和初始游戏配置会使用此会话 ID 进行存储。

⚠️ 重要提示

data 字段是一个 JSON 数据块,其格式不稳定!

桥梁模块在 Lua 5.1.4 的沙盒环境中运行,可使用的 API 非常有限。游戏仅暴露了此 API,我们也只能使用这些。

💻 运行服务器

cd server

# 测试服务器是否可以启动
uv run civ5_mcp_server.py

如果没有看到任何错误,你可以使用类似以下的配置将此服务器添加到 Claude 等工具中。如果 uv 启动失败,请尝试直接使用 uv 的虚拟环境 Python 二进制文件。

{
  "mcpServers": {
    "civ5": {
      "command": "uv",
      "args": ["run", "path/to/civ5_mcp_server.py"],
    }
  }
}
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端