Uses .ENV files to load database credentials from environment variables, with fallback to shell configuration files when needed.
Runs on Node.js runtime environment to implement the MCP server, with configuration options for credentials management and verbose logging.
Connects to a PostgreSQL database via MCP, allowing AI models to execute SQL queries with retry logic, view database schema information, and interact with database tables while handling connection errors gracefully.
Model Context Protocol PostgreSQL Server
This project implements a Model Context Protocol (MCP) server that connects to a PostgreSQL database. It allows AI models to interact with your database through a standardized protocol.
Features
Connects to a PostgreSQL database using connection pooling
Implements the Model Context Protocol for AI model interaction
Provides database schema information as resources
Allows executing SQL queries with retry logic
Handles connection errors gracefully
Prerequisites
Node.js 20 or higher
PostgreSQL database
Access credentials for the database
Installation
Clone this repository
Install dependencies:
Configuration
The server reads database credentials from a .env
file in the project root directory. You need to add your database credentials as a JSON string in the DB_CREDENTIALS
environment variable:
Create a
.env
file in the project root:
Add the following line with your actual database credentials:
Fallback to Shell Config Files
If the .env
file is not present or the credentials variable is not found, the server will automatically look for the credentials in your shell configuration files in the following order:
~/.zshrc
~/.bashrc
~/.bash_profile
~/.profile
This is especially useful in environments where shell config files are not automatically sourced, such as the Cursor MCP environment.
To set up credentials in any of your shell config files:
Open your preferred shell config file, for example:
Add the following line with your actual database credentials:
The server will automatically detect and use these credentials when the .env
file is not available.
Custom Credentials Variable
You can also use a custom environment variable name instead of DB_CREDENTIALS
by using the --credentials-var
flag when starting the server:
In this case, you would define MY_CUSTOM_DB_CREDS
in your .env
file instead.
Combining Options
You can combine different command-line options as needed:
Usage
Start the MCP server:
Logging Options
By default, the server runs in silent mode, displaying only error messages. If you want to see all log messages, you can use the verbose flag:
You can also use the short flag -v
:
The server will:
Test the database connection
Start the MCP server using stdio transport
Handle requests from AI models
Integration with Cursor
This server supports the Model Context Protocol (MCP) and integrates with Cursor AI.
Automatic Configuration
This project includes a pre-configured .cursor/mcp.json
file for automatic setup within Cursor.
Manual Configuration
To manually add this server to Cursor:
Go to Cursor Settings → Features → MCP
Click "+ Add New MCP Server"
Enter the following details:
Name: Postgres MCP
Type: stdio
Command:
node /full/path/to/server.js
For more information on MCP integration with Cursor, see the official documentation.
Available Tools
The server provides the following tools to AI models:
query
: Execute SQL queries with retry logic
Resources
The server exposes database tables as resources, allowing AI models to:
List all tables in the database
View schema information for each table
Error Handling
The server includes:
Connection retry logic
Detailed error logging
Graceful shutdown handling
Troubleshooting
Connection Issues
Database Connection Failed
Check if PostgreSQL is running:
pg_isready -h localhost -p 5433
Verify your credentials in the
.env
file are correctMake sure your IP address has access to the database (check pg_hba.conf)
Try connecting with another tool like
psql
to verify credentials
Environment Variable Problems
Make sure your
.env
file is in the project root directoryCheck that the JSON structure in
DB_CREDENTIALS
is validVerify there are no extra spaces or line breaks in the JSON string
Test with:
node -e "console.log(JSON.parse(process.env.DB_CREDENTIALS))" < .env
Node.js Version Issues
Check your Node.js version:
node -v
This server requires Node.js 20+
If using an older version, install Node.js 20:
nvm install 20 && nvm use 20
Cursor Integration
Server Not Showing in Cursor
Make sure the
.cursor/mcp.json
file exists and is properly formattedTry restarting Cursor to detect the project-specific configuration
Check Cursor logs for any error messages
"Failed to create client" Error
This usually indicates the server crashed during startup
Run the server manually with verbose logging to see the error:
node server.js -v
Check if the database credentials are accessible in the Cursor environment
No Tools Available in Cursor
Ensure the server is running properly (check logs)
Try clicking the refresh button in the MCP tool panel
Restart Cursor and try again
PostgreSQL Specific Issues
Permission Denied Errors
Make sure the database user has appropriate permissions for the tables
Try granting required permissions:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO username;
"Relation does not exist" Errors
Verify that the table exists:
\dt tablename
in psqlCheck if you're connecting to the correct database
Ensure the user has access to the schema where the table is located
Performance Issues
Large query results may cause lag, consider adding LIMIT clauses
Check if your database needs optimization (indexes, vacuuming)
For additional help, you can run the server with verbose logging (-v
flag) to see detailed error messages and operation logs.
License
MIT
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
A server that allows AI models to interact with PostgreSQL databases through a standardized protocol, providing database schema information and SQL query execution capabilities.
- Features
- Prerequisites
- Installation
- Configuration
- Usage
- Integration with Cursor
- Available Tools
- Resources
- Error Handling
- Troubleshooting
- License
Related Resources
Related MCP Servers
- AsecurityAlicenseAqualityThis server enables AI models to interact with MySQL databases through a standardized interface.Last updated -310110MIT License
- -securityAlicense-qualityA server that enables AI models to interact with MySQL databases through a Model Control Protocol, providing tools for table creation, schema inspection, query execution, and data retrieval.Last updated -27MIT License
- AsecurityAlicenseAqualityEnables AI models to interact with PostgreSQL databases through a standardized interface, supporting operations like queries, table manipulation, and schema inspection.Last updated -62106MIT License
- -securityAlicense-qualityEnables AI agents to interact with PostgreSQL databases through the Model Context Protocol, providing database schema exploration, table structure inspection, and SQL query execution capabilities.Last updated -15MIT License