locksmith
Analyzes PostgreSQL migrations for dangerous operations that could lock the database, providing PASS/REVIEW/BLOCK verdicts and safe rewrites.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@locksmithAnalyze this migration: CREATE INDEX ON users(email)"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Locksmith π
An MCP server that catches dangerous SQL migrations before they lock your database.
Most migrations look harmless and then take down production: a plain CREATE INDEX
blocks every write for the length of the build; ALTER COLUMN ... TYPE rewrites the
whole table under ACCESS EXCLUSIVE; SET NOT NULL scans every row. Which operations
are safe β and the rewrite that makes the dangerous ones safe β is knowledge that
lives in senior engineers' heads.
Locksmith encodes that knowledge as a tool an LLM agent (or a human) can call. Give it a PostgreSQL migration; it returns a PASS / REVIEW / BLOCK verdict, a finding for each risky statement (which lock it takes, why that's dangerous), and a concrete safe rewrite.
π BLOCK β do not ship as written
## π CREATE INDEX without CONCURRENTLY `create-index-non-concurrent` (line 5)
> `CREATE INDEX idx_users_email ON users (email)`
Problem: This index build will block all writes to the table until it completes.
Lock taken: SHARE (blocks writes)
Fix: Build the index with CREATE INDEX CONCURRENTLY, which does not block writes.
Suggested rewrite:
CREATE INDEX CONCURRENTLY idx_users_email ON users (email)Why an MCP server?
An agent can often reason about lock semantics β but not reproducibly, and not in a
way you can test, audit, or trust to gate a deploy unsupervised. The same prompt may
approve a table-rewriting ALTER one run and flag it the next, or miss it entirely in a
long migration. Locksmith turns that probabilistic capability into a deterministic,
tested tool: the lock semantics were verified once (against the PostgreSQL docs and the
parser's real behavior, with a test suite pinning each rule) and now run identically every
time, returning the same verdict plus a paste-ready fix β so "review this migration" stops
being a guess.
Related MCP server: CodeGuard
Capabilities
Tools
analyze_migration(sql, assumeLargeTables?)β verdict + findings + safe rewrites (both human-readable Markdown and validated structured output).explain_lock(query)β what a given Postgres lock mode blocks and what takes it.
Resources
locksmith://lock-matrixβ the PostgreSQL table-level lock compatibility matrix.locksmith://rulesβ the full rule catalog (id, severity, rationale) as JSON.
Prompts
review-migrationβ analyze a migration and summarize the risk as a PR comment.
Rule catalog
Rule | Severity | What it catches |
| critical |
|
| critical |
|
| critical |
|
| critical |
|
| warning |
|
| warning |
|
| warning |
|
| warning |
|
| warning | destructive + breaks deployed code |
| warning | breaks running app code |
Suppressing a rule
Acknowledge a deliberate risk inline, eslint-style:
-- locksmith:disable create-index-non-concurrent
CREATE INDEX idx_users_email ON users (email);A bare -- locksmith:disable suppresses all rules for the next statement.
Install & run
No clone or build required β run it straight from npm:
npx locksmith-mcpUse with Claude Code
claude mcp add locksmith -- npx -y locksmith-mcpOr add to any MCP client config (Claude Desktop, etc.):
{
"mcpServers": {
"locksmith": { "command": "npx", "args": ["-y", "locksmith-mcp"] }
}
}Run from source instead
git clone https://github.com/cxk280/locksmith.git && cd locksmith
npm install && npm run build
# then point your client at: node /absolute/path/to/locksmith/dist/index.jsTry it with the MCP Inspector
npx @modelcontextprotocol/inspector npx -y locksmith-mcpThen call analyze_migration with the contents of examples/dangerous.sql.
Development
npm run dev # run from source with tsx
npm test # vitest: per-rule + golden tests on examples/Design notes
Deterministic. No clock, randomness, or network β same SQL in, same verdict out. That's what makes it testable and safe to drop into CI.
Hybrid parsing. Statements are parsed to an AST (
pgsql-ast-parser) when the parser supports them; rules fall back to normalized text for Postgres clauses the parser doesn't model (NOT VALID,CONCURRENTLY). An unparseable statement degrades to a "review manually" note β the linter never fails closed on input it doesn't understand.Composable rules. Each rule is a pure function with its own metadata in its own file; adding one is a one-file change plus a line in the registry.
Advisory, not a prover. Locksmith complements review;
assumeLargeTablesdefaults totrueso it errs toward flagging.
Roadmap
Remote (Streamable HTTP) transport for hosted deployments.
Additional dialects (MySQL, SQLite).
Optional live DB introspection to suppress findings on known-small tables.
A GitHub Action wrapping the same engine to gate PRs.
License
MIT
This server cannot be installed
Maintenance
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
- AlicenseAqualityDmaintenanceA Postgres MCP server with index tuning, explain plans, health checks, and safe sql execution.Last updated10MIT
- Alicense-qualityDmaintenanceMCP server that analyzes TypeScript/Prisma projects, builds dependency graphs, and protects against dangerous modifications and silent regressions.Last updated91MIT
- Alicense-qualityBmaintenanceA secure, read-only PostgreSQL MCP server that provides safe database introspection and querying capabilities.Last updated7MIT
- Alicense-qualityDmaintenanceDatabase migration safety checker MCP server that analyzes SQL for dangerous patterns and provides safe alternatives.Last updated01MIT
Related MCP Connectors
MCP server for managing Prisma Postgres.
MCP server for interacting with the Supabase platform
A MCP server built for developers enabling Git based project management with project and personalβ¦
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/cxk280/locksmith'
If you have feedback or need assistance with the MCP directory API, please join our Discord server