MCP Domotica Backend
This server provides complete CRUD operations for managing rooms in a smart home system with a maximum capacity of 6 rooms.
Operations:
List all rooms - Retrieve complete room information with device counts by type
Get room details - Query detailed information for a specific room by name, including all associated devices
Add new room - Create rooms using one of five allowed types: comedor (dining room), cocina (kitchen), baño (bathroom), living (living room), or dormitorio (bedroom)
Modify room name - Rename existing rooms, which automatically updates all associated devices
Delete room - Remove rooms from the system (only if empty with no devices)
Business Rules:
Maximum of 6 rooms in the system
Only predefined room types are accepted
Automatic sequential numbering for duplicate names (e.g., "dormitorio 2")
Rooms must be empty before deletion
Changes are automatically persisted to JSON storage
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Domotica Backendturn on the lights in the kitchen"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🏠 Sistema Domótico MCP
Sistema de gestión domótica basado en el Model Context Protocol (MCP) que permite controlar dispositivos inteligentes en diferentes habitaciones mediante servidores especializados. Implementado como una arquitectura de microservicios MCP para gestión eficiente de espacios residenciales y sus dispositivos asociados.
📋 Descripción General
Este proyecto implementa un sistema domótico completo utilizando el Model Context Protocol (MCP) con dos servidores independientes que operan de forma coordinada:
mcp_rooms: Servidor dedicado a la gestión completa de habitaciones (creación, modificación, eliminación y consulta)mcp_devices: Servidor especializado en el control de dispositivos domóticos (luces, termostatos, ventiladores y hornos)
Capacidades del Sistema
El sistema está diseñado para gestionar hasta 6 habitaciones con un máximo de 10 dispositivos por habitación, aplicando reglas de negocio específicas según el tipo de espacio y dispositivo. La persistencia de datos se maneja mediante archivos JSON con sincronización automática entre procesos.
Related MCP server: sinum-mcp
✨ Características Principales
Dispositivos Soportados
El sistema implementa cuatro tipos de dispositivos inteligentes, cada uno con sus propias capacidades de control:
💡 Luces: Control binario de encendido/apagado
🌡️ Termostatos: Regulación de temperatura en rango de 16°C a 32°C
🌀 Ventiladores: Control de velocidad en 6 niveles (0 = apagado, 1-5 = velocidades)
🔥 Hornos: Gestión de temperatura (160°C - 240°C), temporizador (0-240 minutos) y estado activo/inactivo
Tipos de Habitaciones
El sistema reconoce cinco categorías de espacios residenciales:
🍽️ Comedor: Admite todos los tipos de dispositivos
🍳 Cocina: Admite todos los tipos de dispositivos (único espacio donde se permite horno)
🚿 Baño: Restricción de seguridad - únicamente luces
🛋️ Living: Admite todos los dispositivos excepto horno
🛏️ Dormitorio: Admite todos los dispositivos excepto horno
Reglas de Negocio
El sistema implementa las siguientes restricciones para garantizar coherencia y seguridad:
Límite máximo de 6 habitaciones en el sistema
Límite máximo de 10 dispositivos por habitación
Restricción de ubicación: hornos únicamente en cocina
Restricción de dispositivos: baños limitados a iluminación
Asignación automática de nombres: numeración incremental para habitaciones duplicadas (ej: "dormitorio", "dormitorio 2")
🚀 Instalación y Configuración
Requisitos del Sistema
Python: Versión 3.13 o superior
uv: Gestor de paquetes y entornos virtuales para Python (Astral uv)
Instalación de uv
El proyecto utiliza uv como gestor de dependencias por su velocidad y eficiencia. Si aún no lo tiene instalado:
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | shConfiguración del Proyecto
1. Clonar el repositorio:
git clone https://github.com/CrisDeCrisis/mcp-domotica-backend.git
cd mcp-domotica-backend2. Sincronizar dependencias:
uv syncNota: Este comando lee automáticamente el archivo
pyproject.toml, crea el entorno virtual.venve instala todas las dependencias necesarias. No es necesario activar manualmente el entorno virtual al utilizaruv run.
🎮 Ejecución de Servidores
Iniciar Servidores MCP
Cada servidor puede ejecutarse de forma independiente utilizando uv run:
Servidor de Gestión de Habitaciones:
uv run servers/mcp_rooms.pyServidor de Gestión de Dispositivos:
uv run servers/mcp_devices.pyNota: El comando
uv runejecuta automáticamente los scripts en el entorno virtual del proyecto, eliminando la necesidad de activación manual del entorno.
📚 Arquitectura del Proyecto
Estructura de Directorios
backend/
├── servers/
│ ├── mcp_rooms.py # Servidor MCP para gestión de habitaciones
│ └── mcp_devices.py # Servidor MCP para gestión de dispositivos
├── models.py # Definición de modelos de datos (Device, Room)
├── storage.py # Capa de persistencia y almacenamiento
├── domotica_data.json # Base de datos JSON para persistencia
├── pyproject.toml # Configuración de proyecto y dependencias
└── README.md # Documentación del proyectoComponentes del Sistema
Servidores MCP: Implementan los endpoints del Model Context Protocol para cada dominio (habitaciones y dispositivos)
Modelos: Clases Python que definen la estructura de datos de habitaciones y dispositivos
Capa de Almacenamiento: Gestiona la persistencia en JSON con sincronización automática
Archivo de Datos: Almacenamiento persistente en formato JSON con estado del sistema completo
🔌 API de Herramientas MCP
Servidor de Habitaciones (mcp_rooms)
Proporciona operaciones CRUD completas para la gestión de espacios:
Herramienta | Descripción |
| Retorna lista completa de habitaciones |
| Obtiene información detallada de una habitación |
| Crea una nueva habitación del tipo especificado |
| Actualiza el nombre de una habitación existente |
| Elimina una habitación (debe estar vacía) |
Servidor de Dispositivos (mcp_devices)
Proporciona control granular sobre dispositivos inteligentes:
Operaciones Generales
consultar_dispositivos(room_name?)- Obtiene lista de dispositivos (opcional: filtrar por habitación)consultar_dispositivo(device_id)- Obtiene información detallada de un dispositivo específicoagregar_dispositivo(room_name, device_type, initial_state?)- Crea un nuevo dispositivomodificar_dispositivo(device_id, room?, state?)- Actualiza ubicación o estado de un dispositivoeliminar_dispositivo(device_id)- Elimina un dispositivo del sistema
Control de Iluminación
alternar_luz(device_id)- Cambia el estado actual (encendido ↔ apagado)encender_luz(device_id)- Activa la iluminaciónapagar_luz(device_id)- Desactiva la iluminación
Control de Climatización (Termostatos)
ajustar_termostato(device_id, temperature)- Establece temperatura específica (16°C - 32°C)subir_temperatura(device_id, grados?)- Incrementa temperatura (predeterminado: 1°C)bajar_temperatura(device_id, grados?)- Reduce temperatura (predeterminado: 1°C)
Control de Ventilación
ajustar_ventilador(device_id, speed)- Establece velocidad (0: apagado, 1-5: velocidades)apagar_ventilador(device_id)- Detiene el ventilador (velocidad 0)
Control de Hornos
ajustar_horno(device_id, temperature?, timer?, active?)- Configuración completa del hornoencender_horno(device_id)- Activa el horno con temperatura configuradaapagar_horno(device_id)- Desactiva el horno completamenteconfigurar_temporizador_horno(device_id, minutos)- Establece temporizador (0-240 minutos)
📦 Dependencias del Proyecto
El proyecto utiliza las siguientes tecnologías y bibliotecas, definidas en pyproject.toml:
Dependencias Principales
fastapi- Framework web moderno y de alto rendimiento para construcción de APIsuvicorn- Servidor ASGI de alto rendimiento para aplicaciones Python asíncronasmcp[cli]- Implementación del Model Context Protocol con herramientas CLIlangchain- Framework para desarrollo de aplicaciones con modelos de lenguajelangchain-mcp-adapters- Adaptadores de integración entre LangChain y MCPlangchain-ollama- Integración de LangChain con modelos Ollama localeshttpx- Cliente HTTP asíncrono de próxima generaciónpython-dotenv- Gestión de variables de entorno desde archivos .env
💾 Sistema de Persistencia
Mecanismo de Almacenamiento
El sistema implementa persistencia automática mediante archivo JSON (domotica_data.json) con las siguientes características:
Guardado Automático: Cada modificación del estado se persiste inmediatamente
Carga al Inicio: El sistema recupera el estado previo al iniciar los servidores
Estado Inicial: Si no existe archivo de datos, se crea una configuración predeterminada (1 living con 1 luz y 1 termostato)
Sincronización Multi-proceso: La función
reload()permite sincronizar el estado entre múltiples instancias
Formato de Datos
El archivo JSON mantiene un registro estructurado de:
Colección completa de habitaciones con sus metadatos
Inventario de dispositivos con sus configuraciones y estados actuales
Relaciones entre habitaciones y dispositivos asignados
👨💻 Desarrolladores
🎓 Contexto Académico
Proyecto: Trabajo Práctico Integrador - Sistema Domótico con MCP
Asignatura: Modelos de Aplicación de la Inteligencia Artificial
Docentes:
Acosta Gabriel
Flavian Dante
Institución: Instituto Politécnico Formosa
Programa Académico: Tecnicatura Superior en Desarrollo de Software Multiplataforma
Available Tools
5 toolsagregar_habitacionA
Crea una nueva habitación en el sistema.
Args: room_type: tipo de habitación (comedor, cocina, baño, living, dormitorio)
Returns: Confirmación de creación con el nombre generado de la habitación.
Restricciones: - Máximo 6 habitaciones en el sistema - Solo tipos permitidos: comedor, cocina, baño, living, dormitorio - El sistema numera automáticamente (ej: si ya existe "dormitorio", crea "dormitorio 2")
| Name | Required | Description | Default |
|---|---|---|---|
| room_type | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it creates a new room, enforces a maximum of 6 rooms, restricts to specific room types, and automatically numbers rooms (e.g., 'dormitorio 2'). It also mentions the return confirmation with generated name. This covers mutation effects, constraints, and output behavior well for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns, Restricciones) and front-loaded purpose. Each sentence adds value: the first states the action, and subsequent sections explain parameters, output, and constraints without redundancy. It could be slightly more concise by integrating sections, but overall it's efficient and organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (creation with constraints), no annotations, no output schema, and low schema coverage, the description does a good job of providing context. It covers purpose, parameters, returns, and behavioral restrictions. However, it lacks details on error conditions (e.g., what happens if max rooms exceeded) or system interactions, leaving minor gaps for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, so the description must compensate. It adds significant meaning: it explains that 'room_type' is the type of room, lists allowed values (comedor, cocina, baño, living, dormitorio), and implies it's required for creation. This provides clear semantics beyond the bare schema, though it doesn't detail format or validation beyond the list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Crea una nueva habitación en el sistema' (Creates a new room in the system), which is a specific verb+resource combination. It distinguishes from siblings like consultar_habitacion (query), eliminar_habitacion (delete), and modificar_habitacion (modify) by focusing on creation. However, it doesn't explicitly differentiate from other potential creation tools beyond the room context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the creation purpose and lists restrictions like maximum 6 rooms and allowed types, which provide some context for when to use it. However, it doesn't explicitly state when to use this tool versus alternatives (e.g., modificar_habitacion for updates) or mention prerequisites like system state. The guidelines are present but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_habitacionB
Obtiene información detallada de una habitación específica.
Args: room_name: nombre de la habitación
Returns: Información completa de la habitación incluyendo todos sus dispositivos.
| Name | Required | Description | Default |
|---|---|---|---|
| room_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states this is a read operation ('obtiene información') and mentions the return includes 'todos sus dispositivos' (all its devices), which adds useful context about what information is returned. However, it doesn't disclose important behavioral traits like authentication needs, rate limits, error conditions, or whether this is a real-time query versus cached data. For a read tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and concise: one sentence stating the purpose, followed by clearly labeled Args and Returns sections. Every sentence earns its place - the purpose statement is essential, the Args explains the parameter, and the Returns clarifies what information is included. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single parameter read operation) with no annotations and no output schema, the description is minimally adequate. It explains the purpose, parameter, and return content, but doesn't provide enough context about the tool's behavior, error handling, or relationship to sibling tools. The Returns section mentions 'información completa' but doesn't specify the format or structure of the returned data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly documents the single parameter 'room_name' in the Args section, providing semantic meaning ('nombre de la habitación' - name of the room). Since schema description coverage is 0% (the schema has no descriptions), the description fully compensates by explaining what this parameter represents. With only one parameter clearly documented, this is above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Obtiene información detallada de una habitación específica' (Gets detailed information of a specific room). It specifies the verb (obtiene/gets) and resource (habitación/room), but doesn't explicitly distinguish it from its sibling 'consultar_habitaciones' (which likely lists multiple rooms). The purpose is clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling tools (agregar_habitacion, consultar_habitaciones, eliminar_habitacion, modificar_habitacion) or explain when this specific room query is appropriate versus listing all rooms or modifying rooms. There's no context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_habitacionesB
Obtiene la lista completa de habitaciones con su información.
Returns: Lista de habitaciones con nombre y cantidad de dispositivos por tipo.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves a list but doesn't mention whether it's read-only, if it requires specific permissions, or if there are rate limits. The 'Returns' section adds some context about output format, but overall behavioral traits are underspecified for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with two sentences: one stating the purpose and one detailing the return format. It's front-loaded with the main action. There's no wasted text, though it could be slightly more structured with bullet points for the return details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, output schema exists), the description is minimally adequate. It explains what the tool does and the return format, but lacks context on usage versus siblings and behavioral details like safety or permissions. With no annotations, it should do more to compensate, but the output schema reduces the burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to explain parameters, so it appropriately focuses on output. The 'Returns' section adds semantic value by specifying the output includes room names and device counts by type, which is helpful beyond what the output schema might provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Obtiene la lista completa de habitaciones con su información' (Gets the complete list of rooms with their information). It specifies the verb 'obtiene' (gets) and the resource 'habitaciones' (rooms). However, it doesn't explicitly differentiate from its sibling 'consultar_habitacion' (consult room), which likely retrieves a single room rather than the complete list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling tools like 'consultar_habitacion' for single-room queries or 'agregar_habitacion' for adding rooms. There's no context about prerequisites, such as authentication or system state requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eliminar_habitacionA
Elimina una habitación del sistema.
Args: room_name: nombre de la habitación a eliminar
Returns: Confirmación de eliminación.
Restricciones: - La habitación debe estar vacía (sin dispositivos) - Primero deben eliminarse todos los dispositivos de la habitación
| Name | Required | Description | Default |
|---|---|---|---|
| room_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates this is a destructive operation ('Elimina') and specifies important constraints about room emptiness. However, it doesn't mention authentication requirements, potential side effects beyond deletion confirmation, error conditions, or rate limits. The description adds value beyond what structured fields would provide but doesn't fully compensate for the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns, Restricciones) and front-loaded with the core purpose. Every sentence earns its place: the opening statement defines the action, the Args section explains the parameter, Returns indicates the outcome, and Restricciones provides crucial usage constraints. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, the description does well by specifying the action, parameter meaning, return confirmation, and important constraints. It covers the essential context needed to understand this tool's purpose and limitations. The main gap is the lack of detailed behavioral information about authentication, error handling, or what the confirmation actually contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and only one parameter, the description provides essential semantic context: 'room_name' is 'nombre de la habitación a eliminar' (name of the room to delete). This clearly explains what the parameter represents. While it doesn't specify format constraints or examples, it successfully compensates for the complete lack of schema documentation for this single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Elimina' - deletes) and the resource ('una habitación del sistema'), making the purpose immediately understandable. It distinguishes from siblings like 'agregar_habitacion' (add), 'consultar_habitacion' (query), and 'modificar_habitacion' (modify) by specifying deletion rather than creation, retrieval, or updating. However, it doesn't explicitly contrast with these alternatives in the description text itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Restricciones' section provides clear contextual guidance on when to use this tool: only when the room is empty (without devices) and after all devices have been removed first. This establishes important prerequisites for successful invocation. However, it doesn't explicitly mention when NOT to use it or name specific alternative tools for related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modificar_habitacionB
Modifica el nombre de una habitación existente. Actualiza automáticamente todos los dispositivos asociados.
Args: old_name: nombre actual de la habitación new_name: nuevo nombre para la habitación
Returns: Confirmación con ambos nombres (antiguo y nuevo).
| Name | Required | Description | Default |
|---|---|---|---|
| old_name | Yes | ||
| new_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool modifies an existing room's name and automatically updates associated devices, which is useful behavioral context. However, it doesn't mention permissions needed, whether the operation is reversible, error conditions (e.g., if old_name doesn't exist or new_name conflicts), or rate limits. The description adds value but leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a clear purpose statement, followed by a behavioral note (automatic device updates), then separate Args and Returns sections. Every sentence adds value, with no redundant or vague language. It's appropriately sized for a simple update tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description does a decent job: it explains the tool's purpose, parameters, and return confirmation. However, for a mutation tool, it lacks details on permissions, error handling, and the format of the return confirmation. It's minimally viable but has clear gaps in behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly documents both parameters (old_name, new_name) with clear semantics in the Args section, despite 0% schema description coverage. It explains what each parameter represents, compensating fully for the schema's lack of descriptions. Since there are only 2 parameters and both are well-explained, this earns a high score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Modifica el nombre de una habitación existente' (Modifies the name of an existing room). It specifies the verb (modify/update) and resource (room name), but doesn't explicitly differentiate from sibling tools like 'agregar_habitacion' (add room) or 'eliminar_habitacion' (delete room) beyond the different action verbs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., room must exist), exclusions, or compare it to sibling tools like 'consultar_habitacion' (query room) or 'eliminar_habitacion' (delete room). The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v1.0.0- Changed
agregar_habitacion1 field changed- added
Input schema / titleAdded value: +"agregar_habitacionArguments"
- Changed
consultar_habitacion1 field changed- added
Input schema / titleAdded value: +"consultar_habitacionArguments"
- Changed
consultar_habitaciones1 field changed- added
Input schema / titleAdded value: +"consultar_habitacionesArguments"
- Changed
eliminar_habitacion1 field changed- added
Input schema / titleAdded value: +"eliminar_habitacionArguments"
- Changed
modificar_habitacion1 field changed- added
Input schema / titleAdded value: +"modificar_habitacionArguments"
5 tool updates
- First observed
agregar_habitacion - First observed
consultar_habitacion - First observed
consultar_habitaciones - First observed
eliminar_habitacion - First observed
modificar_habitacion
TDQS
Each tool has a clearly distinct purpose with no overlap: agregar_habitacion (create), consultar_habitacion (get one), consultar_habitaciones (list all), eliminar_habitacion (delete), and modificar_habitacion (update). The descriptions reinforce these distinct roles, making tool selection unambiguous.
All tool names follow a consistent Spanish verb_noun pattern (e.g., agregar_habitacion, consultar_habitacion, eliminar_habitacion, modificar_habitacion). The naming is uniform and predictable, with no deviations in style or convention.
With 5 tools, this server is well-scoped for managing rooms in a home automation system. Each tool serves a specific CRUD operation (create, read, update, delete, and list), making the count appropriate and efficient for the domain without being too sparse or bloated.
The tool set provides complete CRUD coverage for room management: create (agregar_habitacion), read (consultar_habitacion and consultar_habitaciones), update (modificar_habitacion), and delete (eliminar_habitacion). There are no obvious gaps, and the tools support a full lifecycle for rooms within the system's constraints.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
MCP Server for an Agent Task Marketplace
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables control and monitoring of Home Assistant smart home devices through MCP protocol. Automatically manages authentication tokens and provides simplified tools for device discovery, switch control, and light brightness adjustment.MIT
- FlicenseAqualityDmaintenanceMCP server for Sinum smarthome system, enabling device and scene management, and light toggling via natural language.4-
- AlicenseBqualityAmaintenanceEnables control of Matter smart-home devices via REST and MCP APIs, supporting lights, sensors, and AC units with federation capabilities.23MIT

elvatis-mcpofficial
AlicenseAqualityAmaintenanceMCP server for OpenClaw that enables AI clients to control smart home devices, manage memory and cron jobs, and orchestrate multiple AI sub-agents.3752Apache 2.0
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MCP-Domotica/mcp-domotica-backend'
If you have feedback or need assistance with the MCP directory API, please join our Discord server