SmartThings MCP
Samsung Smartthings Model Context Protocol Server
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
- Devices:
- 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-goandzaplogger
Requirements
- Go ≥ 1.23
- A valid SmartThings PAT (Personal Access Token)
Getting a Personal Access Token (PAT)
- Go to SmartThings Personal Access Tokens.
- Log in with your Samsung Account.
- Click Generate new token.
- Enter a name for your token and select the authorized scopes (e.g.,
devices,locations,scenes,rules,schedules). - Click Generate token.
- 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 |
Installation
Installing via Smithery
To install smartthings-mcp for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @langowarny/smartthings-mcp --client claude
Manual Installation
git clone https://github.com/langowarny/smartthings-mcp.git
cd smartthings-mcp
go mod download
Running
Stdio
SMARTTHINGS_TOKEN=123ab456-xxx... go run ./cmd/server -transport stdio
StreamableHTTP
SMARTTHINGS_TOKEN=123ab456-xxx... \
go run ./cmd/server -transport stream -host 0.0.0.0 -port 8081
Test 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 8081
The 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 stream
Logs are emitted via Uber Zap; adjust MCP_LOG_LEVEL for verbosity.
License
MIT © 2025 Lango Warny
関連サーバー
Time MCP Server
Enables time awareness for large language models.
FinancialData.Net MCP Server
Turn Claude or Cursor into your personal AI Financial Analyst.
Karrito
Manage WhatsApp digital catalogs for LATAM sellers — 30 tools for products, orders, discounts, reviews, customers, shipping, and analytics.
Shioaji MCP Server
Access the Shioaji trading API for financial data and trading operations, requiring a SinoPac Securities account.
ThinkPLC-MCP
Interface with SIEMENS PLC S7-1500/1200 using their JSON-RPC 2.0 API, exposing PLC functionalities as MCP tools for programmatic interaction.
Curve MCP Server
Pool data, swap rates, and liquidity info on Curve Finance.
Universal Image MCP
Universal MCP server for AI image generation supporting AWS Bedrock (Nova Canvas), OpenAI (GPT Image, DALL-E), and Google Gemini (Imagen 4). Generate, transform, and edit images using multiple AI models through a single Model Context Protocol interface.
Firelinks.cc MCP
Create and manage short links for tracking and distributing traffic.
Airplane.Live MCP Server
MCP server that connects to the Airplanes.live API to provide real-time flight and aircraft data for analysis or visualization.
mcp-server-inject-bender
Security through absurdity: transforms SQL injection and XSS attempts into harmless comedy responses using AI-powered humor defense.