{"_id":"@neverinfamous/postgres-mcp","_rev":"14-37e4f7e6f821ca03e39d0d2c3a9558f5","name":"@neverinfamous/postgres-mcp","dist-tags":{"latest":"3.1.0"},"versions":{"1.0.1":{"name":"@neverinfamous/postgres-mcp","version":"1.0.1","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@1.0.1","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgres-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"4804e564e47083dc2828f0f1fa47535b5b7af6c3","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-1.0.1.tgz","fileCount":571,"integrity":"sha512-P7G7sIZGg0ZRAFJZzNFAciGw6B0tNgu+6QETEwTQ/qFHK6aYb3ph4VD2ecaAB9agPmPyMzBK4V+iRwaEJEYGqg==","signatures":[{"sig":"MEUCIQC2epAtqzQIN9Jo4OidfgI8sRcxlEkseah/fTvM360+IwIgXAFv10i+WpGVdtNqaVShZr6WEUqUuGUg7nlyYiC3qAs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2967477},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"7f091859a4db87548d1139f386a088ef9792510e","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"tsc","check":"npm run lint && npm run typecheck","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"repository":{"url":"git+https://github.com/neverinfamous/postgres-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.17.2","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.28.0","vitest":"^4.0.18","globals":"^17.1.0","@types/pg":"^8.11.0","@eslint/js":"^9.28.0","typescript":"^5.9.3","@types/node":"^25.0.10","typescript-eslint":"^8.53.1","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_1.0.1_1769317281069_0.9362314171648847","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@neverinfamous/postgres-mcp","version":"1.0.2","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@1.0.2","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgresql-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgresql-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"ba23b4c274e42259a20bea0b337d228318f75337","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-1.0.2.tgz","fileCount":571,"integrity":"sha512-NwzVXe7xR+d5FQTv8P1GSwsA3Vu5tFd2JRUqVJ2UmyoGJ74yb0TYxe4vx0vV0Tgy9KGvXRzA00iUZ3niPqt7Jg==","signatures":[{"sig":"MEYCIQDMPVstUUbko6wOz+29V6t4uGQftAzufNleNvWlqHYarQIhAO4USBIPkRTa1wFwFoLWpLWvjO0z5Ncoz0z3ZQZRkw1o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2967884},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"6cd3102040e72ff924a5dff323ed1b06aec99e8d","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"tsc","check":"npm run lint && npm run typecheck","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"repository":{"url":"git+https://github.com/neverinfamous/postgresql-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.17.2","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.28.0","vitest":"^4.0.18","globals":"^17.1.0","@types/pg":"^8.11.0","@eslint/js":"^9.28.0","typescript":"^5.9.3","@types/node":"^25.0.10","typescript-eslint":"^8.53.1","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_1.0.2_1769320736294_0.5646935217976456","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@neverinfamous/postgres-mcp","version":"1.1.0","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@1.1.0","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgresql-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgresql-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"550d7b6904ea1b9e5ee299b2266fecb68e9104e0","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-1.1.0.tgz","fileCount":583,"integrity":"sha512-xjNcwnV7Ug88dsn2PlNsI/lzsYprIqoD3YUbwoKZAW594fzYB4cLxFLmGoXzdEMaIKixPZNCCbPCukxA4IaWeg==","signatures":[{"sig":"MEUCIQCih1VmG9MUN/rp8LWXK1vD3foQBdprUV4sh6uQ8K9cnQIgMosqtSApeKhDfIFtnL+lHGiw07R+nT7IEevLlqkpiko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3452445},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"a3fea6eb08f8cc491a237f61990a03866d202952","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"tsc","check":"npm run lint && npm run typecheck","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"repository":{"url":"git+https://github.com/neverinfamous/postgresql-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.17.2","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.28.0","vitest":"^4.0.18","globals":"^17.2.0","@types/pg":"^8.11.0","@eslint/js":"^9.28.0","typescript":"^5.9.3","@types/node":"^25.1.0","typescript-eslint":"^8.54.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_1.1.0_1769693755470_0.7002113283365394","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@neverinfamous/postgres-mcp","version":"1.2.0","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@1.2.0","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgresql-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgresql-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"0827fc6294c367af63b9dab0d1466be6544310c1","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-1.2.0.tgz","fileCount":583,"integrity":"sha512-EQ3+ctVt//LlEm36AXsXmE1L9sEbYTm/jNhpSeMdKVSxZChq6hUoVg+MCZTgQveLCvMlBcIfGDWB5lFNRwSY0w==","signatures":[{"sig":"MEYCIQCCM0YX6avi1zxwlDNIe5Uy/UVJddWJkV9jIii8h9r5aQIhAMp99vwAUCCZOg4NnkLPOSX+nfx4DE8Fq0mCxlb93aNp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3487267},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"3be0d1c61fdc2db802d52458a15f51847f8c10b2","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"tsc","check":"npm run lint && npm run typecheck","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"repository":{"url":"git+https://github.com/neverinfamous/postgresql-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.18.0","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.28.0","vitest":"^4.0.18","globals":"^17.3.0","@types/pg":"^8.11.0","@eslint/js":"^9.28.0","typescript":"^5.9.3","@types/node":"^25.2.3","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_1.2.0_1770742006266_0.2192768939491916","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@neverinfamous/postgres-mcp","version":"1.3.0","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@1.3.0","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgresql-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgresql-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"1ece476470de8e9b124dda1551a74552633370d9","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-1.3.0.tgz","fileCount":587,"integrity":"sha512-NtGBgtlmROaS72z8uFhDj+kKD/jD+NT41QiOIKJA90TO+1opWucqfGOza6UvOSi6ohFZdHh3X30vMW9aD4fqAw==","signatures":[{"sig":"MEUCIEf+Se+6BS+V8AmfNXPyf0FL3MlPi7H/oC4KOgXYmA7gAiEAwmDXMcmbf6FF6uMFgyKXAgdqzFw6Z1MYSpMaR/Hp5/g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3773245},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"c9b5bb4a03336f96425482c2cb9caf68e204df98","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","build":"tsc","check":"npm run lint && npm run typecheck","typecheck":"tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"overrides":{"tar":">=7.5.8","minimatch":">=10.2.1"},"repository":{"url":"git+https://github.com/neverinfamous/postgresql-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pg":"^8.18.0","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.1","vitest":"^4.0.18","globals":"^17.3.0","@types/pg":"^8.11.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","typescript-eslint":"^8.56.0","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_1.3.0_1771798682121_0.4964453802907154","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@neverinfamous/postgres-mcp","version":"2.0.0","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@2.0.0","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgres-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"2d31a79e5a321cc830f594258b7bb9d768fed7ef","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-2.0.0.tgz","fileCount":627,"integrity":"sha512-EQRM/9EN/2kDyKFLlKEBq9L7IQZ0ViDHT7BmAskANtL8zZqDU4YbepdThDogeD3yezzuQWwH5QPkVicpPdKxXw==","signatures":[{"sig":"MEQCIGlX/dOiODDHGucnVN4/EK2Tm2TDKUc7iSepD6nrxC2dAiB7DMLscrSjoNaeyIvKbz/K0+Sb4UGtYNS/a93P0lkyiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4156226},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"f1d6adb933aa8ac90416f386d534272974e097e4","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","bench":"vitest bench --run","build":"tsc","check":"npm run lint && npm run typecheck","typecheck":"tsc --noEmit","bench:verbose":"vitest bench --run --reporter=verbose","test:coverage":"vitest run --coverage","generate:instructions":"node scripts/generate-server-instructions.ts"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"overrides":{"tar":">=7.5.8","minimatch":">=10.2.1"},"repository":{"url":"git+https://github.com/neverinfamous/postgres-mcp.git","type":"git"},"_npmVersion":"11.8.0","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.13.1","dependencies":{"pg":"^8.19.0","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","globals":"^17.4.0","@types/pg":"^8.18.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.3","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_2.0.0_1772491436514_0.4912032606958481","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@neverinfamous/postgres-mcp","version":"2.1.0","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@2.1.0","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgres-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"dc6eadea0d029588ee5b15ccfe22bba5f3a2c080","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-2.1.0.tgz","fileCount":787,"integrity":"sha512-7EynRNfBanBnQWhVYnyNpTCxeIpGPxcQDgwELTNqhqq7aQNGDo9ejAN7Zbgkziif7DU6YOmeH05yZ4lmBMCtuw==","signatures":[{"sig":"MEUCIQDWG8ecxqCeAQJZqOJxywl8ud+H0W2ArHJOuLe2ciVvswIgZo/l5KSmQQkb2AF6zhE7KdKNLh339Lm2bQgFv7xq61I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4383151},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"ad55fb31a79aca75e7a4bf1137315e6680abce70","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","bench":"vitest bench --run","build":"tsc","check":"npm run lint && npm run typecheck","test:e2e":"playwright test","typecheck":"tsc --noEmit","bench:verbose":"vitest bench --run --reporter=verbose","test:coverage":"vitest run --coverage","generate:instructions":"node scripts/generate-server-instructions.ts"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"overrides":{"tar":">=7.5.10","minimatch":">=10.2.3"},"repository":{"url":"git+https://github.com/neverinfamous/postgres-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.20.0","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","globals":"^17.4.0","@types/pg":"^8.18.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.3","@playwright/test":"^1.58.2","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_2.1.0_1773009406001_0.7846471670802153","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@neverinfamous/postgres-mcp","version":"2.2.0","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@2.2.0","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgres-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"5bc8344818b7f14ed5dfe593791ea8dbca2c350f","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-2.2.0.tgz","fileCount":799,"integrity":"sha512-uezb3np6GJ0Lfu+PZTXeoAiYOyizUrIGbwS9Hd+0wO6Hbdudk//utmYywyhDkGMPtQrODQzE45MTJoanoSxKTw==","signatures":[{"sig":"MEUCIQC92WY4w5DQ3NfjgDgnVd7oTzEmb0rNFo4FbVC3mfnfKwIgCkANXrzCz1Vdz2oBMoVeZM62wwSB/4AAG5N685sckHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4447235},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"7c10a747bd74ef493a5bcf3d26a2bdceebb213a7","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","bench":"vitest bench --run","build":"tsc","check":"npm run lint && npm run typecheck","test:e2e":"playwright test","typecheck":"tsc --noEmit","bench:verbose":"vitest bench --run --reporter=verbose","test:coverage":"vitest run --coverage","generate:instructions":"node scripts/generate-server-instructions.ts"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"overrides":{"tar":">=7.5.10","minimatch":">=10.2.3"},"repository":{"url":"git+https://github.com/neverinfamous/postgres-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.20.0","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","globals":"^17.4.0","@types/pg":"^8.18.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.3","@playwright/test":"^1.58.2","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_2.2.0_1773052870391_0.34504692974324946","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@neverinfamous/postgres-mcp","version":"2.3.0","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@2.3.0","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgres-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"73e6081f5f5aa512d9d92ea143168908bb3bcef6","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-2.3.0.tgz","fileCount":799,"integrity":"sha512-kR2PV83MNy3sNMrVyv2QdU/ghzcOzbffoM6/Jg1f4tLgyAWNP5Re/G9CkWDaLzfeU/1lyOzpDpiL77+DZA7LJA==","signatures":[{"sig":"MEUCIAuVI025qfQd+3uirRGeijFEIxbQGg6LT+eF83IwQBtWAiEAkQYE1Mlz+vjHz8iRrQq/awiLX62RfBBLNEGukgyTP0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4456056},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"d8d73f4fbe70a4ffa0686280331486244fea4b39","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","bench":"vitest bench --run","build":"tsc","check":"npm run lint && npm run typecheck","test:e2e":"playwright test","typecheck":"tsc --noEmit","bench:verbose":"vitest bench --run --reporter=verbose","test:coverage":"vitest run --coverage","generate:instructions":"node scripts/generate-server-instructions.ts"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"overrides":{"tar":"7.5.11","minimatch":"10.2.4"},"repository":{"url":"git+https://github.com/neverinfamous/postgres-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.20.0","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","vitest":"^4.0.18","globals":"^17.4.0","@types/pg":"^8.18.0","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.3","@playwright/test":"^1.58.2","typescript-eslint":"^8.56.1","@vitest/coverage-v8":"^4.0.18"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_2.3.0_1773080281336_0.6660384302144253","host":"s3://npm-registry-packages-npm-production"}},"3.0.4":{"name":"@neverinfamous/postgres-mcp","version":"3.0.4","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@3.0.4","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgres-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"137394674f861a01f2bff6da3587de272d2c8b48","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-3.0.4.tgz","fileCount":593,"integrity":"sha512-+kwzdqLV8nQiy6IrN4Sl3Afdw5S1jg4SB/lSiFOGLEvZI4xgqx7ix32q++K6ghVZzINhNVRS1VV7RFf4e5EbYw==","signatures":[{"sig":"MEYCIQDglKmO/emNrh0JNES/RycTNl02D2RB0I5sZaqCXG8vqgIhAKhL1kJwuzOKA1Z/Jt9YqXWvozrAWMNt8O2YHcCOPnSv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neverinfamous%2fpostgres-mcp@3.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3312330},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"c6536a795062b002ea96357e189904f5743a5770","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","bench":"vitest bench --run","build":"tsc","check":"npm run lint && npm run typecheck","prebuild":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true});require('fs').rmSync('.tsbuildinfo',{force:true})\"","test:e2e":"playwright test","typecheck":"tsc --noEmit","bench:verbose":"vitest bench --run --reporter=verbose","test:coverage":"vitest run --coverage","generate:instructions":"node scripts/generate-server-instructions.ts"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"overrides":{"tar":"7.5.13","diff":"8.0.4","hono":"4.12.10","flatted":"3.4.2","minimatch":"10.2.5","picomatch":"4.0.4","@isaacs/brace-expansion":"5.0.1"},"repository":{"url":"git+https://github.com/neverinfamous/postgres-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.20.0","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.2.0","vitest":"^4.1.2","globals":"^17.4.0","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.2","unplugin-swc":"^1.5.9","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_3.0.4_1775363857854_0.9846600878262639","host":"s3://npm-registry-packages-npm-production"}},"3.0.5":{"name":"@neverinfamous/postgres-mcp","version":"3.0.5","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@3.0.5","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgres-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"db37a447b2e36eca2bf305f90ce0b0ef6e490f0e","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-3.0.5.tgz","fileCount":593,"integrity":"sha512-ofvKRx+IHRDqRuhNHyWccmouoVrG7OcUOEHIe/RUO5d3Rn4KVu0pJ7yPQeSWHBNxBkCE2SVkBe1nO3YxKcN4kw==","signatures":[{"sig":"MEQCIAIsXeusAtoTjsvxtBxlTDEAOODiv8/c/PMQ6wtvwNoIAiAQ+YLipliWleUdsZR3rff101WkIcJmGmgvT3khfLoyZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neverinfamous%2fpostgres-mcp@3.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3312330},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"a34066a53030266411bd468ebf6c30c2561b3d2e","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","bench":"vitest bench --run","build":"tsc","check":"npm run lint && npm run typecheck","prebuild":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true});require('fs').rmSync('.tsbuildinfo',{force:true})\"","test:e2e":"playwright test","typecheck":"tsc --noEmit","bench:verbose":"vitest bench --run --reporter=verbose","test:coverage":"vitest run --coverage","generate:instructions":"node scripts/generate-server-instructions.ts"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"overrides":{"tar":"7.5.13","diff":"8.0.4","hono":"4.12.10","flatted":"3.4.2","minimatch":"10.2.5","picomatch":"4.0.4","@isaacs/brace-expansion":"5.0.1"},"repository":{"url":"git+https://github.com/neverinfamous/postgres-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.20.0","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.2.0","vitest":"^4.1.2","globals":"^17.4.0","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.2","unplugin-swc":"^1.5.9","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_3.0.5_1775364271365_0.567703727692388","host":"s3://npm-registry-packages-npm-production"}},"3.0.6":{"name":"@neverinfamous/postgres-mcp","version":"3.0.6","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@3.0.6","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgres-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"dcc73ca16bbf1dc653ee68a01367a79eaa4ba9f7","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-3.0.6.tgz","fileCount":593,"integrity":"sha512-wdKbCtnt5b5q5GwDdE44d+FvSg9qEprOXjzJoiaW7izDPfiqLKa1LbeBRupB+OrOdeHPI8cHrD7srxxOfZ6VHQ==","signatures":[{"sig":"MEYCIQCVLtL+fTk8Dce8lU48fXDCChbRrkry8E5S0tHM19VONAIhAPnRUm7RxBozK7D0ENFox774rF+hQCFeEYreB8+Xu/Pq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neverinfamous%2fpostgres-mcp@3.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3315427},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"c78dddfebda4d78056eacfe0570a479b921575a1","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","bench":"vitest bench --run","build":"tsc","check":"npm run lint && npm run typecheck","prebuild":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true});require('fs').rmSync('.tsbuildinfo',{force:true})\"","test:e2e":"playwright test","typecheck":"tsc --noEmit","bench:verbose":"vitest bench --run --reporter=verbose","test:coverage":"vitest run --coverage","generate:instructions":"node scripts/generate-server-instructions.ts"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"overrides":{"tar":"7.5.13","diff":"8.0.4","hono":"4.12.12","flatted":"3.4.2","minimatch":"10.2.5","picomatch":"4.0.4","@isaacs/brace-expansion":"5.0.1"},"repository":{"url":"git+https://github.com/neverinfamous/postgres-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.20.0","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.2.0","vitest":"^4.1.2","globals":"^17.4.0","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.2","unplugin-swc":"^1.5.9","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_3.0.6_1775688765786_0.007327107020729251","host":"s3://npm-registry-packages-npm-production"}},"3.0.7":{"name":"@neverinfamous/postgres-mcp","version":"3.0.7","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","_id":"@neverinfamous/postgres-mcp@3.0.7","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"homepage":"https://github.com/neverinfamous/postgres-mcp#readme","bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"bin":{"postgres-mcp":"dist/cli.js"},"dist":{"shasum":"d30ccc53a90611066e321db73a5fd36a6fa0cce4","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-3.0.7.tgz","fileCount":593,"integrity":"sha512-b7+ohl7g5VXS6OEHzT5e38mhiNSBwEpHkyXvYnpwfsydLPqQKbG6trju5zkdAko6p34x5iBfxgfFerFmMBzBkw==","signatures":[{"sig":"MEQCIEJ/iZ9WtLCNUnZTAkyRujm712+4Bnr1ZknCn2uU9qbtAiByKfZemjOB7jNlNm945N43BNOg6tK2vBlqrzEY6kKYlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neverinfamous%2fpostgres-mcp@3.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3320740},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"7484817bbeb8c3c48ba6e520dc6ea09f2e4a3e44","mcpName":"io.github.neverinfamous/postgres-mcp","scripts":{"dev":"tsc --watch","lint":"eslint src/","test":"vitest run","bench":"vitest bench --run","build":"tsc","check":"npm run lint && npm run typecheck","prebuild":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true});require('fs').rmSync('.tsbuildinfo',{force:true})\"","test:e2e":"playwright test","typecheck":"tsc --noEmit","bench:verbose":"vitest bench --run --reporter=verbose","test:coverage":"vitest run --coverage","generate:instructions":"node scripts/generate-server-instructions.ts"},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"overrides":{"tar":"7.5.13","diff":"8.0.4","hono":"4.12.12","flatted":"3.4.2","minimatch":"10.2.5","picomatch":"4.0.4","@isaacs/brace-expansion":"5.0.1"},"repository":{"url":"git+https://github.com/neverinfamous/postgres-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.20.0","zod":"^4.3.6","jose":"^6.0.0","commander":"^14.0.3","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.2.0","vitest":"^4.1.2","globals":"^17.4.0","@types/pg":"^8.20.0","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.2","unplugin-swc":"^1.5.9","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@vitest/coverage-v8":"^4.1.2"},"_npmOperationalInternal":{"tmp":"tmp/postgres-mcp_3.0.7_1775693740880_0.9166719332612967","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@neverinfamous/postgres-mcp","version":"3.1.0","mcpName":"io.github.neverinfamous/postgres-mcp","description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"postgres-mcp":"dist/cli.js"},"scripts":{"prebuild":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true});require('fs').rmSync('.tsbuildinfo',{force:true})\"","build":"tsc","dev":"tsc --watch","lint":"eslint src/","typecheck":"tsc --noEmit","test":"vitest run","test:coverage":"vitest run --coverage && node scripts/update-badges.ts","test:e2e":"playwright test && node scripts/update-badges.ts","bench":"vitest bench --run","bench:verbose":"vitest bench --run --reporter=verbose","check":"npm run lint && npm run typecheck","generate:instructions":"node scripts/generate-server-instructions.ts"},"keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"author":{"name":"Adamic.tech"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/neverinfamous/postgres-mcp.git"},"bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"homepage":"https://github.com/neverinfamous/postgres-mcp#readme","engines":{"node":">=24.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.28.0","commander":"^14.0.3","jose":"^6.2.3","pg":"^8.20.0","zod":"^4.4.3"},"devDependencies":{"@eslint/js":"^10.0.1","@playwright/test":"^1.60.0","@types/node":"^25.8.0","@types/pg":"^8.20.0","@vitest/coverage-v8":"^4.1.6","eslint":"^10.3.0","globals":"^17.6.0","typescript":"^6.0.3","typescript-eslint":"^8.59.3","unplugin-swc":"^1.5.9","vitest":"^4.1.6"},"overrides":{"@isaacs/brace-expansion":"5.0.1","diff":"9.0.0","fast-uri":"3.1.2","flatted":"3.4.2","hono":"4.12.18","ip-address":"10.2.0","minimatch":"10.2.5","picomatch":"4.0.4","tar":"7.5.15"},"gitHead":"ba84229fb13846950bab1a8f9e1fb43bd5d68750","_id":"@neverinfamous/postgres-mcp@3.1.0","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-/FdfYfLnGBjDBGWHySw7xJHZ7vGKwFsWB88UbBnKozdFEJ49EmSBSnLvyFM/9coBXTC1ueS76nO5x6aw0d0CQg==","shasum":"874405ac7a635047a777b41903bbe594614053e0","tarball":"https://registry.npmjs.org/@neverinfamous/postgres-mcp/-/postgres-mcp-3.1.0.tgz","fileCount":635,"unpackedSize":3652447,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@neverinfamous%2fpostgres-mcp@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBfaLstegxnPDf+GPx4CXVXCWQpD5FDCl0QPssDbSg4yAiEA8qbBz66bvGtdAY0j7L0h5KxkCmEocKO5Fb/wh3xQ2pw="}]},"_npmUser":{"name":"neverinfamous","email":"admin@adamic.tech"},"directories":{},"maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/postgres-mcp_3.1.0_1778793224846_0.5237191743559493"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-25T05:01:20.985Z","modified":"2026-05-14T21:13:45.320Z","1.0.1":"2026-01-25T05:01:21.301Z","1.0.2":"2026-01-25T05:58:56.486Z","1.1.0":"2026-01-29T13:35:55.728Z","1.2.0":"2026-02-10T16:46:46.485Z","1.3.0":"2026-02-22T22:18:02.305Z","2.0.0":"2026-03-02T22:43:56.757Z","2.1.0":"2026-03-08T22:36:46.203Z","2.2.0":"2026-03-09T10:41:10.595Z","2.3.0":"2026-03-09T18:18:01.689Z","3.0.4":"2026-04-05T04:37:38.106Z","3.0.5":"2026-04-05T04:44:31.579Z","3.0.6":"2026-04-08T22:52:46.022Z","3.0.7":"2026-04-09T00:15:41.048Z","3.1.0":"2026-05-14T21:13:45.018Z"},"bugs":{"url":"https://github.com/neverinfamous/postgres-mcp/issues"},"author":{"name":"Adamic.tech"},"license":"MIT","homepage":"https://github.com/neverinfamous/postgres-mcp#readme","keywords":["postgresql","postgres","mcp","mcp-server","model-context-protocol","database","ai","typescript"],"repository":{"type":"git","url":"git+https://github.com/neverinfamous/postgres-mcp.git"},"description":"PostgreSQL MCP server with connection pooling, tool filtering, and full extension support","maintainers":[{"name":"neverinfamous","email":"admin@adamic.tech"}],"readme":"# postgres-mcp\n\n<!-- mcp-name: io.github.neverinfamous/postgres-mcp -->\n\n**PostgreSQL MCP Server** binding the Model Context Protocol to a secure PostgreSQL sandbox.\n\nFeatures **Code Mode** — a revolutionary approach that provides access to all 278 tools through a secure, true V8 isolate (`worker_threads`), eliminating the massive token overhead of multi-step tool calls. Also includes schema introspection, migration tracking, smart tool filtering, deterministic error handling, connection pooling, HTTP/SSE Transport, OAuth 2.1 authentication, and extension support for citext, ltree, pgcrypto, pg_cron, pg_stat_kcache, pgvector, PostGIS, and HypoPG.\n\n**278 Specialized Tools** · **24 Resources** · **21 AI-Powered Prompts**\n\n[![GitHub](https://img.shields.io/badge/GitHub-neverinfamous/postgres--mcp-blue?logo=github)](https://github.com/neverinfamous/postgres-mcp)\n![GitHub Release](https://img.shields.io/github/v/release/neverinfamous/postgres-mcp)\n[![Docker Pulls](https://img.shields.io/docker/pulls/writenotenow/postgres-mcp)](https://hub.docker.com/r/writenotenow/postgres-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![MCP](https://img.shields.io/badge/MCP-Registry-green.svg)](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.neverinfamous/postgres-mcp)\n[![npm](https://img.shields.io/npm/v/@neverinfamous/postgres-mcp)](https://www.npmjs.com/package/@neverinfamous/postgres-mcp)\n[![Security](https://img.shields.io/badge/Security-Enhanced-green.svg)](https://github.com/neverinfamous/postgres-mcp/blob/main/SECURITY.md)\n![Status](https://img.shields.io/badge/status-Production%2FStable-brightgreen)\n[![TypeScript](https://img.shields.io/badge/TypeScript-Strict-blue.svg)](https://github.com/neverinfamous/postgres-mcp)\n[![E2E](https://github.com/neverinfamous/postgres-mcp/actions/workflows/e2e.yml/badge.svg)](https://github.com/neverinfamous/postgres-mcp/actions/workflows/e2e.yml)\n[![Tests](https://img.shields.io/badge/Tests-3750_passed-success.svg)](https://github.com/neverinfamous/postgres-mcp)\n[![Coverage](https://img.shields.io/badge/Coverage-85.29%25-green.svg)](https://github.com/neverinfamous/postgres-mcp)\n\n**[Docker Hub](https://hub.docker.com/r/writenotenow/postgres-mcp)** • **[npm Package](https://www.npmjs.com/package/@neverinfamous/postgres-mcp)** • **[MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.neverinfamous/postgres-mcp)** • **[Wiki](https://github.com/neverinfamous/postgres-mcp/wiki)** • **[Tool Reference](https://github.com/neverinfamous/postgres-mcp/wiki/Tool-Reference)** • **[Changelog](https://github.com/neverinfamous/postgres-mcp/blob/main/CHANGELOG.md)**\n\n## 🎯 What Sets Us Apart\n\n| Feature                             | Description                                                                                                                                                                                                         |\n| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **Code Mode (V8 Isolate)**          | **Massive Token Savings:** Execute complex, multi-step operations inside a secure, true V8 isolate (`worker_threads`). Stop burning tokens on back-and-forth tool calls and reduce your AI overhead by up to 90%.   |\n| **Deterministic Error Handling**    | No more cryptic database errors causing AI hallucinations. We intercept and translate raw SQL exceptions into clear, actionable advice so your agent knows exactly how to recover without guessing.                 |\n| **278 Token-Optimized Tools**       | The largest PostgreSQL toolset on the MCP registry. Every query uses zero-cost token estimation and smart dataset truncation, ensuring agents always see the big picture without blowing their context windows.     |\n| **OAuth 2.1 + Granular Control**    | Real enterprise security. Authenticate via OAuth 2.1 and control exactly who can read, write, or administer your database with precision scopes mapped down to the specific tool layer.                             |\n| **Audit Trails & Semantic Diffing** | Total accountability. Track exactly what your AI is doing with detailed JSON logs, automatically snapshot schemas before mutations, and confidently review semantic row-by-row diffs before restoring data.         |\n| **24 Resources & 21 Prompts**       | Instant database meta-awareness. Agents automatically read real-time health, performance, and replication metrics, and can invoke built-in prompt workflows for query tuning and schema design.                     |\n| **Introspection & Migrations**      | Prevent costly mistakes. Let your AI simulate the cascade impact of schema changes, safely order foreign-key updates, and track migration history automatically.                                                    |\n| **8 Extension Ecosystems**          | Ready for advanced workloads. First-class API support for **pgvector** (AI search), **PostGIS** (geospatial), **pg_cron**, **pgcrypto**, and more—all strictly typed and validated out of the box.                  |\n| **Smart Tool Filtering**            | Give your agent exactly what it needs without overflowing IDE limits. Dynamically compile your server with any combination of our 25 distinct tool groups.                                                          |\n| **Enterprise Infrastructure**       | Built for production. Blazing fast (millions of ops/sec), protected against SQL injection, features high-performance connection pooling, and supports both Streamable HTTP and Legacy SSE protocols simultaneously. |\n\n## Suggested Rule (Add to AGENTS.md, GEMINI.md, etc)\n\n**MCP TOKEN MANAGEMENT**:\n\n- **Token Visibility**: When interacting with `postgres-mcp`, always monitor the `_meta.tokenEstimate` (or `metrics.tokenEstimate` in Code Mode) returned in tool responses.\n- **Audit Resource**: Use the `postgres://audit` resource to review session-level token consumption and identify high-cost operations.\n- **Proactive Efficiency**: If operations are consuming high token counts, prefer code mode and proactively use `limit` parameters.\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- PostgreSQL 12-18 (tested with PostgreSQL 18.1)\n- **Docker** (recommended) or Node.js 24+ (LTS)\n\n### Docker (Recommended)\n\n```bash\ndocker pull writenotenow/postgres-mcp:latest\n```\n\nAdd to your `~/.cursor/mcp.json` or Claude Desktop config:\n\n```json\n{\n  \"mcpServers\": {\n    \"postgres-mcp\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"--rm\",\n        \"-i\",\n        \"-e\",\n        \"POSTGRES_HOST\",\n        \"-e\",\n        \"POSTGRES_PORT\",\n        \"-e\",\n        \"POSTGRES_USER\",\n        \"-e\",\n        \"POSTGRES_PASSWORD\",\n        \"-e\",\n        \"POSTGRES_DATABASE\",\n        \"writenotenow/postgres-mcp:latest\",\n        \"--tool-filter\",\n        \"codemode\",\n        \"--audit-log\",\n        \"/tmp/postgres-logs/audit.jsonl\"\n      ],\n      \"env\": {\n        \"POSTGRES_HOST\": \"host.docker.internal\",\n        \"POSTGRES_PORT\": \"5432\",\n        \"POSTGRES_USER\": \"your_username\",\n        \"POSTGRES_PASSWORD\": \"your_password\",\n        \"POSTGRES_DATABASE\": \"your_database\"\n      }\n    }\n  }\n}\n```\n\n> **Note for Docker**: Use `host.docker.internal` to connect to PostgreSQL running on your host machine.\n\n📖 **Full Docker guide:** [DOCKER_README.md](DOCKER_README.md) · [Docker Hub](https://hub.docker.com/r/writenotenow/postgres-mcp)\n\n### npm\n\n```bash\nnpm install -g @neverinfamous/postgres-mcp\npostgres-mcp --transport stdio --postgres postgres://user:password@localhost:5432/database\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/neverinfamous/postgres-mcp.git\ncd postgres-mcp\nnpm install\nnpm run build\nnode dist/cli.js --transport stdio --postgres postgres://user:password@localhost:5432/database\n```\n\n## Development\n\nSee **[From Source](#from-source)** above for setup. After cloning:\n\n```bash\nnpm run lint && npm run typecheck  # Run checks\nnpm run bench                      # Run performance benchmarks\nnode dist/cli.js info              # Test CLI\nnode dist/cli.js list-tools        # List available tools\n```\n\n### Benchmarks\n\nRun `npm run bench` to execute the performance benchmark suite (10 files, 93+ scenarios) powered by [Vitest Bench](https://vitest.dev/guide/features.html#benchmarking). Use `npm run bench:verbose` for detailed table output.\n\n**Performance Highlights** (Node.js 24, Windows 11):\n\n| Area                        | Benchmark                                | Throughput    |\n| --------------------------- | ---------------------------------------- | ------------- |\n| **Tool Dispatch**           | Map.get() single tool lookup             | ~6.9M ops/sec |\n| **WHERE Validation**        | Simple clause (combined regex fast-path) | ~3.7M ops/sec |\n| **Identifier Sanitization** | validateIdentifier()                     | ~4.4M ops/sec |\n| **Auth — Token Extraction** | extractBearerToken()                     | ~2.7M ops/sec |\n| **Auth — Scope Checking**   | hasScope()                               | ~5.3M ops/sec |\n| **Rate Limiting**           | Single IP check                          | ~2.3M ops/sec |\n| **Logger**                  | Filtered debug (no-op path)              | ~5.4M ops/sec |\n| **Schema Parsing**          | MigrationInitSchema.parse()              | ~2.1M ops/sec |\n| **Metadata Cache**          | Cache hit + miss pattern                 | ~1.7M ops/sec |\n| **Sandbox Creation**        | CodeModeSandbox.create() cold start      | ~863 ops/sec  |\n\n> Full benchmark results and methodology are available on the [Performance wiki page](https://github.com/neverinfamous/postgres-mcp/wiki/Performance).\n\n## 🔗 Database Connection Scenarios\n\n| Scenario                       | Host to Use                           | Example Connection String                         |\n| ------------------------------ | ------------------------------------- | ------------------------------------------------- |\n| **PostgreSQL on host machine** | `localhost` or `host.docker.internal` | `postgres://user:pass@localhost:5432/db`          |\n| **PostgreSQL in Docker**       | Container name or network             | `postgres://user:pass@postgres-container:5432/db` |\n| **Remote/Cloud PostgreSQL**    | Hostname or IP                        | `postgres://user:pass@db.example.com:5432/db`     |\n\n| Provider           | Example Hostname                                 |\n| ------------------ | ------------------------------------------------ |\n| AWS RDS PostgreSQL | `your-instance.xxxx.us-east-1.rds.amazonaws.com` |\n| Google Cloud SQL   | `project:region:instance` (via Cloud SQL Proxy)  |\n| Azure PostgreSQL   | `your-server.postgres.database.azure.com`        |\n| Supabase           | `db.xxxx.supabase.co`                            |\n| Neon               | `ep-xxx.us-east-1.aws.neon.tech`                 |\n\n### 🛠️ Tool Filtering\n\n> [!IMPORTANT]\n> All tool groups include **Code Mode** (`pg_execute_code`) by default. To exclude it, add `-codemode` to your filter: `--tool-filter cron,pgcrypto,-codemode`\n\n> **💡 Code Mode** (`--tool-filter codemode`) is the recommended configuration — it exposes `pg_execute_code`, a secure, true V8 isolate sandbox providing access to all 278 tools' worth of capability with up to 90% token savings. See [Tool Filtering](#%EF%B8%8F-tool-filtering) for alternatives.\n\n- **Requires `admin` OAuth scope** — execution is logged for audit\n\n**📖 [See Full Installation Guide →](https://github.com/neverinfamous/postgres-mcp#readme)**\n\n### What Can You Filter?\n\nThe `--tool-filter` argument accepts **groups** or **tool names** — mix and match freely:\n\n| Filter Pattern | Example                    | Description               |\n| -------------- | -------------------------- | ------------------------- |\n| Groups only    | `core,jsonb,transactions`  | Combine individual groups |\n| Tool names     | `pg_read_query,pg_explain` | Custom tool selection     |\n| Group + Tool   | `core,+pg_stat_statements` | Extend a group            |\n| Group - Tool   | `core,-pg_drop_table`      | Remove specific tools     |\n\n### Tool Groups (25 Available)\n\n| Group           | Tools | Description                                                           |\n| --------------- | ----- | --------------------------------------------------------------------- |\n| `codemode`      | 1     | Code Mode (sandboxed code execution) 🌟 **Recommended**               |\n| `core`          | 21    | Read/write queries, tables, indexes, convenience/drop tools           |\n| `transactions`  | 9     | BEGIN, COMMIT, ROLLBACK, savepoints, status                           |\n| `jsonb`         | 21    | JSONB manipulation, queries, and pretty-print                         |\n| `text`          | 14    | Full-text search, fuzzy matching                                      |\n| `performance`   | 25    | EXPLAIN, query analysis, optimization, diagnostics, anomaly detection |\n| `admin`         | 12    | VACUUM, ANALYZE, REINDEX, insights                                    |\n| `monitoring`    | 12    | Database sizes, connections, status                                   |\n| `backup`        | 13    | pg_dump, COPY, restore, audit backups                                 |\n| `schema`        | 13    | Schemas, views, sequences, functions, triggers                        |\n| `introspection` | 7     | Dependency graphs, cascade simulation, schema analysis                |\n| `migration`     | 7     | Schema migration tracking and management                              |\n| `partitioning`  | 7     | Native partition management                                           |\n| `stats`         | 20    | Statistical analysis, window functions, outlier detection             |\n| `vector`        | 17    | pgvector (AI/ML similarity search)                                    |\n| `postgis`       | 16    | PostGIS (geospatial)                                                  |\n| `cron`          | 9     | pg_cron (job scheduling)                                              |\n| `partman`       | 11    | pg_partman (auto-partitioning)                                        |\n| `kcache`        | 8     | pg_stat_kcache (OS-level stats)                                       |\n| `citext`        | 7     | citext (case-insensitive text)                                        |\n| `ltree`         | 9     | ltree (hierarchical data)                                             |\n| `pgcrypto`      | 10    | pgcrypto (encryption, UUIDs)                                          |\n| `security`      | 10    | Security auditing, SSL, firewall, data masking, privilege analysis    |\n| `roles`         | 13    | Role management, privileges, membership, RLS                          |\n| `docstore`      | 10    | JSONB document collections (NoSQL-style CRUD, indexing)               |\n\n### Syntax Reference\n\n| Prefix   | Target | Example          | Effect                                      |\n| -------- | ------ | ---------------- | ------------------------------------------- |\n| _(none)_ | Group  | `core`           | **Whitelist Mode:** Enable ONLY this group  |\n| _(none)_ | Tool   | `pg_read_query`  | **Whitelist Mode:** Enable ONLY this tool   |\n| `+`      | Group  | `+vector`        | Add tools from this group to current set    |\n| `-`      | Group  | `-admin`         | Remove tools in this group from current set |\n| `+`      | Tool   | `+pg_explain`    | Add one specific tool                       |\n| `-`      | Tool   | `-pg_drop_table` | Remove one specific tool                    |\n\n## 🌐 HTTP/SSE Transport (Remote Access)\n\nFor remote access, web-based clients, or HTTP-compatible MCP hosts, use the HTTP transport:\n\n```bash\nnode dist/cli.js \\\n  --transport http \\\n  --port 3000 \\\n  --postgres \"postgres://user:pass@localhost:5432/db\"\n```\n\n**Docker:**\n\n```bash\ndocker run --rm -p 3000:3000 \\\n  -e POSTGRES_URL=postgres://user:pass@host:5432/db \\\n  writenotenow/postgres-mcp:latest \\\n  --transport http --port 3000\n```\n\nThe server supports **two MCP transport protocols simultaneously**, enabling both modern and legacy clients to connect:\n\n### Streamable HTTP (Recommended)\n\nModern protocol (MCP 2025-03-26) — single endpoint, session-based:\n\n| Method   | Endpoint | Purpose                                          |\n| -------- | -------- | ------------------------------------------------ |\n| `POST`   | `/mcp`   | JSON-RPC requests (initialize, tools/list, etc.) |\n| `GET`    | `/mcp`   | SSE stream for server notifications              |\n| `DELETE` | `/mcp`   | Session termination                              |\n\nSessions are managed via the `Mcp-Session-Id` header.\n\n### Stateless Mode\n\nFor serverless/stateless deployments where sessions are not needed:\n\n```bash\nnode dist/cli.js --transport http --port 3000 --stateless --postgres \"postgres://...\"\n```\n\nIn stateless mode: `GET /mcp` returns 405, `DELETE /mcp` returns 204, `/sse` and `/messages` return 404. Each `POST /mcp` creates a fresh transport.\n\n### Legacy SSE (Backward Compatibility)\n\nLegacy protocol (MCP 2024-11-05) — for clients like Python `mcp.client.sse`:\n\n| Method | Endpoint                   | Purpose                                                       |\n| ------ | -------------------------- | ------------------------------------------------------------- |\n| `GET`  | `/sse`                     | Opens SSE stream, returns `/messages?sessionId=<id>` endpoint |\n| `POST` | `/messages?sessionId=<id>` | Send JSON-RPC messages to the session                         |\n\n### Utility Endpoints\n\n| Method | Endpoint  | Purpose                                                                |\n| ------ | --------- | ---------------------------------------------------------------------- |\n| `GET`  | `/health` | Health check (bypasses rate limiting, always available for monitoring) |\n\n## 🔐 Authentication\n\npostgres-mcp supports two authentication mechanisms for HTTP transport:\n\n### Simple Bearer Token (`--auth-token`)\n\nLightweight authentication for development or single-tenant deployments:\n\n```bash\nnode dist/cli.js --transport http --port 3000 --auth-token my-secret --postgres \"postgres://...\"\n\n# Or via environment variable\nexport MCP_AUTH_TOKEN=my-secret\nnode dist/cli.js --transport http --port 3000 --postgres \"postgres://...\"\n```\n\nClients must include `Authorization: Bearer my-secret` on all requests. `/health` and `/` are exempt. Unauthenticated requests receive `401` with `WWW-Authenticate: Bearer` headers per RFC 6750.\n\n### OAuth 2.1 (Enterprise)\n\nFull OAuth 2.1 with RFC 9728/8414 compliance for production multi-tenant deployments:\n\n```bash\nnode dist/cli.js \\\n  --transport http \\\n  --port 3000 \\\n  --postgres \"postgres://user:pass@localhost:5432/db\" \\\n  --oauth-enabled \\\n  --oauth-issuer http://localhost:8080/realms/postgres-mcp \\\n  --oauth-audience postgres-mcp-client\n```\n\n> **Additional flags:** `--oauth-jwks-uri <url>` (auto-discovered if omitted), `--oauth-clock-tolerance <seconds>` (default: 60).\n\n### OAuth Scopes\n\nAccess control is managed through OAuth scopes:\n\n| Scope                    | Access Level                        |\n| ------------------------ | ----------------------------------- |\n| `read`                   | Read-only queries (SELECT, EXPLAIN) |\n| `write`                  | Read + write operations             |\n| `admin`                  | Full administrative access          |\n| `full`                   | Grants all access                   |\n| `db:{name}`              | Access to specific database         |\n| `schema:{name}`          | Access to specific schema           |\n| `table:{schema}:{table}` | Access to specific table            |\n\n### RFC Compliance\n\nThis implementation follows:\n\n- **RFC 9728** — OAuth 2.1 Protected Resource Metadata\n- **RFC 8414** — OAuth 2.1 Authorization Server Metadata\n- **RFC 7591** — OAuth 2.1 Dynamic Client Registration\n\nThe server exposes metadata at `/.well-known/oauth-protected-resource`.\n\n> **Note for Keycloak users:** Add an **Audience mapper** to your client (Client → Client scopes → dedicated scope → Add mapper → Audience) to include the correct `aud` claim in tokens.\n\n> [!NOTE]\n> **Per-tool scope enforcement:** Scopes are enforced at the tool level — each tool group maps to a required scope (`read`, `write`, or `admin`). When OAuth is enabled, every tool invocation checks the calling token's scopes before execution. When OAuth is not configured, scope checks are skipped entirely.\n\n> [!WARNING]\n> **HTTP without authentication:** When using `--transport http` without enabling OAuth or `--auth-token`, all clients have full unrestricted access. Always enable authentication for production HTTP deployments. See [SECURITY.md](SECURITY.md) for details.\n\n> **Priority:** When both `--auth-token` and `--oauth-enabled` are set, OAuth 2.1 takes precedence. If neither is configured, the server warns and runs without authentication.\n\n## 🔧 Configuration\n\n### Environment Variables\n\n| Variable                     | Default     | Description                                                     | CLI Flag                       |\n| ---------------------------- | ----------- | --------------------------------------------------------------- | ------------------------------ |\n| `POSTGRES_HOST`              | `localhost` | Database host                                                   | `--host`                       |\n| `POSTGRES_PORT`              | `5432`      | Database port                                                   | `--pg-port`                    |\n| `POSTGRES_USER`              | `postgres`  | Database username                                               | `--user`                       |\n| `POSTGRES_PASSWORD`          | _(empty)_   | Database password                                               | `--password`                   |\n| `POSTGRES_DATABASE`          | `postgres`  | Database name                                                   | `--database`                   |\n| `POSTGRES_URL`               | —           | Connection string (overrides individual vars)                   | `--postgres`                   |\n| `MCP_HOST`                   | `localhost` | Server bind host (`0.0.0.0` for containers)                     | `--server-host`                |\n| `MCP_TRANSPORT`              | `stdio`     | Transport type: `stdio`, `http`, `sse`                          | `--transport`                  |\n| `PORT`                       | `3000`      | HTTP port for http/sse transports                               | `--port`                       |\n| `MCP_AUTH_TOKEN`             | —           | Simple bearer token for HTTP auth                               | `--auth-token`                 |\n| `LOG_LEVEL`                  | `info`      | Log level: `debug`, `info`, `warning`, `error`                  | `--log-level`                  |\n| `METADATA_CACHE_TTL_MS`      | `30000`     | Schema cache TTL (ms)                                           | —                              |\n| `POSTGRES_TOOL_FILTER`       | —           | Tool filter string (also `MCP_TOOL_FILTER`)                     | `--tool-filter`                |\n| `MCP_RATE_LIMIT_MAX`         | `100`       | Rate limit per IP per 15min window                              | —                              |\n| `MCP_REQUEST_TIMEOUT`        | `300000`    | HTTP request timeout (ms) for Slowloris protection              | —                              |\n| `MCP_HEADERS_TIMEOUT`        | `60000`     | HTTP headers timeout (ms)                                       | —                              |\n| `TRUST_PROXY`                | `false`     | Trust X-Forwarded-For for client IP                             | `--trust-proxy`                |\n| `OAUTH_ENABLED`              | `false`     | Enable OAuth 2.1 authentication                                 | `--oauth-enabled`              |\n| `OAUTH_ISSUER`               | —           | Authorization server URL                                        | `--oauth-issuer`               |\n| `OAUTH_AUDIENCE`             | —           | Expected token audience                                         | `--oauth-audience`             |\n| `OAUTH_JWKS_URI`             | _(auto)_    | JWKS URI (auto-discovered from issuer)                          | `--oauth-jwks-uri`             |\n| `OAUTH_CLOCK_TOLERANCE`      | `60`        | Clock tolerance in seconds                                      | `--oauth-clock-tolerance`      |\n| `AUDIT_LOG_PATH`             | —           | Audit log file path (`stderr` for container logs)               | `--audit-log`                  |\n| `AUDIT_REDACT`               | `false`     | Omit tool arguments from audit entries                          | `--audit-redact`               |\n| `AUDIT_BACKUP`               | `false`     | Enable pre-mutation DDL snapshots                               | `--audit-backup`               |\n| `AUDIT_BACKUP_DATA`          | `false`     | Include sample data rows in snapshots                           | `--audit-backup-data`          |\n| `AUDIT_BACKUP_MAX_AGE`       | `30`        | Maximum snapshot age in days                                    | `--audit-backup-max-age`       |\n| `AUDIT_BACKUP_MAX_COUNT`     | `1000`      | Maximum number of snapshots to retain                           | `--audit-backup-max-count`     |\n| `AUDIT_BACKUP_MAX_DATA_SIZE` | `52428800`  | Maximum table size for data capture (bytes)                     | `--audit-backup-max-data-size` |\n| `AUDIT_READS`                | `false`     | Log read-scoped tool calls (compact entries)                    | `--audit-reads`                |\n| `AUDIT_LOG_MAX_SIZE`         | `10485760`  | Max log file size before rotation (bytes). Keeps up to 5 files. | `--audit-log-max-size`         |\n\n> **Aliases:** `PGHOST`, `PGPORT`, `PGUSER`, `PGPASSWORD`, `PGDATABASE` are also supported (standard PostgreSQL client env vars).\n\n> **Pool Tuning for IAM Auth:** For cloud-managed databases with IAM authentication (e.g., AWS RDS, Google Cloud SQL), use `--pool-max` to control pool size.\n\n### CLI Reference\n\n| Flag                                   | Description                                                                                                                                       |\n| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `--postgres <url>`                     | Connection string                                                                                                                                 |\n| `--host <host>`                        | PostgreSQL host                                                                                                                                   |\n| `--pg-port <port>`                     | PostgreSQL port                                                                                                                                   |\n| `--user <user>`                        | Username                                                                                                                                          |\n| `--password <pw>`                      | Password (prefer `PGPASSWORD`)                                                                                                                    |\n| `--database <db>`                      | Database name                                                                                                                                     |\n| `--ssl`                                | Enable SSL                                                                                                                                        |\n| `--pool-max <n>`                       | Max pool connections (default: 10)                                                                                                                |\n| `--transport <type>`                   | `stdio` \\| `http` \\| `sse`                                                                                                                        |\n| `--port <n>`                           | HTTP port                                                                                                                                         |\n| `--server-host <host>`                 | Server bind host                                                                                                                                  |\n| `--auth-token <token>`                 | Simple bearer token for HTTP auth                                                                                                                 |\n| `--stateless`                          | Stateless HTTP mode (no sessions, no SSE)                                                                                                         |\n| `--tool-filter <filter>`               | Tool filter string                                                                                                                                |\n| `--log-level <level>`                  | Log verbosity                                                                                                                                     |\n| `--oauth-enabled`                      | Enable OAuth 2.1                                                                                                                                  |\n| `--trust-proxy`                        | Trust reverse proxy headers                                                                                                                       |\n| `--audit-log <path>`                   | Enable JSONL audit trail (`stderr` for container logs)                                                                                            |\n| `--audit-redact`                       | Omit tool arguments from audit entries                                                                                                            |\n| `--audit-backup`                       | Enable pre-mutation DDL snapshots                                                                                                                 |\n| `--audit-backup-data`                  | Include sample data rows in snapshots                                                                                                             |\n| `--audit-backup-max-age <days>`        | Maximum snapshot age in days (default: 30)                                                                                                        |\n| `--audit-backup-max-count <count>`     | Maximum number of snapshots to retain (default: 1000)                                                                                             |\n| `--audit-backup-max-data-size <bytes>` | Maximum table size for data capture (default: 52428800)                                                                                           |\n| `--audit-reads`                        | Log read-scoped tool calls (compact entries)                                                                                                      |\n| `--audit-log-max-size <bytes>`         | Max log file size before rotation (default: 10MB). System retains up to 5 rotated historical archives before oldest deletion (`.1` through `.5`). |\n\n## 🤖 AI-Powered Prompts\n\nPrompts provide step-by-step guidance for complex database tasks. Instead of figuring out which tools to use and in what order, simply invoke a prompt and follow its workflow — great for learning PostgreSQL best practices or automating repetitive DBA tasks.\n\nThis server includes **21 intelligent prompts** for guided workflows:\n\n| Prompt                     | Description                                        | Required Groups               |\n| -------------------------- | -------------------------------------------------- | ----------------------------- |\n| `pg_query_builder`         | Construct queries with CTEs and window functions   | core                          |\n| `pg_schema_design`         | Design schemas with constraints and indexes        | core                          |\n| `pg_performance_analysis`  | Analyze queries with EXPLAIN and optimization      | core, performance             |\n| `pg_migration`             | Generate migration scripts with rollback support   | core                          |\n| `pg_tool_index`            | Lazy hydration - compact index of all tools        | —                             |\n| `pg_quick_query`           | Quick SQL query guidance for common operations     | core                          |\n| `pg_quick_schema`          | Quick reference for exploring database schema      | core                          |\n| `pg_database_health_check` | Comprehensive database health assessment           | core, performance, monitoring |\n| `pg_backup_strategy`       | Enterprise backup planning with RTO/RPO            | core, monitoring, backup      |\n| `pg_index_tuning`          | Index analysis and optimization workflow           | core, performance             |\n| `pg_extension_setup`       | Extension installation and configuration guide     | core                          |\n| `pg_setup_pgvector`        | Complete pgvector setup for semantic search        | core, vector                  |\n| `pg_setup_postgis`         | Complete PostGIS setup for geospatial operations   | core, postgis                 |\n| `pg_setup_pgcron`          | Complete pg_cron setup for job scheduling          | core                          |\n| `pg_setup_partman`         | Complete pg_partman setup for partition management | core, partman                 |\n| `pg_setup_kcache`          | Complete pg_stat_kcache setup for OS monitoring    | core, kcache                  |\n| `pg_setup_citext`          | Complete citext setup for case-insensitive text    | core, citext                  |\n| `pg_setup_ltree`           | Complete ltree setup for hierarchical data         | core, ltree                   |\n| `pg_setup_pgcrypto`        | Complete pgcrypto setup for cryptographic funcs    | core, pgcrypto                |\n| `pg_safe_restore_workflow` | 6-step safe restore playbook with `restoreAs`      | backup                        |\n| `pg_setup_docstore`        | Complete docstore setup for document collections   | core, docstore                |\n\n## 📦 Resources\n\nResources give you instant snapshots of database state without writing queries. Perfect for quickly checking schema, health, or performance metrics — the AI can read these to understand your database context before suggesting changes.\n\nThis server provides **24 resources** for structured data access:\n\n| Resource     | URI                       | Description                                        |\n| ------------ | ------------------------- | -------------------------------------------------- |\n| Schema       | `postgres://schema`       | Full database schema                               |\n| Tables       | `postgres://tables`       | Table listing with sizes                           |\n| Settings     | `postgres://settings`     | PostgreSQL configuration                           |\n| Statistics   | `postgres://stats`        | Database statistics with stale detection           |\n| Activity     | `postgres://activity`     | Current connections                                |\n| Pool         | `postgres://pool`         | Connection pool status                             |\n| Capabilities | `postgres://capabilities` | Server version, extensions, tool categories        |\n| Performance  | `postgres://performance`  | pg_stat_statements query metrics                   |\n| Health       | `postgres://health`       | Comprehensive database health status               |\n| Extensions   | `postgres://extensions`   | Extension inventory with recommendations           |\n| Indexes      | `postgres://indexes`      | Index usage with unused detection                  |\n| Replication  | `postgres://replication`  | Replication status and lag monitoring              |\n| Vacuum       | `postgres://vacuum`       | Vacuum stats and wraparound warnings               |\n| Locks        | `postgres://locks`        | Lock contention detection                          |\n| Cron         | `postgres://cron`         | pg_cron job status and execution history           |\n| Partman      | `postgres://partman`      | pg_partman partition configuration and health      |\n| Kcache       | `postgres://kcache`       | pg_stat_kcache CPU/I/O metrics summary             |\n| Vector       | `postgres://vector`       | pgvector columns, indexes, and recommendations     |\n| PostGIS      | `postgres://postgis`      | PostGIS spatial columns and index status           |\n| Crypto       | `postgres://crypto`       | pgcrypto availability and security recommendations |\n| Insights     | `postgres://insights`     | AI-appended business insights and observations     |\n| Audit        | `postgres://audit`        | Audit trail with token summary and top tools       |\n| Help         | `postgres://help/{group}` | Group-specific help and workflow documentation     |\n| Docstore     | `postgres://docstore`     | JSONB document collection overview                 |\n\n## 🔧 Extension Support\n\n| Extension            | Purpose                        | Tools                      |\n| -------------------- | ------------------------------ | -------------------------- |\n| `pg_stat_statements` | Query performance tracking     | `pg_stat_statements`       |\n| `pg_trgm`            | Text similarity                | `pg_trigram_similarity`    |\n| `fuzzystrmatch`      | Fuzzy matching                 | `pg_fuzzy_match`           |\n| `hypopg`             | Hypothetical indexes           | `pg_index_recommendations` |\n| `pgvector`           | Vector similarity search       | 16 vector tools            |\n| `PostGIS`            | Geospatial operations          | 15 postgis tools           |\n| `pg_cron`            | Job scheduling                 | 8 cron tools               |\n| `pg_partman`         | Automated partition management | 10 partman tools           |\n| `pg_stat_kcache`     | OS-level CPU/memory/I/O stats  | 7 kcache tools             |\n| `citext`             | Case-insensitive text          | 6 citext tools             |\n| `ltree`              | Hierarchical tree labels       | 8 ltree tools              |\n| `pgcrypto`           | Hashing, encryption, UUIDs     | 9 pgcrypto tools           |\n\n> Extension tools gracefully handle cases where extensions are not installed. Extension tool counts include `create_extension` helpers but exclude Code Mode; the [Tool Groups](#-tool-filtering) table above adds +1 per group for Code Mode.\n\n## Contributing\n\nContributions are welcome! Please read our [Contributing Guidelines](CONTRIBUTING.md) before submitting a pull request.\n\n## Security\n\nFor security concerns, please see our [Security Policy](SECURITY.md).\n\n> **⚠️ Never commit credentials** - Store secrets in environment variables\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Code of Conduct\n\nPlease read our [Code of Conduct](CODE_OF_CONDUCT.md) before participating in this project.\n","readmeFilename":"README.md"}