PostgreSQL MCP Server
Provides read-only access to PostgreSQL databases, allowing execution of SELECT/WITH queries and schema exploration (listing schemas, tables, columns).
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., "@PostgreSQL MCP ServerList all tables in the public schema."
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.
db-mcp (PostgreSQL)
MCP server in JavaScript: PostgreSQL over stdio, read-only tools (SELECT / WITH) plus schema helpers.
Repo layout
Path | What |
| MCP server (stdio) |
|
|
| Optional Next.js UI + Express API + Gemini — spawns this MCP per request ( |
Root package.json deps: @modelcontextprotocol/sdk, pg, zod, dotenv.
Related MCP server: Enterprise PostgreSQL MCP Server
Requirements
Node.js 18+
PostgreSQL and a
DATABASE_URL
Install (MCP server)
cd db-mcp
npm installCopy .env.example → .env in repo root (next to root package.json). Set DATABASE_URL. Do not commit .env.
src/index.js loads that .env via dotenv using path repo root (derived from import.meta.url), so Cursor can run node …/src/index.js with any cwd. Vars already in the real environment are not overwritten.
Alternatively: export DATABASE_URL in the shell, or set env in Cursor MCP config (those win over .env).
Configuration (MCP)
Variable | Required | Description |
| Yes | URI, e.g. |
| No | Statement timeout in ms (default |
Connection startup uses libpq -c default_transaction_read_only=on and -c statement_timeout=… (see src/pool.js). Prefer a read-only DB role in production.
Run MCP (stdio)
npm startPowerShell (if not using .env):
$env:DATABASE_URL = "postgresql://USER:PASSWORD@HOST:5432/DBNAME"
npm startCursor / Claude Desktop
Point command + args at src/index.js. Pass DATABASE_URL in env if you do not rely on root .env.
Cursor (mcp.json):
{
"mcpServers": {
"postgres": {
"command": "node",
"args": ["C:/Users/YourUser/Desktop/db-mcp/src/index.js"],
"env": {
"DATABASE_URL": "postgresql://USER:PASSWORD@localhost:5432/mydb"
}
}
}
}Use a real absolute path. Reload MCP after edits.
How to test
Method | What you do |
Cursor | Agent (or chat with tools). Natural language, e.g. “List |
|
|
Playground | Browser UI: Gemini drives same MCP over stdio. |
If tools never show: MCP disconnected in UI, or chat mode has no tool use.
Tools
Tool | Purpose |
| Non-system schemas |
| Tables/views in a schema (default |
| Columns for a table or view |
| Single |
pg_query: no multi-statement (; only at end); must start with SELECT or WITH.
Security
DATABASE_URL= secret; least-privilege role.Read-only intent; DB should still enforce if
default_transaction_read_onlybypassed.LLM + SQL = cost + data exposure risk; tight timeouts, read replica when possible.
Playground = local dev only; do not expose API without auth.
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.
Latest Blog Posts
- 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/harshit-wadhwa/db-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server