SmartPot-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TRANSPORT | No | Transport used by the server. Set to streamable-http to serve HTTP on port 8002; defaults to stdio. | stdio |
| SMARTPOT_API_URL | Yes | URL of the SmartPot API the MCP server should call (e.g. http://localhost:8091). | |
| MCP_ALLOWED_HOSTS | No | Allowed hosts used for DNS rebinding protection. | |
| SMARTPOT_API_TOKEN | No | SmartPot connection token (spt_…) used in stdio mode to authenticate to SmartPot-API. In HTTP mode the client sends this token per request as an Authorization: Bearer header instead. | |
| MCP_ALLOWED_ORIGINS | No | Allowed origins used for DNS rebinding protection. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_accountA | Nombre y correo de la cuenta de SmartPot a la que pertenece esta conexión. |
| list_cropsA | Lista los cultivos de la cuenta con tipo, forma, salud, estado del dispositivo y última lectura. |
| get_cropA | Devuelve el detalle de un cultivo: lugar, automatización, salud y última lectura. |
| create_cropB | Crea un cultivo. VIRTUAL lo alimenta el simulador; REAL devuelve una sola vez las credenciales MQTT del dispositivo, que el servidor oculta al modelo. |
| update_cropA | Cambia nombre, tipo, forma o lugar del cultivo. Los campos omitidos conservan su valor actual. |
| delete_cropA | Elimina el cultivo con sus lecturas, comandos, actuadores y avisos. No se puede deshacer. |
| set_crop_automationB | Activa o pausa el agente que acciona los actuadores del cultivo según la IA. |
| get_crop_weatherB | Clima actual del lugar del cultivo (requiere que el cultivo tenga ubicación). |
| get_latest_readingC | Última lectura: temperatura, humedad, luz, pH, TDS, presión y humedad del sustrato. |
| get_readings_historyB | Lecturas del cultivo en un rango de fechas, de la más reciente a la más antigua. |
| get_readings_summaryC | Mínimo, promedio y máximo de cada variable en las últimas horas. |
| record_readingC | Registra una medición tomada a mano (al menos una variable). |
| list_actuatorsA | Actuadores del cultivo (bomba, luz UV, ventilador, humidificador, dosificadores) y si están encendidos. |
| send_actuator_commandB | Enciende o apaga un actuador por MQTT. Mueve hardware real en cultivos REAL: confirma antes. |
| send_bulk_commandB | Acciona el mismo tipo de actuador en varios cultivos; devuelve enviados, omitidos y fallidos. |
| list_commandsB | Comandos recientes del cultivo con su estado (PENDING, SENT, EXECUTED, FAILED, EXPIRED) y origen. |
| get_crop_insightsB | Diagnóstico de SmartPot-AI: índice de salud 0-100, conclusiones, acciones sugeridas y pronóstico. |
| get_crop_profilesB | Rangos óptimos recomendados por tipo de cultivo. |
| get_learning_statusB | Estado del aprendizaje continuo de la IA (muestras y versión de modelos). |
| get_overviewB | Resumen de la cuenta: cultivos, salud, dispositivos en línea, comandos y avisos. |
| get_metric_seriesB | Promedios por intervalo de una variable para todos los cultivos (agregados de TimescaleDB). |
| get_fleetC | Comparativa de todos los cultivos de la cuenta. |
| list_notificationsC | Avisos de la cuenta (alertas de la IA, comandos, dispositivos). |
| get_unread_countB | Cantidad de notificaciones sin leer. |
| mark_notification_readC | Marca una notificación como leída. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| agronomic_diagnosis | Evalúa un cultivo con su telemetría, el diagnóstico de la IA y el perfil de la especie. |
| emergency_triage | Guía para atender una alerta crítica (calor, pH fuera de rango, sustrato seco). |
| fleet_daily_summary | Informe breve del estado de todos los cultivos. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| crop_profiles | Rangos óptimos por tipo de cultivo (público). |
| health | Estado de la API y sus dependencias (base, caché, broker, IA, simulador); público. |
TDQS
Scored across 25 tools
Most tools map to a distinct resource+action (crop CRUD, actuators, notifications, AI insights), but the reading cluster — get_latest_reading, get_readings_history, get_readings_summary, get_metric_series — has four similar-sounding retrieval tools whose boundaries (single crop vs all crops, raw vs aggregated) require reading descriptions carefully. Similarly get_crop vs get_overview vs get_fleet can be confused at a glance, though descriptions do disambiguate.
All 25 tools use consistent snake_case verb_noun form with a small predictable verb set (get_/list_/create_/update_/delete_/set_/send_/record_/mark_). Singular/plural nouns align with whether the tool returns one or many resources, reinforcing the pattern.
25 tools is at the heavy end for a single IoT/grow-management server; while the domain is broad (crops, readings, actuators, commands, AI, notifications), several tools could plausibly be folded together (e.g. get_unread_count into list_notifications, get_fleet into get_overview). It is defensible but borderline bloated.
Crop lifecycle (create/get/update/delete), readings (record, latest, history, summary, series), actuators and commands, AI insights/learning, and notifications are all covered, giving a solid end-to-end surface. Minor gaps exist: no way to cancel or retry a PENDING command, no bulk mark-all-read for notifications, and no credential rotation for REAL devices.