# SmartThings MCP

> SmartThings MCP Server connects your entire smart home or office system directly to your AI agent. You manage devices, read real-time status reports (like temperature or lock status), and trigger complex automations—all through natural conversation. It's your central control panel for every connected piece of hardware.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** smart-home, automation, iot-control, device-monitoring, home-automation

## Description

You're connecting your entire smart home or office setup straight through this server, giving your AI agent total control over every piece of hardware. Forget talking to five different apps; you manage everything from one conversation. This system lets your AI client read real-time status reports and run complex automations across all your connected devices.

When you need to set up the physical structure, you start by knowing what space you're dealing with. You can call `list_locations` to see every main area accessible—things like 'Home' or maybe 'Office Wing A.' If you want granular detail on a specific spot, use `get_location` to pull all the data about that place. Within those locations, you'll find defined rooms; you can run `list_rooms` to see what divisions exist, or if your layout changed and needs updating, you can call `create_room` to add a new structure.

To take stock of everything connected, use the inventory tools. You can list every single piece of hardware—lights, thermostats, locks, whatever it is—by running `list_devices`. If you need deep specs on just one item, like checking the model number or manufacturer for a specific unit ID, `get_device` pulls all that metadata for you. This lets your agent build a full picture of what's actually installed.

Once you know what you got, you gotta check if it works. You don't want to assume the light is off; you need proof. Running `get_device_status` checks the current operational state and all attributes across every component in your location—it tells you if that switch is really toggled off or if the temperature sensor actually reads 72 degrees. If you only care about one specific thing, checking a single unit's status is quick; running `get_device_status` gives you the whole neighborhood report.

The action commands are where things get real. You can force an immediate change to any device by executing a command using `execute_device_command`. This lets your agent toggle switches, dim lights to 30%, or adjust the thermostat without needing a specific routine—it's just raw control. For bigger jobs, you don't want to send fifty commands; instead, use `execute_scene` to run a whole pre-configured automation scene. Think 'Movie Night' or 'Leaving Home'—one call runs multiple devices simultaneously.

For managing the underlying software that makes this stuff smart, your agent handles apps and workflows. You can see what SmartApps are available by calling `list_apps`. If you want to know which ones are actually running on your system, use `list_installed_apps` to see those instances. For advanced customization, you manage event subscriptions using `list_subscriptions`, which is key for building complex, custom triggers for the smart apps.

Finally, if your automation needs deep integration across multiple devices or services, you'll need to know how they connect. You can check the full scope of available SmartApps with `list_apps` and confirm what’s already running with `list_installed_apps`. The tools give you everything from listing every single connected device via `list_devices`, getting specific details on one unit using `get_device`, checking if a room exists with `list_rooms` or creating it with `create_room`, to triggering an instant, complex routine via `execute_scene`. You'll never run out of control options.

## Tools

### list_apps
Retrieves a list of all available SmartApps that can be installed on the system.

### create_room
Adds a new, structured room division into an existing SmartThings location.

### execute_device_command
Sends immediate commands (on/off, set level) to any specific connected device.

### get_device_status
Checks the current operational state and attribute values of all connected components in a location.

### list_devices
Lists every single hardware device currently connected to your account.

### execute_scene
Runs a pre-configured automation scene that controls multiple devices at once.

### get_device
Retrieves detailed metadata for one specific SmartThings device using its identifier.

### get_location
Gets detailed information about a specific geographical or logical area within your SmartThings network.

### list_installed_apps
Shows all instances of SmartApps that are actually installed and running on the system.

### list_locations
Lists every primary geographical area or location accessible by your token (e.g., Home, Office Wing A).

### list_rooms
Retrieves a list of all defined rooms within a specific SmartThings location.

### list_scenes
Lists all the pre-configured, multi-device automation scenes available for execution.

### list_subscriptions
Manages and views event subscriptions for advanced SmartApps workflows.

## Prompt Examples

**Prompt:** 
```
List all my connected SmartThings devices.
```

**Response:** 
```
I've retrieved your devices. You have 3 active devices: 'Living Room Light' (ID: d23...), 'Smart Thermostat' (ID: a45...), and 'Front Door Lock' (ID: e89...). Which one would you like to inspect?
```

**Prompt:** 
```
Turn on the Living Room Light (ID: d23-abc).
```

**Response:** 
```
Executing command... I've successfully sent the 'on' command to the 'Living Room Light' component. The device should now be active.
```

**Prompt:** 
```
What is the current temperature on my Smart Thermostat (ID: a45-xyz)?
```

**Response:** 
```
Checking status... The 'Smart Thermostat' is currently reporting a temperature of 22°C (71.6°F) with the operating mode set to 'Auto'.
```

## Capabilities

### Check device status
Retrieves the current operational state, including attributes like temperature or switch on/off status, for any connected hardware.

### Send direct commands
Forces a specific action on a single device, such as turning it on, off, or setting its brightness level.

