locklink-mcp
v0.3.0
Published
MCP server for LockLink — create and request one-time secrets while keys stay client-side
Downloads
573
Maintainers
Readme
locklink-mcp
Local MCP server for LockLink. Speaks stdio MCP to your
client and forwards to the hosted https://lockl.ink/mcp endpoint, keeping
encryption keys in process memory so the server never sees plaintext or
fragment keys.
Setup
{
"mcpServers": {
"locklink": {
"command": "npx",
"args": ["-y", "locklink-mcp@latest"]
}
}
}On the first remote call, the shim opens a browser for LockLink sign-in and
consent. It uses OAuth dynamic client registration, PKCE S256, and a temporary
127.0.0.1 loopback callback. Tokens are refreshed automatically. If no
browser is available, the sign-in URL is printed to stderr instead.
Vault unlock commands
Unlocking the local vault removes the browser round trip from secret-request creation:
npx locklink-mcp login
npx locklink-mcp status
npx locklink-mcp lock
npx locklink-mcp logoutlogin reads the email and a masked password directly from the controlling
terminal. It sends the password only to LockLink's HTTPS Better Auth sign-in,
derives and verifies the vault key locally, then stores only the 32-byte vault
key in the OS keychain. macOS Keychain (security), Linux Secret Service
(secret-tool), and Windows Credential Locker are supported without package
dependencies. Hosts without one of these backends fail closed; secret requests
continue to use the existing browser setup URL.
status reports package version, OAuth scope sufficiency, keychain backend,
and lock state. lock removes only the vault key. logout removes only OAuth
tokens, leaving the vault key in the keychain.
When unlocked, create_secret_request generates and wraps its requester ECDH
private key locally and returns the /r/:requestKey URL in that same MCP call.
When locked, it retains the browser setup handoff.
Environment
| Variable | Purpose |
| ----------------------- | ---------------------------------------------------------------------------- |
| LOCKLINK_MCP_URL | Optional development endpoint override; defaults to https://lockl.ink/mcp. |
| LOCKLINK_ACCESS_TOKEN | Optional bearer-token escape hatch that skips self-service OAuth entirely. |
OAuth client registration and tokens are stored per remote URL in
~/.locklink/oauth.json. The directory is private (0700) and the file is
private (0600); writes are atomic.
Guarantees
- Plaintext, fragment keys, and private keys never leave this process.
- Plaintext, fragment keys, and private keys are never written to disk.
- Only OAuth client registration and tokens are persisted on disk. The vault key is stored only by the OS keychain.
Docs: lockl.ink/docs/mcp · Source: github.com/clgeoio/locklink
