游戏控制协议服务器

Factorio MCP是一个Python服务器,允许LLM通过RCON控制Factorio游戏,适用于多玩家环境中的自动化操作。

  • by bbeaudreault
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 bbeaudreault/factorio-mcp

使用说明

MCP工厂

模型上下文协议服务器,允许LLM通过RCON控制游戏。

概述

这个项目是 Python MCP服务器 (factorio-mcp)它公开了LLM可以调用的工具(列出播放器、检查状态、放置实体等)。服务器通过RCON直接与Factorio服务器通信,使用 /c Lua命令——不需要Factorio端模块。

预期的用例是多人游戏:LLM通过发出MCP工具调用与人类一起玩,这些调用转化为游戏中的动作。

入门

先决条件

  • Python 3.10+
  • 启用RCON的正在运行的Factoryo无头服务器。
  • RCON允许的控制台命令(allow-commands=admins-only 或更广泛)。

配置RCON访问

设置以下环境变量(或将其放置在 .env 文件):

FACTORIO_RCON_HOST=127.0.0.1
FACTORIO_RCON_PORT=27015
FACTORIO_RCON_PASSWORD=secret
# Optional
FACTORIO_RCON_TIMEOUT=5.0

安装MCP服务器

pip install .

运行服务器:

factorio-mcp --env-file .env

该过程启动了一个暴露Factorio工具的模型上下文协议服务器。

通过MCP CLI启动服务器时(mcp run / mcp dev),set FACTORIO_MCP_ENV_FILE 指向你的 .env 因此模块级FastMCP应用程序可以加载凭据:

export FACTORIO_MCP_ENV_FILE=/path/to/.env
mcp dev src/factorio_mcp/server.py:app --with-editable .

服务器命令权限

因为MCP服务器发送 /c 通过RCON命令,您的Factoryo服务器必须允许RCON的控制台命令(默认 allow-commands=admins-only 工作,因为RCON被视为管理员)。如果您的服务器禁用 /c,在使用前在开发服务器上启用它。

可用工具

MCP服务器向LLM公开这些工具:

  • ping –验证与Factorio服务器的连接。
  • list_players –返回连接的玩家和位置。
  • player_state(player) –报告玩家的位置、表面、健康和主要库存计数。
  • find_resources(resource_name, x, y, radius, surface?) –查找点附近的资源实体。
  • build_entities(player, entities, consume_items?) –要求服务器代表玩家放置实体(可选地从其库存中消费物品)。
  • teleport_player(player, x, y, surface?) –传送玩家(对设置/测试有用)。

运作原理

MCP服务器将工具调用转换为Lua代码段,通过以下方式发送 /c 超过RCON。每个代码段验证输入,运行相关的游戏端逻辑,并通过以下方式返回结构化JSON rcon.print 以便MCP客户端解析。

测试

安装开发依赖项并运行Python测试套件:

pip install .[dev]
pytest

这些测试涵盖了RCON数据包编码/解码逻辑和JSON命令整形实用程序,用于在与Factorio服务器集成之前捕获回归。