🔌 MCP Servers

SmartThings MCP

Control SmartThings devices and scenes across your locations. Get live status and history, and send commands instantly. Automate routines by managing rooms, rules, schedules, and event subscriptions w

❤️ 0
⬇️ 30
👁 1
Share

Description

Lango SmartThings MCP Server

smithery badge

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

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

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs