mcp-postgresql
A production-oriented MCP server that enables interaction with PostgreSQL databases, providing tools for query execution and schema introspection:
execute_query: Run any SQL statement (SELECT,INSERT,UPDATE,DELETE) and receive result rows or the affected row count.list_tables: Discover all tables in the current database, with an optional filter by schema name.describe_table: Inspect a table's full structure — column names, data types, nullability, default values, and primary key markers.list_databases: Retrieve all PostgreSQL databases available on the connected server.get_table_indexes: View all indexes on a specific table, including their definitions and uniqueness/primary key flags.get_foreign_keys: Discover all foreign key constraints on a table, including referenced target tables and columns.
Provides tools to execute SQL queries, list tables, describe table schemas, list databases, get table indexes, and foreign keys for a PostgreSQL database.
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., "@mcp-postgresqllist 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.
mcp-postgresql
Production-oriented MCP server for PostgreSQL, exposing database operations to MCP clients (Claude Desktop, VS Code Copilot, Cursor, and compatible hosts).
Features
Query execution (
SELECT,INSERT,UPDATE,DELETE)Database discovery and schema introspection
Table metadata inspection (columns, types, nullability, defaults, PK)
Index and foreign key discovery
Environment-driven configuration for secure deployment
Related MCP server: Database MCP Server
Available Tools
Tool | Description |
| Executes a SQL statement and returns rows or affected row count |
| Lists tables from |
| Returns table column metadata and primary key markers |
| Lists all PostgreSQL databases |
| Lists table indexes with definitions and PK/unique flags |
| Lists table foreign keys and referenced targets |
Requirements
Node.js 18+
Access to a PostgreSQL instance
Network connectivity from MCP host to PostgreSQL (
host:port)
Configuration
Set connection settings using environment variables:
Variable | Required | Default | Description |
| No |
| PostgreSQL host or IP |
| No |
| PostgreSQL TCP port |
| No |
| Default database |
| Yes | — | Database user |
| Yes | — | Database password |
| No |
| Enables SSL/TLS |
| No |
| Max pool connections |
| No |
| Pool idle timeout (ms) |
| No |
| Transport mode: |
| No |
| Port for the HTTP server (only used when |
| No |
| Bind address for the HTTP server (only used when |
Usage
Run directly from GitHub
npx github:ferronicardoso/mcp-postgresqlClaude Desktop configuration
%APPDATA%\\Claude\\claude_desktop_config.json:
{
"mcpServers": {
"postgresql": {
"command": "npx",
"args": ["github:ferronicardoso/mcp-postgresql"],
"env": {
"PGHOST": "localhost",
"PGPORT": "5432",
"PGDATABASE": "postgres",
"PGUSER": "postgres",
"PGPASSWORD": "your-password"
}
}
}
}VS Code MCP configuration
.vscode/mcp.json:
{
"servers": {
"postgresql": {
"command": "npx",
"args": ["github:ferronicardoso/mcp-postgresql"],
"env": {
"PGHOST": "localhost",
"PGPORT": "5432",
"PGDATABASE": "postgres",
"PGUSER": "postgres",
"PGPASSWORD": "your-password"
}
}
}
}Run with Docker (HTTP transport)
The published image runs in Streamable HTTP mode by default, for use as a remote MCP endpoint (e.g. from n8n's MCP Client Tool node or any Streamable HTTP-compatible client):
docker run -d --name mcp-postgresql \
-p 3002:3002 \
-e PGHOST=host.docker.internal \
-e PGPORT=5432 \
-e PGDATABASE=postgres \
-e PGUSER=postgres \
-e PGPASSWORD=your-password \
ghcr.io/ferronicardoso/mcp-postgresql:latestThe MCP endpoint is then available at http://localhost:3002/mcp.
Local Development
git clone https://github.com/ferronicardoso/mcp-postgresql
cd mcp-postgresql
npm install
npm run buildStart the compiled server:
npm startBuild and Commit Workflow
This repository intentionally tracks dist/ to support npx github:user/repo usage.
The project uses a Husky pre-commit hook to:
build TypeScript (
npm run build)stage generated artifacts (
git add dist)
Manual fallback:
npm run build
git add distSecurity Notes
Never commit real credentials or
.envfiles.Prefer least-privilege database users for production use.
For public or untrusted networks, enable encryption (
PGSSL=true) and configure certificates appropriately.
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/ferronicardoso/mcp-postgresql'
If you have feedback or need assistance with the MCP directory API, please join our Discord server