smartthings-mcp
Samsung Smartthings Model Context Protocol Server
Documentation
Lango SmartThings MCP Server
A Model Context Protocol (MCP) server that exposes Samsung SmartThings Public API as
LLM-friendly tools, resources and real-time events.
Features
- Lazy Loading: Tools are discoverable without authentication - only validates API keys when tools are invoked
- Wraps common SmartThings operations as MCP Tools
- Devices: `list_devices`, `get_device`, `get_device_status`, `list_device_capabilities`, `send_device_command`
- Locations & Rooms: `list_locations`, `list_rooms`, `create_room`, `delete_room`
- Scenes & Rules: `list_scenes`, `execute_scene`, `list_rules`
- Hubs: `list_hubs`, `get_hub_health`
- Subscriptions: `list_subscriptions`, `create_subscription`, `delete_subscription`
- Schedules: `list_schedules`, `create_schedule`, `delete_schedule`
- History: `get_device_history`
- Capabilities: `get_capability`
- Exposes device / status / location data as MCP Resources with read-through cache
- Supports all official MCP-Go transports
- Stdio (CLI / local), StreamableHTTP, Server-Sent Events (SSE)
- Periodic poller publishes live device status to SSE clients
- Zero external dependencies apart from `mcp-go` and `zap` logger
Requirements
- Go ≥ 1.23
- A valid SmartThings PAT (Personal Access Token)
Getting a Personal Access Token (PAT)
1. Go to SmartThings Personal Access Tokens.
2. Log in with your Samsung Account.
3. Click Generate new token.
4. Enter a name for your token and select the authorized scopes (e.g., `devices`, `locations`, `scenes`, `rules`, `schedules`).
5. Click Generate token.
6. Copy and save the token immediately (it won't be shown again).
Environment Variables
| Name | Default | Description | |||
|---|---|---|---|---|---|
| `smartThingsToken`, `SMARTTHINGS_TOKEN` | – | Bearer token for SmartThings API. Required for SmartThings operations, but server will start without it for tool discovery | |||
| `stBaseUrl`, `ST_BASE_URL` | `https://api.smartthings.com` | Override for testing / mock servers | |||
| `MCP_LOG_LEVEL` | `info` | `debug` | `info` | `warn` | `error` |
Installation
Installing via Smithery
To install smartthings-mcp for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @langowarny/smartthings-mcp --client claudeManual Installation
git clone https://github.com/langowarny/smartthings-mcp.git
cd smartthings-mcp
go mod downloadRunning
Stdio
SMARTTHINGS_TOKEN=123ab456-xxx... go run ./cmd/server -transport stdioStreamableHTTP
SMARTTHINGS_TOKEN=123ab456-xxx... \
go run ./cmd/server -transport stream -host 0.0.0.0 -port 8081Test request:
curl -X POST http://localhost:8081/mcp/tools/call \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_devices"}}'SSE
SMARTTHINGS_TOKEN=123ab456-xxx... \
go run ./cmd/server -transport sse -host 0.0.0.0 -port 8081
# Open event stream
echo -e 'GET /mcp/sse HTTP/1.1\nHost: localhost:8081\n\n' | nc localhost 8081The server emits `smartthings/device_status` notifications every 30 seconds.
Tool Catalogue
| Tool | Params | Description |
|---|---|---|
| `list_devices` | `location_id?` | List user devices |
| `get_device` | `device_id` | Device metadata |
| `get_device_status` | `device_id` | Live status |
| `list_device_capabilities` | `device_id` | Supported capabilities |
| `send_device_command` | `device_id`, `component`, `capability`, `command`, `arguments?[]` | Issue command |
| `list_locations` | – | List locations |
| `list_rooms` | `location_id` | List rooms in a location |
| `create_room` | `location_id`, `name` | Create a new room |
| `delete_room` | `location_id`, `room_id` | Delete a room |
| `list_scenes` | – | List all scenes |
| `execute_scene` | `scene_id` | Trigger scene |
| `list_rules` | – | List automation rules |
| `list_hubs` | – | List hubs |
| `get_hub_health` | `hub_id` | Get hub health status |
| `list_subscriptions` | `installed_app_id` | List subscriptions |
| `create_subscription` | `installed_app_id`, `device_id`, ... | Subscribe to device events |
| `delete_subscription` | `installed_app_id`, `subscription_id` | Delete subscription |
| `list_schedules` | `installed_app_id` | List schedules |
| `create_schedule` | `installed_app_id`, `name`, `cron` | Create cron schedule |
| `delete_schedule` | `installed_app_id`, `schedule_id` | Delete schedule |
| `get_device_history` | `device_id` | Get recent device events |
| `get_capability` | `capability_id`, `version` | Get capability definition |
Resource Patterns
| URI Template | Description | MIME |
|---|---|---|
| `st://devices/{device_id}` | Device metadata | `application/json` |
| `st://devices/{device_id}/status` | Live status | `application/json` |
| `st://locations/{location_id}` | Location metadata | `application/json` |
Development
go vet ./...
go test ./...
go run ./cmd/server -transport streamLogs are emitted via Uber Zap; adjust `MCP_LOG_LEVEL` for verbosity.
License
MIT © 2025 Lango Warny
Frequently asked questions
What is smartthings-mcp?
smartthings-mcp is Samsung Smartthings Model Context Protocol Server
How do I install smartthings-mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is smartthings-mcp open source?
Yes — it is hosted on GitHub at https://github.com/langowarny/smartthings-mcp and has 4 stars.
Related MCP tools
eBPF-powered network observability for Kubernetes. Indexes L4/L7 traffic with full K8s context, decrypts TLS without keys. Queryable by AI agents via MCP and humans via dashboard.
GOWA - WhatsApp REST API with support for UI, Multi Account, Webhooks, and MCP, and Chatwoot. Built with Golang for efficient memory use.
The missing open-source Kubernetes UI with a built-in MCP server for AI agents. See what's broken, why, and what changed. Issues, Topology, event timeline, Helm, GitOps, live service traffic, and cluster audits - all in one Go binary.
mcp-language-server gives MCP enabled clients access semantic tools like get definition, references, rename, and diagnostics.
The Terraform MCP Server provides seamless integration with Terraform ecosystem, enabling advanced automation and interaction capabilities for Infrastructure as Code (IaC) development.
Run MATLAB® using AI applications with the official MATLAB MCP Server from MathWorks®. This MCP server for MATLAB supports a wide range of coding agents like Claude Code® and Visual Studio® Code.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP