farmOS叶MCP
面向工厂的farmOS工作流的MCP服务器:
- 摄像头捕捉+YOLO植物分类
- 在farmOS中创建/更新工厂资产
- 可选远程低置信度LLM审查
- 可选地图分割->多边形几何更新
- 捕获/上传活动日志图像
- 检索/导出工厂资产数据
- 清理非工厂和重复的活动日志图像
当前MCP工具
get_server_info()classify_camera_and_sync_asset(camera_index=0, delay_seconds=5.0, mode="ask", asset_name_override="")capture_and_upload_asset_images(image_count=5, interval_seconds=3.0, camera_index=0, start_delay_seconds=0.0, asset_id="", force_new_log=False)apply_segmented_image_geometry_to_asset(segmented_image_path, latitude=None, longitude=None, zoom=18, asset_id="", create_new_if_missing=True, new_asset_name="", land_type="bed")collect_data_with_coordinates(latitude=None, longitude=None, mode="ask", asset_name_override="", camera_index=0, classifier_delay_seconds=5.0, collection_interval_seconds=3.0, collection_duration_seconds=15.0, mapbox_zoom=18, mapbox_width=800, mapbox_height=800, segment_server_host="", segment_server_port=0, upload_to_activity_log=False)retrieve_plant_asset_data(plant_name, mode="ask", selected_asset_id="", selected_asset_name="", selected_asset_index=0, export_dir="")cleanup_asset_activity_log_images(mode="scan", asset_id="", asset_name_contains="", cleanup_scope="both", days_back=30, non_plant_conf_threshold=25.0, duplicate_hash_distance=6, keep_policy="highest_confidence", allow_multi_asset_execute=False, hard_delete_files=False, cleanup_local_captures=False, local_capture_dir="", confirmation_text="")
建筑
- MCP服务器:
farmos_leaf_mcp.py - farmOS API客户端:
farmOSPython包 - 视觉模型:外部YOLO脚本(
infer_image.py,live_preview.py) - 远程服务(ZeroMQ REQ/REP):
- 分段服务器(send_image_for_segmentation) - 低置信度审核服务器(request_low_confidence_text)
需求
- Python 3.10+
- 摄像头可通过OpenCV访问
- farmOS凭据+OAuth客户端
- YOLO模型/脚本在磁盘上可用
- 几何流可选:Mapbox令牌+远程分割服务器
- GPS可选:NMEA串行设备(默认
/dev/ttyACM0)
安装:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt配置
复制和编辑环境文件:
cp .env.example .env主要变量:
- farmOS身份验证:
FARMOS_HOST,FARMOS_USER,FARMOS_PASSWORD,FARMOS_CLIENT_ID,FARMOS_CLIENT_SECRET - YOLO路径:
LEAF_YOLO_DIR,LEAF_YOLO_MODEL_PATH,LEAF_YOLO_INFER_SCRIPT,LEAF_YOLO_LIVE_PREVIEW_SCRIPT - ZMQ远程服务器:
- 细分: SEGMENT_SERVER_HOST, SEGMENT_SERVER_PORT - 低置信度法学硕士评审: LOW_CONF_SERVER_HOST, LOW_CONF_SERVER_PORT
- 地图图像源标记:
MAPBOX_TOKEN - 目录:
LEAF_CAPTURE_DIR,MAPBOX_INPUT_DIR,SEGMENTED_DIR,LEAF_EXPORT_DIR
跑
./run_mcp.sh此脚本:
- 激活venv(如果存在)
- 负载
.env(如果存在) - 开始
farmos_leaf_mcp.py
工具行为注释
classify_camera_and_sync_asset
- 使用YOLO捕获图像并对植物标签/置信度进行分类。
- 如果存在匹配资产:
- mode="ask":返回提示 - mode="overwrite":更新现有资产 - mode="create_new":创建后缀资产
- 若置信度低于阈值,则将图像发送到远程低置信度审查服务器,并将LLM输出存储在笔记/活动日志中。
collect_data_with_coordinates
端到端流结合资产同步+并行任务:
- 对工厂资产进行分类/追加销售
- 运行几何管道(Mapbox图像->远程分割->轮廓->WKT->更新资源几何)
- 捕获间隔图像,并可选择上传到活动日志
cleanup_asset_activity_log_images
mode="scan":仅报告候选人mode="execute":执行取消链接/删除(带安全确认)- 重复检测仅在YOLO分类为植物的图像上使用pHash。
存储库卫生
Git中有意忽略生成的运行时输出:
captures/mapbox_inputs/received_segmented_mapbox_image/plant_exports/
如果你需要样本工件,请在专用的 examples/ 目录。
安全须知
- 不要向仓库提交真实的凭据、令牌或私有主机IP。
- 保守秘密
.env(Git忽略了)。 - 如果令牌在历史上被提交过,则对其进行轮换。
