FYTA MCP服务器🌱
FYTA工厂传感器数据的模型上下文协议(MCP)服务器。直接通过Claude访问您的工厂数据!
这是什么?
FYTA是一个智能植物传感器系统,用于测量土壤湿度、温度、光照和养分。此MCP服务器使Claude能够访问这些数据并帮助您进行植物护理。
特性
工厂基本数据
- 🌿 获取所有植物:使用传感器数据对所有工厂进行全面概述
- 🔍 工厂详细信息:单个植物的详细信息
- 📊 工厂测量:随时间变化的历史传感器数据和测量值
- ⚠️ 需要注意的植物:自动检测需要护理的植物
- 🏡 花园概况:花园和植物的有序视图
高级分析工具
- 🔬 智能工厂诊断:具有阈值评估和传感器能力检测的智能健康分析
- 📈 趋势分析:跟踪水分、温度、营养物质和光线随时间的变化
- 📊 统计分析:平均值、最小值、最大值、稳定性评分和异常检测
- ☀️ DLI(每日光积分)分析:计算每日光照和季节模式
- 🌡️ 智能阈值评估:使用实际阈值修复FYTA不一致的状态代码
- 💧 智能施肥:基于EC的施肥建议和趋势预测
背景和护理跟踪
- 📝 工厂环境管理:储存基质类型、容器类型和生长阶段
- 🗓️ 护理行动记录:跟踪人工浇水、施肥和重新种植
- 📖 护理史分析:分析护理行动的有效性
- 🔔 事件检测:自动检测工厂条件的重大变化
集线器和设备监控
- 🔌 集线器状态监控:跟踪您的所有FYTA集线器(在线/离线、固件版本、连接)
- 📡 设备健康状况:监控传感器、电池状态和上次通信时间戳
- ⚠️ 连接警报:检测连接丢失的集线器和停止报告的传感器
- 🔍 原始API访问:完全访问未筛选的FYTA API数据以进行调试
传感器智能
- 🎯 传感器能力检测:自动检测传感器类型(光束2.0、光束、传统)
- 💡 光传感器感知:当灯光数据不可用时显示适当的警告
- 🔋 电池监控:轨道传感器电池状态
安装
先决条件
- Python 3.10或更高版本(或Docker)
- FYTA工厂账户
- Claude桌面应用程序(或其他MCP兼容客户端)
使用Docker进行设置(推荐)
- 安装Docker和Docker Compose
确保你的系统上安装了Docker。
- 克隆存储库
cd ~/fyta-mcp-server- 设置环境变量
创建一个 .env 文件:
cp .env.example .env并输入您的FYTA凭据:
FYTA_EMAIL=your-email@example.com
FYTA_PASSWORD=your-password- 构建并启动容器
docker-compose up -d容器命令:
# Stop container
docker-compose down
# Show logs
docker-compose logs -f
# Rebuild container
docker-compose build
# Restart container
docker-compose restart不带Docker的安装
- 克隆存储库或下载文件
cd ~/fyta-mcp-server- 创建虚拟环境(可选但推荐)
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate- 安装依赖项
pip install -r requirements.txt
pip install -e .- 设置环境变量
创建一个 .env 文件:
cp .env.example .env并输入您的FYTA凭据:
FYTA_EMAIL=your-email@example.com
FYTA_PASSWORD=your-password重要:The .env 文件永远不应该提交到Git!
Claude桌面配置
将以下内容添加到您的Claude Desktop配置中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
使用Docker(推荐)
{
"mcpServers": {
"fyta": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--env-file",
"/absolute/path/to/fyta-mcp-server/.env",
"fyta-mcp-server"
]
}
}
}或者使用docker编写:
{
"mcpServers": {
"fyta": {
"command": "docker-compose",
"args": [
"-f",
"/absolute/path/to/fyta-mcp-server/docker-compose.yml",
"run",
"--rm",
"fyta-mcp-server"
]
}
}
}没有Docker(直接使用Python)
{
"mcpServers": {
"fyta": {
"command": "/absolute/path/to/fyta-mcp-server/.venv/bin/python",
"args": [
"-m",
"fyta_mcp_server"
],
"env": {
"FYTA_EMAIL": "your-email@example.com",
"FYTA_PASSWORD": "your-password"
}
}
}
}或者使用紫外线:
{
"mcpServers": {
"fyta": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/fyta-mcp-server",
"run",
"python",
"-m",
"fyta_mcp_server"
],
"env": {
"FYTA_EMAIL": "your-email@example.com",
"FYTA_PASSWORD": "your-password"
}
}
}
}用法
重新启动Claude Desktop后,以下工具可用:
工厂基本数据
获取所有植物
Show me all my plants工厂详细信息
Show me details for plant with ID 123历史测量
Show me measurements for plant 123 from the last week需要注意的植物
Which of my plants need care right now?花园概况
Give me an overview of my gardens高级分析
智能诊断
Diagnose plant 123 and give me detailed recommendations返回全面的健康分析,包括:
- 智能阈值评估(修复FYTA不一致的状态代码)
- 传感器性能检测(显示光传感器是否可用)
- 基于EC趋势的智能施肥建议
- 基于数据质量的置信度评分
趋势分析
Show me moisture and nutrient trends for plant 123 over the last month跟踪随时间变化的方向、百分比变化和预测。
统计分析
Give me statistics for all metrics of plant 123提供平均值、最小值、最大值、标准差、稳定性评分和异常检测。
DLI分析
Calculate daily light integral for plant 123仅适用于具有光传感器的传感器(FYTA Beam 2.0)。提供:
- 每日光照量(mol/m²/天)
- 每种植物的最佳DLI建议
- 生长灯建议
- 季节性预测
上下文管理
设置工厂上下文
Set context for plant 123: organic soil in a terracotta pot, currently in vegetative growth存储FYTA不知道的重要信息:
- 基底:矿物,有机,lechuza_pon,水培,半水
- 容器:lechuza,自浇水,陶土,塑料,陶瓷
- 生长期:幼苗、营养植物、开花、结果、休眠
获取工厂背景
What context information do you have for plant 123?返回带有上下文感知建议的存储上下文。
护理跟踪
日志维护操作
Log that I watered plant 123 with 500ml today跟踪FYTA不知道的手动护理操作:
- 浇水(按量)
- 施肥(含产品和用量)
- 复刻(带基材和罐尺寸)
- 其他自定义操作
获取护理史
Show me the care history for plant 123 from the last 30 days通过有效性分析查看过去的护理行动。
事件检测和监控
备注:MCP是一种请求-响应协议,它不能推送通知。对于主动监控,您需要定期询问Claude或与n8n或Home Assistant等自动化系统集成。看 示例/ 集成指南。
获取植物事件
Are there any problems with my plants?自动检测(按需):
- 🔇 传感器静音:传感器未报告超过90分钟
- 🔋 电量不足:电池电量低于20%
- 💧 临界水分:需要立即浇水
- 🌡️ 极端温度:热应激风险
- 📊 状态改变:任何参数从最佳值更改
- 📡 WiFi断开连接:连接问题
返回带有严重性、优先级和可操作建议的webhook就绪JSON。
实际使用:每天询问克劳德“我的工厂有问题吗?”或与cron/n8n集成以实现自动化。
集线器和设备监控
获取所有集线器
Show me my FYTA Hubs列出所有集线器,包括:
- 在线/离线状态
- 固件版本
- 互联植物和传感器
- 上次看到的时间戳
- 连接健康状况
获取中心详细信息
Show details for Hub E8:06:90:C4:B7:EE详细的集线器信息,包括所有连接的设备。
获取原始API数据
Show me the raw FYTA API response访问完整的未筛选API数据,以便调试或发现新功能。
API终点
服务器使用以下FYTA API终结点:
POST https://web.fyta.de/api/auth/login-身份验证GET https://web.fyta.de/api/user-plant-检索工厂数据POST https://web.fyta.de/api/user-plant/measurements/[plantID]-检索历史测量值(带时间线:小时、天、周、月)
技术细节
状态值
传感器返回以下状态值:
- 1 =太低(低)
- 2 =最佳
- 3 =太高(高)
这适用于:
- 温度(
temperature_status) - 灯光(
light_status) - 土壤湿度(
moisture_status) - 营养素/盐度(
salinity_status)
备注:FYTA的状态代码可能不一致。这 diagnose_plant 该工具使用智能阈值评估来提供更准确的状态评估。
传感器类型
服务器会自动检测连接的传感器类型:
| 类型 | 名称 | 光传感器 | 功能 |
|---|---|---|---|
| 1 | FYTA(传统) | ❌ | 温度、湿度、营养素 |
| 2 | FYTA梁2.0 | ✅ | 温度、湿度、营养物质、光照 |
| 3 | FYTA梁 | ❌ | 温度、湿度、营养素 |
工具如 get_plant_dli_analysis 如果你的传感器不支持光测量,它会自动警告你。
字段名称
API财年在测量数据中使用特定字段名称:
soil_moisture(不是moisture)soil_fertility(不是salinity或nutrients)date_utc(格式:“YYYY-MM-DD HH:MM:SS”)temperature和light(如预期)
智能功能
智能阈值评估
FYTA的状态代码有时与实际阈值相矛盾。例如,即使最佳范围为5-25°C,19°C的温度也可能被标记为“高”。这 diagnose_plant 该工具通过根据实际阈值评估值来解决这个问题。
基于EC的施肥
FYTA的施肥预测是通用的,基于时间的(“190天内施肥”)。该服务器提供基于EC(电导率)的建议:
- EC状态:临界低(\1.2)
- 基板特定阈值:有机、矿物、PON和水培基质的不同最佳范围
- 趋势预测:线性回归预测EC何时达到临界水平
- 动作时机:根据当前EC和趋势立即、尽快或维持
盐度阈值
服务器使用最佳盐度范围 0.2-1.0米/厘米 (冬季较低,夏季较高)。
当FYTA将冬季阈值设置为min=max=0时,服务器会应用这些默认值来正确评估营养状况。
EC=0处理
EC=0表示 土壤中没有养分 并且被评估为需要施肥的“低”状态。
FYTA的API可能标志 soil_fertility_anomaly: true 什么时候:
- EC=0,带有异常标志 → 传感器可能与土壤接触不良,但EC=0仍表示没有养分
- EC≠0,带异常标志 → 真实传感器故障(读数不可靠)
服务器尊重FYTA的异常标志,但将EC=0视为指示营养缺乏的有效测量值。
故障排除
服务器无法启动
- 检查环境变量是否设置正确
- 测试身份验证:
cd /path/to/fyta-mcp-server
source .venv/bin/activate
python tests/test_connection.py无可用数据
- 确保您将FYTA Hub或移动应用程序用作网关
- FYTA光束传感器仅发送需要服务器处理的原始数据
- 在FYTA应用程序中检查您的传感器是否已连接
发展
项目结构
fyta-mcp-server/
├── src/fyta_mcp_server/
│ ├── __init__.py
│ ├── server.py # MCP server setup
│ ├── client.py # FYTA API client
│ ├── tools.py # Tool definitions
│ ├── handlers.py # Tool handler implementations
│ └── utils/
│ ├── care_actions.py # Care tracking and analysis
│ ├── dli.py # Daily Light Integral calculations
│ ├── events.py # Event detection
│ ├── fertilization.py # EC-based fertilization logic
│ ├── plant_context.py # Context storage and recommendations
│ ├── sensor_info.py # Sensor capability detection
│ ├── statistics.py # Statistical analysis
│ ├── thresholds.py # Smart threshold evaluation
│ └── trends.py # Trend analysis and predictions添加新工具
要添加新工具,请执行以下操作:
- 定义工具 在
src/fyta_mcp_server/tools.py:
Tool(
name="my_new_tool",
description="What this tool does",
inputSchema={
"type": "object",
"properties": {
"plant_id": {"type": "number"}
},
"required": ["plant_id"]
}
)- 实现处理程序 在
src/fyta_mcp_server/handlers.py:
async def handle_my_new_tool(fyta_client: FytaClient, arguments: Any):
plant_id = int(arguments["plant_id"])
# Your logic here
return [TextContent(type="text", text=result)]- 注册处理程序 在
src/fyta_mcp_server/server.py:
elif name == "my_new_tool":
return await handle_my_new_tool(fyta_client, arguments)创建实用程序模块
对于复杂的功能,请在中创建一个新模块 utils/:
# src/fyta_mcp_server/utils/my_feature.py
def analyze_something(data: List[Dict]) -> Dict:
"""Analyze data and return insights"""
# Your analysis logic
return {"result": "insights"}然后导入并在handlers.py中使用它:
from .utils.my_feature import analyze_somethingAPI文档
完整的FYTA API文件: https://fyta-io.notion.site/FYTA-Public-API-d2f4c30306f74504924c9a40402a3afd
测试
运行测试连接脚本:
python tests/test_connection.py贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 彻底测试
- 提交拉取请求
学分
- API财年:https://fyta.de/
- 基于Python客户端:https://github.com/dontinelli/fyta_cli
- 家庭助理集成:https://github.com/dontinelli/fyta-custom_component
许可证
MIT许可证-请参阅 许可证 详细信息文件
支持
如有疑问或问题:
- 在GitHub上打开一个问题:https://github.com/schimmmi/fyta-mcp-server/issues
- 查看Discord上的FYTA开发者社区
- 访问https://fyta.de/有关传感器的更多信息
仓库
github:https://github.com/schimmmi/fyta-mcp-server
______________________________________________________________________
与克劳德一起愉快地监测植物! 🌿🤖
