Skip to main content
Glama

pg-lock-xray

ci npm JSR Rust license

One line: npx pg-lock-xray prisma/migrations (or bunx pg-lock-xray prisma/migrations): catch ACCESS EXCLUSIVE PostgreSQL migration lock hazards before production.

+-------------------------------------------------------------+
|  migration.sql  -->  lock classifier  -->  severity report   |
|       |                      |                               |
|       +---- --fix --> CONCURRENTLY / NOT VALID rewrites      |
+-------------------------------------------------------------+

Install

Bun / npm:

bunx pg-lock-xray ./migrations
npx pg-lock-xray ./migrations

# or install in your project / globally
bun add -d pg-lock-xray
npm i -D pg-lock-xray

JSR:

bunx jsr add @kanchingyg/pg-lock-xray
npx jsr add @kanchingyg/pg-lock-xray

Cargo (Rust native binary):

cargo install --git https://github.com/kanchingyg/pg-lock-xray

The core engine is Rust (src/lib.rs, src/main.rs, src/mcp.rs): static lock rules, zero-downtime rewrite hints, and sqlOrPath containment under migrations/, prisma/, supabase/, or sql/. TypeScript under src/*.ts is included for npx / bunx / JSR usage and MCP bridge helpers.

Related MCP server: locksmith

Quick start

npx pg-lock-xray ./migrations
bunx pg-lock-xray ./migrations
npx pg-lock-xray --fix ./sql/0001_init.sql --dry-run
npx pg-lock-xray --fix ./sql/0001_init.sql --allow-write
npx pg-lock-xray --mcp

What it catches

Pattern

Risk

CREATE INDEX without CONCURRENTLY

ACCESS EXCLUSIVE lock blocking writes

CREATE INDEX USING hnsw without CONCURRENTLY

pgvector blocking index build

ADD CONSTRAINT ... FOREIGN KEY without NOT VALID

Long table validation lock

Volatile DEFAULT on ADD COLUMN

Full table rewrite

MCP & Ollama

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "pg-lock-xray": {
      "command": "npx",
      "args": ["-y", "pg-lock-xray", "--mcp"]
    }
  }
}

Call MCP tool rewrite_zero_downtime with { "sqlOrPath": "...", "model": "llama3.2", "baseUrl": "http://127.0.0.1:11434" }.

Flags

Flag

Purpose

--allow-write

Enable rewrite_zero_downtime file writes

--dry-run

Show diff / run tools without writing

--mcp

JSON-RPC MCP server on stdio

--wsl-paths

Normalize paths for WSL agents

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that catches dangerous SQL migrations by analyzing PostgreSQL statements for locking risks and providing safe rewrites.
    2
    15 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Blocks unsafe PostgreSQL migrations before an AI agent writes or runs them. check_before_apply returns a pass/fail gate; reads the real Postgres parser, classifies the lock each statement takes, checks 112 safety rules. Runs offline, no database required.
    7
    438 npm
    9
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables checking Postgres migration SQL against a table-size estate snapshot and safety policy before apply, returning approve/block verdicts with lock details and remediation guidance, plus tools to explain locks and list policy rules.
    1
    MIT