使用说明
星露谷MCP大桥
一个混合AI控制的游戏模组,通过模型上下文协议(MCP)将Stardew Valley与AI助手连接起来。使自主AI代理能够通过实时游戏状态同步来控制和玩Stardew Valley。
建筑
┌─────────────────────────────────────────────────────────┐
│ STARDEW VALLEY (Game) │
│ SMAPI Mod (C# .NET 6) │
│ ModEntry → GameStateSerializer │
│ → CommandExecutor (w/ Pathfinder) │
│ → WebSocketServer │
└─────────────────────────────────────────────────────────┘
↕ ws://localhost:8765/game
┌─────────────────────────────────────────────────────────┐
│ MCP Server (Go) │
│ GameClient: WebSocket connection, state tracking │
│ StardewAgent: 12 tools + 30 cheats, autonomous loop │
└─────────────────────────────────────────────────────────┘
↕ Copilot SDK
┌─────────────────────────────────────────────────────────┐
│ Claude Sonnet (via GitHub Copilot SDK) │
└─────────────────────────────────────────────────────────┘
先决条件
对于SMAPI Mod
对于MCP服务器
- 转到1.23+
- GitHub Copilot访问权限(Claude Sonnet通过Copilot SDK访问)
建筑
1.构建C#Mod
cd mod/StardewMCP
dotnet build
这编译 StardewMCP.dll 并将其放入 bin/Debug/net6.0/.
2.构建Go MCP服务器
cd mcp-server
go build -o stardew-mcp
这产生了 stardew-mcp 可执行。
安装
安装SMAPI模块
- 构建mod(见上文)
- 复制整个
mod/StardewMCP/bin/Debug/net6.0/文件夹到您的Stardew Valley mods目录:- 视窗:
%AppData%\StardewValley\Mods\StardewMCP\ - macOS:
~/.config/StardewValley/Mods/StardewMCP/ - Linux:
~/.config/StardewValley/Mods/StardewMCP/
- 视窗:
- 复制
manifest.json到同一文件夹
或者使用SMAPI的mod文件夹结构:
Mods/
└── StardewMCP/
├── manifest.json
├── StardewMCP.dll
└── (other build outputs)
用法
1.与SMAPI一起开启星露谷
通过SMAPI启动游戏。mod将自动启动WebSocket服务器 ws://localhost:8765/game.
2.加载保存文件
一旦你加载到游戏保存中,模组就会激活。
3.运行MCP服务器
cd mcp-server
./stardew-mcp # Run with default autonomous mode
./stardew-mcp -auto=false # Connect without starting AI agent
./stardew-mcp -goal "Clear the farm and plant parsnips"
./stardew-mcp -url ws://localhost:8765/game # Custom WebSocket URL
服务器通过WebSocket连接到游戏,并开始自主AI代理循环。
可用的AI工具
AI代理可以访问12个工具来控制游戏:
| 工具 | 说明 |
|---|---|
move_to |
使用A*寻路导航到特定坐标 |
get_surroundings |
获取当前游戏状态和61x61 ASCII地图视觉 |
interact |
与某个位置的对象/NPC交互 |
use_tool |
使用当前配备的工具 |
use_tool_repeat |
连续多次使用工具 |
face_direction |
让玩家面向一个方向 |
select_item |
按名称从库存中选择一个项目 |
switch_tool |
切换到特定工具 |
eat_item |
食用食物以获取能量 |
enter_door |
输入建筑或扭曲点 |
find_best_target |
为当前工具找到最佳目标 |
clear_target |
清除当前目标 |
作弊模式
作弊模式提供即时上帝模式功能,用于快速测试或无压力游戏。 必须致电 cheat_mode_enable 第一 在任何其他作弊命令生效之前。
模式控制
| 工具 | 说明 |
|---|---|
cheat_mode_enable |
启用作弊模式(首先需要) |
cheat_mode_disable |
禁用作弊模式和所有持久效果 |
cheat_time_freeze |
打开/关闭时间冻结 |
cheat_infinite_energy |
打开/关闭无限耐力 |
传送
| 工具 | 说明 |
|---|---|
cheat_warp |
远程传输到位置(农场、城镇、山脉、海滩、森林、矿山、沙漠) |
cheat_mine_warp |
扭曲到特定地雷级别(1-120=地雷,121+=骷髅洞) |
农业自动化
| 工具 | 说明 |
|---|---|
cheat_clear_debris |
清除所有杂草、石头、树枝、草 |
cheat_cut_trees |
砍伐所有树木,收集木材/硬木 |
cheat_mine_rocks |
开采所有岩石/巨石,收集矿石 |
cheat_hoe_all |
直到所有可挖掘的瓷砖 |
cheat_water_all |
给所有耕种的土壤浇水 |
cheat_plant_seeds |
在所有空锄头瓷砖上播种(需要种子ID) |
cheat_fertilize_all |
给所有锄地的瓷砖施肥 |
cheat_grow_crops |
立即种植所有作物,准备收割 |
cheat_harvest_all |
收割所有熟作物 |
cheat_dig_artifacts |
挖出所有文物点 |
图案绘制
| 工具 | 说明 |
|---|---|
cheat_hoe_tiles |
按坐标显示特定的瓷砖(瓷砖=“x,y;x,y”) |
cheat_clear_tiles |
清除特定瓷砖 |
cheat_hoe_custom_pattern |
使用ASCII网格输入绘制形状 |
资源和项目
| 工具 | 说明 |
|---|---|
cheat_set_money |
设置黄金金额 |
cheat_add_item |
按ID添加项目(例如,“(O)465”表示杨桃种子) |
cheat_spawn_ores |
添加矿石:铜、铁、金、铱、煤 |
cheat_set_energy |
将耐力恢复到最大值 |
cheat_set_health |
将健康恢复到最大值 |
社交
| 工具 | 说明 |
|---|---|
cheat_set_friendship |
与NPC建立友谊(心1-10或分) |
cheat_max_all_friendships |
最大化所有NPC友谊 |
cheat_give_gift |
立即向NPC赠送礼物 |
升级
| 工具 | 说明 |
|---|---|
cheat_upgrade_backpack |
升级背包(12、24或36个插槽) |
cheat_upgrade_tool |
升级工具(0=基本到4=铱) |
cheat_upgrade_all_tools |
将所有工具升级到指定级别 |
cheat_unlock_all |
最大限度地利用一切:背包、工具、食谱、技能 |
示例:即时农场设置
1. cheat_mode_enable
2. cheat_warp Farm
3. cheat_clear_debris, cheat_cut_trees, cheat_mine_rocks
4. cheat_hoe_all
5. cheat_plant_seeds (with seedId "472" for parsnips)
6. cheat_grow_crops
7. cheat_harvest_all
WebSocket协议
mod和服务器通过WebSocket上的JSON进行通信。
请求格式:
{
"id": "uuid",
"type": "command",
"action": "move_to",
"params": {"x": 10, "y": 20}
}
响应格式:
{
"id": "uuid",
"type": "response",
"success": true,
"message": "Moved to position",
"data": {}
}
配置
- WebSocket端口:默认值
8765(配置于WebSocketServer.cs) - 工具冷却:工具摆动之间有30个游戏节拍(60fps时约0.5秒)
- 国家广播:游戏状态每1秒发送一次
- 路径寻找:A*具有50000次迭代限制,30个图块扫描半径
故障排除
模块未加载:确保安装了SMAPI 4.0.0+,并且mod文件位于正确的Mods文件夹结构中。
WebSocket连接失败:检查游戏是否正在运行,是否已加载保存。服务器每5秒重试一次连接。
寻路失败:A*算法最多尝试5次路径重新计算。某些区域可能因障碍物而无法到达。