FarmBot硬件控制工具

FarmBot硬件控制工具是一个Agent-native CLI和MCP服务器,用于控制FarmBot硬件,适用于终端操作和AI代理管理的花园场景。

  • by kieranklaassen
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 kieranklaassen/farmbot-agent-cli-mcp

使用说明

农场机器人代理

代理本地CLI和MCP服务器 农场机器人 硬件控制。

从终端控制您的FarmBot,或让AI代理通过 模型上下文协议.

安装

npm install -g farmbot-agent

快速入门(CLI)

# Authenticate
farmbot login --email you@example.com --password yourpassword

# Check status
farmbot status

# Move the gantry
farmbot move --x 100 --y 200 --z 0

# Go home
farmbot home

# Emergency stop
farmbot e-stop

# Unlock after e-stop
farmbot unlock

# Execute Lua on device
farmbot lua 'toast("Hello from the CLI!")'

所有命令支持 --json 用于结构化输出和 --timeout <ms> (默认值:30秒)。

快速入门(MCP服务器)

克劳德桌面

添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "farmbot": {
      "command": "npx",
      "args": ["-y", "farmbot-agent", "mcp"],
      "env": {
        "FARMBOT_TOKEN": "your-jwt-token-here"
      }
    }
  }
}

克劳德代码

claude mcp add farmbot -- npx -y farmbot-agent mcp

环境变量认证

对于MCP模式,设置 FARMBOT_TOKEN 作为环境变量。获取您的令牌:

curl -s -X POST https://my.farm.bot/api/tokens \
  -H "Content-Type: application/json" \
  -d '{"user":{"email":"you@example.com","password":"yourpassword"}}' \
  | jq -r '.token.encoded'

MCP工具

工具 说明
farmbot_status 设备状态:位置、状态、固件
farmbot_get_position 当前X、Y、Z位置(轻量级)
farmbot_get_device_info 设备配置和标识
farmbot_move 将龙门架移动到绝对或相对位置
farmbot_home 主页一个或所有轴
farmbot_emergency_stop 立即停止所有移动
farmbot_unlock 紧急停止后解锁
farmbot_lua 在设备上执行Lua代码

MCP资源

URI 描述
farmbot://device/status 当前设备状态为JSON

CLI命令

命令 描述
farmbot login 验证并存储令牌
farmbot logout 删除存储的令牌
farmbot status 显示设备状态
farmbot move 移动到位置(--x, --y, --z, --speed, --relative)
farmbot home 回家吧(--axis, --speed)
farmbot e-stop 紧急停止
farmbot unlock 电子停止后解锁
farmbot lua <code> 在设备上执行Lua

运作原理

farmbot-agent
├── CLI (Commander)      → Human-friendly terminal commands
├── MCP Server (stdio)   → AI agent tool interface
└── Shared Services      → farmbot-js (MQTT) + FarmBot REST API

FarmBot通信使用MQTT farmbot npm包。命令作为CeleryScript RPC请求发送,响应由UUID匹配。JWT令牌包含MQTT代理凭据。

安全

  • 坐标边界验证 关于所有移动指令
  • 速率限制:每分钟最多30个移动命令(防止失控的代理循环)
  • 紧急停止 始终可用,超时时间短
  • 结构化错误 包含代码、重试提示和恢复建议

发展

git clone https://github.com/kieranklaassen/farmbot-agent
cd farmbot-agent
npm install
npm run build
npm test

许可证

麻省理工学院