PostgreSQL MCP Server
assadnasser
README
PostgreSQL MCP Server
A Model Context Protocol (MCP) server that allows users to connect to PostgreSQL databases. This server exposes resources, tools, and prompts for interacting with PostgreSQL databases through the MCP protocol.
Overview
This MCP server allows external applications to share database credentials with the server via POST requests to an SSE (Server-Sent Events) endpoint. The server then establishes a connection to the specified PostgreSQL database and provides various ways to interact with it.
Architecture
The server follows a modular architecture with clear separation of concerns:
- Server Core - Handles MCP protocol implementation and coordination
- Resources - Provide data and metadata about database entities
- Tools - Implement database operations and actions
- Prompts - Define natural language interface templates
The code is organized into these main directories:
src/
├── resources/ # Database schema, table structure, query history resources
├── tools/ # Database operations (queries, connections, table management)
├── prompts/ # Natural language templates for database operations
├── server.ts # Main MCP server implementation and configuration
├── database.ts # Database connection and query handling
└── query-history.ts # Query history tracking and storage
Features
-
Database Connections
- Secure PostgreSQL connections with connection pooling
- SSL support for encrypted connections
- Connection validation
-
Query Execution
- SQL query execution with parameter binding
- Query history tracking
- Statistics collection
-
Schema Management
- Table listing and description
- Column metadata with types, constraints, and descriptions
- Primary key, foreign key, and index information
-
Database Analytics
- Database size information
- Current database activity monitoring
- Query performance tracking
-
Security
- API rate limiting
- CORS support and secure headers
-
Server Features
- Graceful shutdown handling
- Cross-origin resource sharing (CORS) support
Installation
# Clone the repository
git clone https://github.com/yourusername/db-mcp-server.git
cd db-mcp-server
# Install dependencies
npm install
# Install TypeScript type definitions
npm install --save-dev @types/uuid @types/redis
# Create a .env file based on the example
cp .env.example .env
# Edit the .env file with your configuration
Development
# Start the development server
npm run dev
# Build the project
npm run build
Deployment to Vercel
The server is fully compatible with Vercel deployment:
# Install Vercel CLI
npm install -g vercel
# Deploy to Vercel
vercel
# Deploy to production
vercel --prod
Environment Variables
Variable | Description | Default |
---|---|---|
PORT | Server port | 3000 |
NODE_ENV | Environment mode | development |
REDIS_URL | Redis connection URL | none (uses in-memory storage) |
PGHOST | PostgreSQL host | localhost |
PGUSER | PostgreSQL user | postgres |
PGDATABASE | PostgreSQL database | postgres |
PGPASSWORD | PostgreSQL password | password |
PGPORT | PostgreSQL port | 5432 |
API Endpoints
GET /health
: Health check endpointGET /sse
: SSE endpoint for MCP communicationPOST /messages
: Message endpoint for client-to-server communication
Using the MCP Server
MCP Capabilities
This MCP server exposes the following capabilities:
Resources
-
db-schema
Gets the database schema information.
URI template:
schema://{connectionId}
-
table-structure
Gets the structure of a specific table.
URI template:
table://{connectionId}/{schema}/{table}
-
query-history
Gets the history of executed queries.
URI template:
history://{connectionId}
-
postgres-schema
Gets schema information for one or all tables.
URI template:
postgres://{host}/{table}/schema
Tools
-
test-connection
Tests a connection to a PostgreSQL database.
Parameters:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (optional)
-
query
Executes a SQL query on a PostgreSQL database.
Parameters:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (optional)
- query: string
- params: any[] (optional)
-
list-tables
Lists tables in a PostgreSQL database.
Parameters:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (optional)
-
describe-table
Describes the schema of a table in a PostgreSQL database.
Parameters:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (optional)
- tableName: string
- schemaName: string (optional)
-
get-database-stats
Gets statistics about a PostgreSQL database.
Parameters:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (optional)
-
get-query-history
Gets the history of executed queries.
Parameters:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (optional)
- limit: number (optional)
-
clear-query-history
Clears the query history for a database connection.
Parameters:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (optional)
Prompts
-
generate-query
Generates a SQL query based on a description.
Parameters:
- description: string
- tables: string
- dbType: string (optional, default: 'postgresql')
-
analyze-query
Analyzes a SQL query for performance and issues.
Parameters:
- query: string
- dbType: string (optional, default: 'postgresql')
-
explain-schema
Explains a database schema in natural language.
Parameters:
- schemaJson: string
Storage Implementations
The server provides dual implementation for storage components:
Query History
- In-memory storage: Used in development
- Redis storage: Used in production when REDIS_URL is provided
Testing with MCP Inspector
You can use the MCP Inspector to test your server:
# Install the MCP Inspector
npm install -g @modelcontextprotocol/inspector
# Start the inspector
mcp-inspector --server-url http://localhost:3000
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
MCP Package Docs Server
Facilitates LLMs to efficiently access and fetch structured documentation for packages in Go, Python, and NPM, enhancing software development with multi-language support and performance optimization.
Claude Code MCP
An implementation of Claude Code as a Model Context Protocol server that enables using Claude's software engineering capabilities (code generation, editing, reviewing, and file operations) through the standardized MCP interface.
@kazuph/mcp-taskmanager
Model Context Protocol server for Task Management. This allows Claude Desktop (or any MCP client) to manage and execute tasks in a queue-based system.
Linear MCP Server
Enables interaction with Linear's API for managing issues, teams, and projects programmatically through the Model Context Protocol.
mermaid-mcp-server
A Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images.
Jira-Context-MCP
MCP server to provide Jira Tickets information to AI coding agents like Cursor

Linear MCP Server
A Model Context Protocol server that integrates with Linear's issue tracking system, allowing LLMs to create, update, search, and comment on Linear issues through natural language interactions.

Sequential Thinking MCP Server
This server facilitates structured problem-solving by breaking down complex issues into sequential steps, supporting revisions, and enabling multiple solution paths through full MCP integration.