PostgreSQL Multi-Schema MCP Server

# PostgreSQL Multi-Schema MCP Server A Model Context Protocol server that provides read-only access to PostgreSQL databases with enhanced multi-schema support. This server enables LLMs to inspect database schemas across multiple namespaces and execute read-only queries while maintaining schema isolation. ## Key Features - **Multi-Schema Support**: Explicitly specify which schemas to expose through command-line configuration - **Schema Isolation**: Strict access control to only authorized schemas listed during server startup - **Cross-Schema Discovery**: Unified view of tables across multiple schemas while maintaining schema boundaries - **Metadata Security**: Filters system catalogs to only expose user-defined tables in specified schemas ## Components ### Tools - **query** - Execute read-only SQL queries against the connected database - Input: `sql` (string): The SQL query to execute - All queries are executed within a READ ONLY transaction - Schema context maintained through search_path restriction ### Resources The server provides schema information for each table across authorized schemas: - **Table Schemas** (`postgres://<host>/<db_schema>/<table>/schema`) - JSON schema information for each table - Includes column names, data types, and type modifiers - Automatically discovered from database metadata - Multi-schema support with explicit schema allow-list ## Usage The server requires a database URL and accepts a comma-separated list of schemas to expose: ``` npx -y mcp-server-postgres-multi-schema <database-url> [schemas] ``` - **database-url**: PostgreSQL connection string (e.g., `postgresql://localhost/mydb`) - **schemas**: Comma-separated list of schemas to expose (defaults to 'public' if not specified) ### Examples ```bash # Connect with default public schema npx -y mcp-server-postgres-multi-schema postgresql://localhost/mydb # Connect with multiple schemas npx -y mcp-server-postgres-multi-schema postgresql://localhost/mydb public,analytics,staging ``` ## Usage with Claude Desktop Configure the "mcpServers" section in your `claude_desktop_config.json`: ### NPX ```json { "mcpServers": { "postgres": { "command": "npx", "args": [ "-y", "mcp-server-postgres-multi-schema", "postgresql://localhost/mydb", "public,audit" ] } } } ``` ## License This multi-schema MCP server is licensed under the MIT License. You may use, modify, and distribute the software according to the terms in the LICENSE file.