### Run automation scenes
Triggers multiple predefined actions (like 'Movie Night') simultaneously using one command call.

### Inventory and organize devices
Lists all connected hardware, locations, or rooms, allowing you to see the full scope of your installed IoT network.

### Manage device subscriptions
Handles event subscriptions for SmartApps, which is key for building advanced, custom automation workflows.

## Use Cases

### Troubleshooting a locked system
A facility manager notices the building temperature seems off. Instead of manually checking multiple dashboard panels, they ask their agent to 'Check the status of all HVAC components in the West Wing.' The agent calls `get_device_status` across multiple devices, quickly identifying that only the main thermostat component is reporting data.

### Setting up a new zone
An owner adds a new entertainment center to their living room. They use the agent's ability to 'Create a dedicated media hub space.' The system calls `create_room` and then lists that new location using `list_rooms`, ensuring all future commands can target the right area.

### Running a complex routine
It's time to leave for the day. Instead of manually setting five different devices, they tell their agent, 'Run the Away Scene.' The server executes `execute_scene`, which simultaneously locks doors, turns off lights, and lowers the thermostat.

### Auditing installed features
A developer needs to know what automation capabilities are available. They use `list_apps` to see all possible SmartApps and then call `list_subscriptions` to verify which event handlers are currently active, ensuring their custom logic is hooked up correctly.

## Benefits

- **Eliminate app switching.** Instead of opening the light app, then the thermostat app, and then the lock app to run a routine, running `execute_scene` handles all those steps with one command. The agent does the heavy lifting for you.
- **Get real-time status checks.** You don't have to guess if something is working. Calling `get_device_status` confirms the current state of every component—battery life, temperature, switch position—before you act.
- **Structure your inventory logically.** Use `list_locations` and `create_room` to map out your entire physical environment within the system. This structure makes it easier for the AI to target commands correctly.
- **Control complex routines easily.** The server allows listing (`list_scenes`) and executing (`execute_scene`) multi-device workflows, meaning you can trigger 'Good Morning' or 'Vacation Mode' with a single prompt.
- **See everything connected.** Use `list_devices` to pull up an exhaustive inventory of every hardware piece on the network. It’s your complete device manifest in one query.

## How It Works

The bottom line is that you never have to open another app; your AI client does everything through one conversational interface.

1. Subscribe to the server and provide your SmartThings Personal Access Token (PAT).
2. Your AI client uses the token to connect to the MCP endpoint.
3. You give a conversational command (e.g., 'Turn off all lights in the kitchen'). The agent translates this into specific tool calls, executes them against the API, and reports the final status.

## Frequently Asked Questions

**How do I list all my smart devices using the SmartThings MCP Server?**
Call `list_devices`. This tool pulls up a complete manifest, giving you IDs and names for every single piece of hardware connected to your account.

**Can I check if a device is actually powered on with get_device_status?**
Yes. `get_device_status` checks the live attribute values, so you can verify things like temperature readings or whether a component's power switch is reported as 'on' or 'off'.

**What should I use to run my automated routines?**
You use `execute_scene`. This tool runs pre-defined, multi-step workflows. If you have a routine like 'Good Night,' it executes that whole sequence in one call.

**Does SmartThings MCP Server let me organize my rooms?**
Yes. You can use `list_locations` to see your main areas, and then use tools like `list_rooms` or `create_room` to structure the physical space for better targeting.

**How do I get detailed metadata about a specific device using the `get_device` tool?**
The `get_device` tool returns comprehensive data beyond just status. It provides model identifiers, hardware specs, and unique attributes necessary for advanced scripting or debugging your environment.

**What is the difference between listing locations and rooms using `list_locations` vs. `list_rooms`?**
`list_locations` gives you the highest-level containers—like 'Home' or 'Office Floor'. You must use `list_rooms` after that to narrow down and see specific room subdivisions within a location.

**How does the `list_subscriptions` tool help with complex automation workflows?**
It manages event subscriptions. Instead of just running a preset scene, you use this tool to listen for specific real-time events (like 'motion detected') and trigger actions based on that live data stream.

**What is required to start using the SmartThings MCP Server after I subscribe?**
You need a SmartThings Personal Access Token (PAT). This token authenticates your agent's connection, giving it secure permission to control and monitor your specific smart home devices.

**Can I check if my lights are on and see the current brightness level?**
Yes. Use the `get_device_status` tool with the specific Device ID. It will return the current state of all components, including switch status and level attributes.

**How do I trigger a 'Movie Night' scene that I already created in the SmartThings app?**
First, use `list_scenes` to find the ID of your 'Movie Night' scene. Then, use the `execute_scene` tool with that ID to trigger all associated actions at once.

**Is it possible to organize my devices into a new room using this server?**
Yes. You can use the `create_room` tool by providing the target Location ID and the desired name for the new room subdivision.