Skip to main content
Glama

PostgreSQL MCP Server

by sbfulfil
README.md4.8 kB
# PostgreSQL MCP Server A Model Context Protocol (MCP) server that provides access to PostgreSQL database schemas and metadata. This server allows Cursor and other MCP-compatible tools to explore your database structure, inspect table schemas, and understand relationships. ## Features - **List Tables**: Get all tables in a schema with basic information - **Describe Table**: Get detailed column information for any table - **Table Relationships**: Explore foreign key relationships - **List Schemas**: See all available schemas in your database - **Index Information**: View indexes for specific tables ## Prerequisites - Node.js 18+ - PostgreSQL database (local or remote) - npm or yarn package manager ## Installation 1. **Clone or download this repository** 2. **Install dependencies**: ```bash npm install ``` 3. **Configure database connection**: ```bash cp config.env.example .env ``` Edit the `.env` file with your PostgreSQL connection details: ```env DB_HOST=localhost DB_PORT=5432 DB_NAME=your_database_name DB_USER=your_username DB_PASSWORD=your_password ``` 4. **Test the server** (optional): ```bash npm start ``` ## Cursor Integration To use this MCP server with Cursor, you need to add it to your Cursor configuration. ### Step 1: Add to Cursor MCP Configuration Open Cursor and go to Settings → Features → Model Context Protocol, or edit your MCP configuration file directly. Add the following configuration: ```json { "mcpServers": { "postgres-schema": { "command": "node", "args": ["/absolute/path/to/pg_mcp/src/index.js"], "env": { "DB_HOST": "localhost", "DB_PORT": "5432", "DB_NAME": "your_database_name", "DB_USER": "your_username", "DB_PASSWORD": "your_password" } } } } ``` **Important**: Replace `/absolute/path/to/pg_mcp/src/index.js` with the actual absolute path to your `src/index.js` file. ### Step 2: Alternative Configuration (Using .env file) If you prefer to use the `.env` file for configuration: ```json { "mcpServers": { "postgres-schema": { "command": "node", "args": ["/absolute/path/to/pg_mcp/src/index.js"], "cwd": "/absolute/path/to/pg_mcp" } } } ``` ### Step 3: Restart Cursor After adding the configuration, restart Cursor to load the MCP server. ## Available Tools Once configured, you'll have access to these tools in Cursor: ### `list_tables` Lists all tables in a specified schema (defaults to 'public') ``` Parameters: - schema (optional): Schema name (default: "public") ``` ### `describe_table` Gets detailed schema information for a specific table ``` Parameters: - table_name (required): Name of the table to describe - schema (optional): Schema name (default: "public") ``` ### `get_table_relationships` Shows foreign key relationships for a table ``` Parameters: - table_name (required): Name of the table - schema (optional): Schema name (default: "public") ``` ### `list_schemas` Lists all available schemas in the database ``` No parameters required ``` ### `get_indexes` Shows indexes for a specific table ``` Parameters: - table_name (required): Name of the table - schema (optional): Schema name (default: "public") ``` ## Usage Examples Once configured in Cursor, you can ask questions like: - "What tables are in my database?" - "Show me the schema for the users table" - "What are the foreign key relationships for the orders table?" - "List all indexes on the products table" - "What schemas are available in my database?" ## Troubleshooting ### Connection Issues 1. **Database connection fails**: - Verify your database credentials in `.env` - Ensure PostgreSQL is running - Check if the database allows connections from your host 2. **MCP server not loading in Cursor**: - Verify the absolute path to `index.js` is correct - Check that Node.js is installed and accessible - Review Cursor's MCP logs for error messages 3. **Permission denied errors**: - Ensure the database user has read permissions on `information_schema` - Grant necessary SELECT permissions on system tables ### Common Error Messages - `Database connection failed`: Check your connection parameters - `Table not found`: Verify the table name and schema - `Permission denied`: Ensure your database user has appropriate read permissions ## Security Considerations - This server only reads database metadata (schema information) - No actual table data is accessed or exposed - Uses parameterized queries to prevent SQL injection - Database credentials are stored locally in your environment ## Development To run in development mode with auto-reload: ```bash npm run dev ``` ## License MIT License - see LICENSE file for details.

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/sbfulfil/pg-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server