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服务器集成之前捕获回归。
