内容
# FYTA MCP 服务器 🌱
FYTA 植物传感器数据的模型上下文协议(MCP)服务器。通过 Claude 直接植物数据!
##?
FYTA 是一个传感器系统,可以测量土壤温度、光照和。该 MCP 服务器使 Claude访问这些数据,并帮助植物护理。
##### 基本植物数据
🌿 **获取所有植物**:查看所有植物的完整,包括传感器数据
- 🔍 **植物详情**:查看单个植物的详细信息
- 📊 **植物测量**:查看历史传感器数据和测量值
- ⚠️ **需要关注的植物**:自动检测需要护理的植物
- 🏡 **花园概览**:查看您的花园和植物的组织视图
### 高级分析工具
- 🔬植物诊断**:使用评估和传感器能力智能健康分析
📈 **趋势分析**:跟踪湿度、温度、营养物质和光照随时间的变化
- 📊 **统计分析计算平均值、最小值、最大值、稳定性得分和异常检测
- ☀️ **DLI(每日光积分)分析**:计算每日光照暴露和季节模式
- 🌡️ **智能阈值评估**:使用实际阈值修复 FYTA 的不一致状态代码
- 💧 **智能施肥**:基于 EC 的施肥建议,趋势预测
### 上下文和护理跟踪
- 📝 **植物上下文管理**:存储基质类型、容器类型和生长阶段
- 🗓️ **护理动作日志**:跟踪手动浇水、施肥和换盆
- 📖 **护理历史分析**:分析护理动作的有效性
- 🔔 **事件检测**:自动检测植物状况的显著变化
### 中心和设备监控
- 🔌 **中心状态监控**:跟踪所有 FYTA 中心(在线/离线、固件版本、连接性)
- 📡 **设备健康**:监控传感器、电池状态和最后通信时间戳
- ⚠️ **连接警报**:检测中心连接丢失和传感器停止报告
- 🔍 **原始 API 访问**:完全访问未过滤的 FYTA API 数据进行调试
### 传感器智能
- 🎯 **传感器能力检测**:自动检测传感器类型(Beam 2.0、Beam、Legacy)
- 💡 **光传感器感知**:在光数据不可用时显示适当警告
- 🔋 **电池监控**:跟踪传感器电池状态
### 要求
3.10版本(或 Docker)
具有植物的 FYTA 账户
- Claude (或其他兼容 MCP 的
### 使用 Docker 安装(推荐)
1. **安装 Docker 和 Docker Compose**
确保 Docker 已在您的系统上安装。
2. **克隆仓库**
```bash
cd ~/fyta-mcp-server
```
3. **设置环境变量**
创建 `.env` 文件:
```bash
cp .env.example .env
```
并输入您的 FYTA 凭证:
```env
FYTA_EMAIL=your-email@example.com
FYTA_PASSWORD=your-password
```
4. **构建和启动容器**
```bash
docker-compose up -d
```
**容器命令:**
```bash
# 停止容器
docker-compose down
# 显示日志
docker-compose logs -f
# 重建容器
docker-compose build
# 重启容器
docker-compose restart
```
### 无 Docker 安装
1. **克隆仓库或下载文件**
```bash
cd ~/fyta-mcp-server
```
2. **创建虚拟环境(可选但推荐)**
```bash
python3 -m venv .venv
source .venv/bin/activate # 在 Windows 上:.venv\Scripts\activate
```
3. **安装依赖项**
```bash
pip install -r requirements.txt
pip install -e .
```
4. **设置环境变量**
创建 `.env` 文件:
```bash
cp .env.example .env
```
并输入您的 FYTA 凭证:
```env
FYTA_EMAIL=your-email@example.com
FYTA_PASSWORD=your-password
```
**重要**:`.env` 文件绝不能提交到 Git!
## Claude 桌面配置
将以下内容添加到您的 Claude 桌面配置中:
**macOS**:`~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**:`%APPDATA%\Claude\claude_desktop_config.json`
### 使用 Docker(推荐)
```json
{
"mcpServers": {
"fyta": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--env-file",
"/absolute/path/to/fyta-mcp-server/.env",
ta-mcp-server"
}
}
或使用 docker-compose:
```json
{
cpServers": {
"fyta": {
": "docker-compose",
"args": [
"-f",
"/absolute/path/to/fyta-mcp-server/docker-compose.yml",
"run",
"--rm",
"fyta-mcp-server"
]
}
}
}
```
### 无 Docker(直接使用 Python)
```json
{
"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"
}
}
}
}
```
或使用 uv:
```json
{
"mcpServers": {
"fyta": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/fyta-mcp-server",
"run",
"python",
"-m",
"fyta_mcp_server"
],
": {
"FY": "your-email",
"FYTA_PASSWORD": "your-password"
}
}
## 使用
重启 Claude 桌面后,以下工具可用:
### 基本植物数据
#### 获取所有植物
```
显示我的所有植物
```
#### 植物详情
```
显示 ID 为 123 的植物详情
```
#### 历史测量
```
显示植物 123 过去一周的测量数据
```
#### 需要关注的植物
```
哪些植物现在需要护理?
```
#### 花园概览
```
给我一个花园的概览
```
### 高级分析
#### 智能诊断
```
诊断植物 123 并给我详细的建议
```
返回综合健康分析,包括:
- 智能阈值评估(修复 FYTA 的不一致状态代码)
- 传感器能力检测(显示光传感器是否可用)
- 基于 EC 的智能施肥建议
- 基于数据质量的置信度评分
#### 趋势分析
```
显示植物 123 过去一个月的湿度趋势和营养趋势
```
跟踪随时间变化的方向、百分比变化和预测。
#### 统计分析
```
给我植物 123 的所有指标的统计数据
```
提供平均值、最小值、最大值、标准得分和异常检测。
#### DLI 分析
```
计算植物 123 的每日光积分
```
仅适用于具有光传感器的传感器(FYTA Beam 2.0)。提供:
- 每日光照暴露,单位为 mol/m²/天
- 针对每种植物的优化 DLI 建议
- 生长灯建议
- 季节预测
### 上下文管理 设置植物上下文
```
设置植物 123 的上下文:有机土壤,陶土盆,目前处于生长期
```
存储 FYTA 不知道的重要信息:
- **基质**:矿质、有机、lechuza_pon、水培、半水培
- **容器**:lechuza、self_watering、陶土、塑料、陶瓷
- **生长阶段**:幼苗、生长期、开花、结果、休眠
#### 获取植物上下文
```
我有哪些关于植物 123 的上下文信息?
```
返回存储的上下文和上下文相关的建议。
### 护理跟踪
#### 记录护理动作
```
记录今天我给植物 123 浇了 500ml 水
```
跟踪 FYTA 不知道的手动护理动作:
- 浇水(有量)
- 施肥(有产品和量)
- 换盆(有基质和盆大小)
- 其他自定义动作
#### 获取护理历史
```
显示植物 123 过去 30 天的护理历史
```
查看过去的护理动作和有效性分析。
### 事件检测和监控
**注意**:MCP 是一个请求-响应协议 - 它无法推送通知。对于主动监控,您需要定期询问 Claude 或与 n8n Assistant 等自动化系统集成。请参阅 [examples/](examples/) 获取集成指南。
#### 获取植物事件
```
我的植物有问题吗?
```
自动检测(按需):
- 🔇 **传感器沉默**:传感器超过 90 分钟未报告
- 🔋 **低电池**:电池电量低于 20%
- 💧 **关键湿度**:需要立即浇水
- 🌡️ **温度极端**:热应力风险
- 📊 **状态变化**:任何参数从最佳状态更改
- 📡 **WiFi 断开**:连接问题
返回 webhook-ready JSON,包含严重性、优先级和可行的建议。
**实际使用**:每天询问 Claude “我的植物有问题吗?”或与 cron/n8n 集成进行自动化。
### 中心和设备监控
#### 获取所有中心
```
显示我的 FYTA 中心
```
列出所有中心,包括:
- 在线/离线状态
- 固件版本
- 连接的植物和传感器
- 最后看到的时间戳
- 连接健康
#### 获取中心详情
```
显示中心 E8:06:90:C4:B7:EE 的详情
```
包括所有连接设备的详细中心信息。
#### 获取原始 API 数据
```
显示原始 FYTA API 响应
```
访问完整的未过滤 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 Beam 2.0 | ✅ | 温度、湿度、营养物质、光照 |
| 3 | FYTA Beam | ❌ | 温度、湿度、营养物质 |
像 `get_plant_dli_analysis` 这样的工具会在您的传感器不支持光照测量时自动警告您。
### 字段名称
FYTA API 在测量数据中使用特定的字段名称:
- `soil_moisture`(不是 `moisture`)
- `soil_fertility`(不是 `salinity` 或 `nutrients`)
- `date_utc`(格式:“YYYY-MM-DD HH:MM:SS”)
- `temperature` 和 `light`(按预期)
### 智能功能
#### 智能阈值评估
FYTA 的状态代码有时与实际阈值相矛盾。例如,19°C 的温度可能被标记为“高”,尽管最佳范围是 5-25°C。`diagnose_plant` 工具通过根据实际阈值评估值来解决这个问题。
#### 基于 EC 的施肥
FYTA 的施肥预测是通用且基于时间的(“190 天后施肥”)。该服务器提供基于 EC(电导率)的建议:
- **EC 状态**:临界低(<0.3)、低(0.3-0.6)、最佳(0.6-1.2)、高(>1.2)
- **基质特定阈值**:不同基质的最佳范围不同,有机、矿质、PON 和水培
- **趋势:线性回归预测 EC 何时达到临界水平
- **动作时机**:根据当前 EC 和立即、很快或#### 盐分
服务器使用 **0.2-0 mS/cm最佳盐分范围较低,夏季较高当 FYTA 将冬季阈值设置为=0 时,服务器会应用这些默认值以正确状态。
#### EC 处理
EC 表示 **土壤中**,被评估为“低”施肥。
当 FYTA 设置 `soil_fertomaly: true`- **EC=异常标志**传感器可能与土壤接触不良,但 EC=0 仍指示无营养物质 **EC≠0标志** → 真故障(不可靠的读数)尊重 FYTA 的异常标志,但将 EC=视为有效的测量值,指示营养物质缺乏。
## 故障排除
### 服务器无法启动
1.变量是否设置2. 测试身份
```bash
cd /path/to/fyta-mcp-server
source .venv/bin/activate
python tests/test_connection.py
```
### 无数据可用
- 确保您使用的是 FYTA 中心或移动应用程序作为网关
- FYTA Beam 传感器仅发送需要服务器处理的原始数据
FYTA 应用程序中检查您的传感器是否已连接
##### 项目结构
ta-mcp-server/
├── src/fyta_mcp_server/
│ init__.py
│ ├── server.py # MCP 服务器设置
│ ├── client.py TA API 客户端
│ ├── tools # 工具定义 ├── handlers.py 工具处理程序实现
│ └──│ ├── care # 护理跟踪和分析
│ ├── dli.py # 每日光积分计算
│ ├── events.py # 事件检测
│ ├── fertilization.py # 基于 EC 的施肥逻辑
│ ├── plant_context.py # 上下文存储和建议
│ ├── sensor_info.py # 传感器能力检测
│ ├── statistics.py # 统计分析
│ ├── thresholds.py # 智能阈值评估
│ └── trends.py # 趋势分析和预测
```
### 添加新工具
要添加新工具:
1. **在 `src/fyta_mcp_server/tools.py` 中定义工具**:
```python
Tool(
name="my_new_tool",
description="What this tool does",
inputSchema={
"type": "object",
"properties": {
"plant_id": {"type": "number"}
},
"required": ["plant_id"]
}
)
```
2. **在 `src/fyta_mcp_server/handlers.py` 中实现处理程序**:
```python
async def handle_my_new_tool(fyta_client: FytaClient, arguments: Any):
plant_id = int(arguments["plant_id"])
# 您的逻辑在这里
return [TextContent(type="text", text=result)]
```
3. **在 `src/fyta_mcp_server/server.py` 中注册处理程序**:
```python
elif name == "my_new_tool":
return await handle_my_new_tool(fyta_client, arguments)
```
### 创建实用模块
对于复杂的功能,请在 `utils/` 中创建一个新模块:
```python
# src/fyta_mcp_server/utils/my_feature.py
def analyze_something(data: List[Dict]) -> Dict:
"""分析数据并返回洞察"""
# 您的分析逻辑
return {"result": "insights"}
```
然后在 handlers.py 中导入和使用它:
```python
from .utils.my_feature import analyze_something
```
### API 文档
完整的 FYTA API 文档:
https://fyta-io.notion.site/FYTA-Public-API-d2f4c30306f74504924c9a40402a3afd
### 测试
运行测试连接脚本:
```bash
python tests/test_connection.py
```
### 贡献
欢迎贡献!请:
1. 分叉仓库
2. 创建一个功能分支
3. 进行更改
4. 彻底测试
5. 提交拉取请求
## 致谢
- FYTAhttps://fyta.de/
- 基于 Python:https://github.com/dontinelli/f
- Home Assistant 集成:https://github.com/dontinelli/fyta-custom_component
MIT 许可证 - 请参阅](LICENSE) 文件
## 支持
疑问或问题:
- 在 GitHub 上打开问题:https://github.com/schimmmi/fyta-mcp-server/issues
- 加入 Discord 上的 FYTA 开发者社区
- 访问 https://fyta.de/ 获取更多关于传感器的信息
## 仓库
GitHub:https://github.comimmmi/fyta-mcp-server
---
愉快地监测植物! 🌿## 维护者
Schimmi —schimmilab欢迎提出问题和拉取请求。