kwikset-mcp
kwikset-mcp
Ein MCP-Server, mit dem Claude die Smart-Locks der Kwikset-Halo-Familie prüfen und steuern kann (Halo, Halo Keypad, Halo Touch, Halo Select / Select Plus).
Dies ist eine Node.js-Implementierung einer früheren Python-Version, gewechselt wurde, um pythonspezifischen Einrichtungsfreibwurf unter Windows zu vermeiden (fehlender Interpreter, virtualenv-Aktivierung, PATH-Aliasing). Node hat kein exaktes Äquivalent zu aiokwikset (der Python-Bibliothek, auf der die erste Version basierte); diese Version spricht daher direkt Kwiksets Cloud-API an: AWS Cognito für die Anmeldung, dazu eine kleine REST-API für homes/devices/Lock/Unlock.
Woher die API-Details stammen: Kwikset veröffentlicht keine offizielle API. Die Cognito-Pool-/Client-IDs, der API-Host und die REST-Pfade, die dieser Server verwendet, wurden aus dem veröffentlichten, unter Apache-2.0 lizenzierten Quellcode von homebridge-kwikset-halo extrahiert (ein Community-Homebridge-Plugin für genau diese Schlösser), das wiederum aiokwikset für die Erstdokumentation dieser Details würdigt. Details findest du in den Kommentaren in src/const.js und src/cognito.js. Dies ist nicht offiziell durch Kwikset unterstützt und könnte brechen, wenn Kwikset serverseitig etwas ändert.
Teststatus: Jedes Stück Logik auf diesem Server – der Cognito-Login-Ablauf (einschließlich der zweistufigen Telefonverifizierung-Herausforderung), Token-Refresh und Persistenz, das REST-Feld-Mapping, die unlock_door-Bestätigungssperre und jedes MCP-Tool Ende-zu-Ende – wurde gegen handgeschriebene Mocks geprüft, die für AWS Cognito, Kwiksets REST-API und das MCP-SDK stehen; und alles besteht. Was hier nicht getestet werden konnte, war der Aufruf des echten Kwikset-Dienstes, da dies ein echtes Konto und ein physisches Schloss erfordert. Behandle deine ersten list_locks-Aufruf als den echten Smoke-Test – wenn er komplett scheitert (nicht nur ein Feld mit null), sind die Pool-/Host-Konstanten möglicherweise veraltet; wenn ein Tool nulls liefert, führe debug_raw_devices aus, um die echten Feldnamen zu sehen, und vergleiche sie mit src/kwikset-client.js.
Warum die Anmeldung ein eigener Schritt ist
Dein Kwikset-Passwort sollte nie durch ein LLM-Gespräch laufen. Daher erfolgt die Authentifizierung genau einmal in einem schlichten Terminal über auth-setup.js, wobei nur die resultierende Session-Tokens lokal abgelegt werden – niemals das Passwort. Der MCP-Server liest diese Tokens bei jeder Verbindung und frischt sie unauffällig auf – er fragt nie Claude, oder dich über Claude, nach deinem Passwort.
Related MCP server: Lutron Caseta MCP Server
Einrichtung
Node.js installieren (18+), falls nicht vorhanden: nodejs.org – die LTS-Installer holen. Überprüfen mit:
node --versionAbhängigkeiten installieren, innerhalb dieses Ordners:
npm installEinmalig anmelden. Anmeldeinformationen können auf drei Arten angegeben werden, die in dieser Reihenfolge geprüft werden:
# 1. CLI flags (any OS/shell) node auth-setup.js --email you@example.com --password "hunter2"# 2. Environment variables (preferred over the flag above - a # command-line password is visible to other processes/users on the # machine and lands in shell history) # macOS / Linux KWIKSET_EMAIL=you@example.com KWIKSET_PASSWORD='hunter2' node auth-setup.js# Windows PowerShell $env:KWIKSET_EMAIL = "you@example.com" $env:KWIKSET_PASSWORD = "hunter2" node auth-setup.js# 3. Interactive prompt (any OS/shell; default if nothing else is given) node auth-setup.jsFalls bei deinem Konto eine Telefonverifizierung erforderlich ist, wirst du nach dem Code zusätzlichen aufgefordert, den Kwikset dir per SMS sendet (oder du gibst ihn gleich mit
--mfa-code/$KWIKSET_MFA_CODEan). Dabei wird~/.kwikset-mcp/tokens.jsonerzeugt (nur Owner-Lese/Schreibrechte) und dein Passwort wird nach diesem Schritt nie wieder berührt.Richte Claude auf den Server aus.
Für Claude Code, von diesem Projektverzeichnis heraus:
# macOS / Linux claude mcp add kwikset -- node "$(pwd)/src/server.js"# Windows PowerShell claude mcp add kwikset -- node "$PWD\src\server.js"Für Claude Desktop, füge diese Eintrag zu deiner
claude_desktop_config.jsonhinzu (Einstellungen → Entwickler → Konfiguration bearbeiten), und setze den absoluten Pfad zusrc/server.jsaus dieenem Ordner ein:{ "mcpServers": { "kwikset": { "command": "node", "args": ["/absolute/path/to/kwikset-mcp/src/server.js"] } } }Unter Windows verwendest du im JSON-Pfad doppelte Backslashes, z.?B.
"C:\\Users\\you\\kwikset-mcp\\src\\server.js".Starte danach den Claude-Client neu, damit er den neuen Server übernimmt.
Einmalig ausprobieren. Frag Claude sowas wie „Liste meine Kwikset-Schlösser auf“ oder „Ist die Haustür verriegelt?“ – er sollte dann
list_locks/get_lock_statusaufrufen. Das Entsper erfordert eine ausdrückliche Aufforderung, dennunlock_doorweigert sich, zu handeln, außerconfirm=truewird übergegeben, und Claude macht das nur, wenn du es eindeutig hierum gebeten hast, diese betreffende Tür zu öffnen.
Tools
Tool | Beschreibung |
| Alle Locks in Klatt A-Account-Account, mit Status, Akkuladung %, Home |
| Status, Akku, Modell, Seriennummer für ein Schlossans |
| Tür verriegeln |
| Tür entriegeln ( |
| Diagnose: rohe, unformatierte Home-/Device-JSON von Kwikset-API |
Erneute Authentifizierung
Wenn Tokens ablaufen und nicht leise aktualisiert werden können (z. B. weil das Kwikset-Passwort geändert wurde oder 2FA zurückgesetzt wurde), legeben Tool-Aufrufe einen auth_required-Fehler mit Anweisungen zurück – einfach node auth-setup.js erneut ausführen.
Dateien
kwikset-mcp/
├── auth-setup.js # run once, by hand, to log in
├── src/
│ ├── const.js # Cognito pool/client IDs, API host (see caveats above)
│ ├── auth.js # local token file read/write
│ ├── cognito.js # AWS Cognito login/refresh (amazon-cognito-identity-js)
│ ├── kwikset-client.js # REST calls: homes, devices, lock/unlock
│ └── server.js # MCP server + tool definitions
├── package.json
└── .gitignoreMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables 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.
- FlicenseNot gradedqualityDmaintenanceEnables Claude Desktop to control Lutron Caseta smart lighting systems locally, including turning lights on/off, setting dimmer levels, and activating scenes.
- AlicenseNot gradedqualityDmaintenanceEnables Claude Desktop to read and control Home Assistant devices via natural language, with configurable safety restrictions on sensitive actions.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to control PetLibro RFID pet feeders and water fountains by checking food/battery/water status, dispensing food by the cup, and force-opening feeder lids via the PetLibro cloud API.GPL 3.0
Related MCP Connectors
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jgonzalez007/kwikset-mcp-node'
If you have feedback or need assistance with the MCP directory API, please join our Discord server