MCP HubMCP Hub
modelcontextprotocol

postgres

by: modelcontextprotocol

A Model Context Protocol server that provides read-only access to PostgreSQL databases. This server enables LLMs to inspect database schemas and execute read-only queries.

0created 19/11/2024
Visit
PostgreSQL
LLM

📌Overview

Purpose: To provide read-only access to PostgreSQL databases for inspecting schemas and executing queries via a Model Context Protocol server.

Overview: This framework consists of a server that allows large language models (LLMs) to interact with PostgreSQL databases. It enables users to retrieve and query database schema information in a read-only manner, ensuring data integrity and security.

Key Features:

  • Read-Only Query Execution: Enables users to execute SQL queries against the connected database while ensuring all operations are conducted within a read-only transaction, thus preserving database state and security.

  • Schema Information Retrieval: Automatically gathers and presents JSON schema details for each table, including column names and data types, allowing for easy inspection and understanding of the database structure.


PostgreSQL

A Model Context Protocol server that provides read-only access to PostgreSQL databases. This server enables LLMs to inspect database schemas and execute read-only queries.

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

Resources

The server provides schema information for each table in the database:

  • Table Schemas (postgres://<host>/<table>/schema)
    • JSON schema information for each table
    • Includes column names and data types
    • Automatically discovered from database metadata

Usage with Claude Desktop

To use this server with the Claude Desktop app, add the following configuration to the mcpServers section of your claude_desktop_config.json:

Docker

  • When running docker on macOS, use host.docker.internal if the server is running on the host network (e.g., localhost).
  • Username/password can be added to the PostgreSQL URL with postgresql://user:password@host:port/db-name.
{
  "mcpServers": {
    "postgres": {
      "command": "docker",
      "args": [
        "run", 
        "-i", 
        "--rm", 
        "mcp/postgres", 
        "postgresql://host.docker.internal:5432/mydb"
      ]
    }
  }
}

NPX

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://localhost/mydb"
      ]
    }
  }
}

Replace /mydb with your database name.

Building

Build Docker image with:

docker build -t mcp/postgres -f src/postgres/Dockerfile . 

License

This MCP server is licensed under the MIT License. You are free to use, modify, and distribute the software subject to its terms and conditions. See the LICENSE file in the project repository for details.