Overview
What is PostgreSQL?
A Model Context Protocol server that provides read‑only access to PostgreSQL databases. It enables LLMs to inspect database schemas and execute read‑only SQL queries against a connected PostgreSQL instance.
How to use PostgreSQL?
Configure the server in the mcpServers section of claude_desktop_config.json. Use either Docker (docker run -i --rm mcp/postgres postgresql://...) or NPX (npx -y @modelcontextprotocol/server-postgres). Provide a PostgreSQL connection URL, optionally including username and password.
Key features of PostgreSQL?
- Execute read‑only SQL queries via the
querytool. - Automatically discover and expose JSON table schemas.
- Schemas include column names and data types.
- All queries run inside a READ ONLY transaction.
- Supports Docker and NPX deployment.
- MIT licensed.
Use cases of PostgreSQL?
- Let an LLM explore a live PostgreSQL database schema.
- Run safe, read‑only analytical queries from a chat interface.
- Allow users to ask natural‑language questions about database content.
- Provide schema context to AI agents for generating accurate SQL.
FAQ from PostgreSQL
What type of queries does this server support?
Only read‑only SQL queries. All executions are wrapped in a READ ONLY transaction to prevent modifications.
How do I connect to a PostgreSQL database running on my local machine?
When using Docker on macOS, use host.docker.internal as the host in the connection URL. For example: postgresql://host.docker.internal:5432/mydb. Replace /mydb with your database name.
Can I include credentials in the connection URL?
Yes. Use the full PostgreSQL URI format: postgresql://user:password@host:port/db‑name.
What information does the server expose as resources?
For each table, a JSON schema resource (postgres://<host>/<table>/schema) is provided, containing column names and data types, automatically discovered from database metadata.
How do I run the server without Docker?
Use the NPX method: set the command to npx with arguments -y @modelcontextprotocol/server-postgres followed by your connection string.