Provides tools for controlling Yale smart locks through the Seam API, including lock/unlock operations, status monitoring, and access code management
Seam MCP Server
A Model Context Protocol (MCP) server for controlling smart locks via the Seam API.
Features
This MCP server provides comprehensive tools for managing smart locks and access codes:
Lock Control
list_locks
- List all smart locks connected to your Seam accountget_lock
- Get detailed information about a specific locklock_door
- Lock a specific doorunlock_door
- Unlock a specific doorget_lock_status
- Get the current lock status with battery level and online status
Access Code Management
create_access_code
- Create an access code on a single lock with optional time limitscreate_access_code_on_multiple_locks
- Create the same code on multiple locks (with location filtering)list_access_codes
- List all access codes, optionally filtered by deviceupdate_access_code
- Update an existing access codedelete_access_code
- Delete an access code
Prerequisites
A Seam account - Sign up at https://console.seam.co/
A Seam API key - Generate one from your Seam console
At least one smart lock connected to your Seam account
Installation
Using with Smithery
Install via Smithery:
Configure your Seam API key when prompted
Manual Installation (for development)
Clone this repository:
Install dependencies:
The build will run automatically after installation.
Usage
With Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
If installed via npm:
Or using npx (after publishing):
With Smithery
After installation via Smithery, configure your API key in the Smithery dashboard. The server will be automatically available to Claude and other MCP clients.
Development
Run the development server with live reload:
Build for production:
Build for both stdio and HTTP transports:
Example Usage
Once configured, you can ask Claude to:
Lock Control
"List all my smart locks"
"Unlock the front door"
"What's the status of my garage lock?"
"Lock the back door"
"Show me the battery level of all my locks"
Access Code Management
"Create an access code 1234 named 'Guest Code' on all my locks in Seattle"
"Create a temporary access code for my cleaner from January 1st to January 15th"
"List all access codes on my front door"
"Delete the access code named 'Old Guest Code'"
"Create access code 5678 named 'Airbnb Guest' that works from next Monday at 3pm to next Friday at 11am"
Configuration
The server requires a Seam API key. Get yours from the Seam Console.
When using with Smithery, the API key is securely stored and managed through the Smithery platform.
Supported Lock Brands
Seam supports 100+ smart lock brands including:
August
Yale
Schlage
Kwikset
Baldwin
Lockly
Tedee
And many more...
Check the Seam Device Catalog for the complete list.
API Reference
Lock Control Tools
list_locks()
Returns all locks in your Seam account with basic information including name, manufacturer, model, lock status, battery level, and online status.
get_lock(device_id)
Gets detailed information about a specific lock including capabilities, errors, warnings, and location.
lock_door(device_id)
Locks the specified door and returns the action attempt details.
unlock_door(device_id)
Unlocks the specified door and returns the action attempt details.
get_lock_status(device_id)
Gets the current lock/unlock status along with battery level and online status.
Access Code Management Tools
create_access_code(device_id, name, code?, starts_at?, ends_at?)
Creates an access code on a single lock. The code
parameter is optional (random code generated if not provided). Time limits are optional - omit them for permanent codes.
Example:
create_access_code_on_multiple_locks(device_ids, name, code?, starts_at?, ends_at?, location_filter?)
Creates the same access code on multiple locks. Supports location-based filtering to target locks by location name.
Example with location filter:
list_access_codes(device_id?)
Lists all access codes. Optionally filter by device_id to see codes for a specific lock.
update_access_code(access_code_id, name?, code?, starts_at?, ends_at?)
Updates an existing access code. All parameters except access_code_id are optional.
delete_access_code(access_code_id)
Permanently deletes an access code from the lock.
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
For issues related to:
This MCP server: Open an issue on GitHub
Seam API: Visit Seam Docs or Seam Support
MCP protocol: Visit MCP Documentation
Links
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables control of smart locks through the Seam API, allowing users to lock/unlock doors, check status, and manage access codes across 100+ supported lock brands. Supports comprehensive access code management including temporary codes and multi-lock operations.