Simple PostgreSQL MCP Server

by NetanelBollag
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Allows execution of SQL queries against a PostgreSQL database, access to database schema information, and use of query templates, enabling AI assistants to retrieve and manipulate data in PostgreSQL databases.

简单的 PostgreSQL MCP 服务器

这是一个模板项目,适合那些想要搭建自己的 MCP 服务器的人。我把它设计得非常简单易懂,易于上手——代码简洁明了,并附带 MCP 文档,方便您快速上手。

什么是 MCP?

TL;DR - 这是为 AI 编写插件的一种方法

模型上下文协议 (MCP) 是 LLM 与外部工具和数据交互的标准方式。简而言之:

  • 工具允许 LLM 执行命令(例如运行数据库查询)
  • 资源是可以附加到对话的数据(例如将文件附加到提示)
  • 提示是生成一致 LLM 指令的模板

特征

该 PostgreSQL MCP 服务器实现:

  1. 工具
    • execute_query ——针对数据库运行 SQL 查询
    • test_connection验证数据库连接是否正常工作
  2. 资源
    • db://tables模式中所有表的列表
    • db://tables/{table_name} - 特定表的架构信息
    • db://schema - 数据库中所有表的完整架构信息
  3. 提示
    • 查询生成模板
    • 分析查询构建器
    • 基于此 repo 中的模板

先决条件

  • Python 3.8+
  • uv - 现代 Python 包管理器和安装程序
  • npx(包含在 Node.js 中)
  • 您可以连接到的 PostgreSQL 数据库

快速设置

  1. 创建虚拟环境并安装依赖项:
    # Create a virtual environment with uv uv venv # Activate the virtual environment source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install dependencies uv pip install -r requirements.txt
  2. 使用 MCP Inspector 运行服务器:
    # Replace with YOUR actual database credentials npx @modelcontextprotocol/inspector uv --directory . run postgres -e DSN=postgresql://username:password@hostname:port/database -e SCHEMA=public

    注意:如果这是您第一次运行 npx,系统将提示您批准安装。输入“y”继续。

    运行此命令后,您将看到浏览器中启动了 MCP Inspector 界面。您应该会看到如下消息:
    MCP Inspector is up and running at http://localhost:5173
    如果浏览器没有自动打开,请复制并粘贴 URL 到浏览器中。你应该会看到类似这样的内容:
  3. 使用检查器:
    • 点击界面上的“连接”按钮(除非左下方控制台有错误信息)
    • 探索“工具”、“资源”和“提示”选项卡以查看可用的功能
    • 尝试单击列出的命令或输入资源名称来检索资源和提示
    • 该界面允许您测试查询并查看 MCP 服务器如何响应
  4. 看看官方文档官方服务器开发者指南: https://modelcontextprotocol.io/quickstart/server有关检查器的更多信息: https://modelcontextprotocol.io/docs/tools/inspector

将您的AI工具连接到服务器

您可以通过创建 MCP 配置文件来为您的 AI 助手配置 MCP 服务器:

{ "mcpServers": { "postgres": { "command": "/path/to/uv", "args": [ "--directory", "/path/to/simple-psql-mcp", "run", "postgres" ], "env": { "DSN": "postgresql://username:password@localhost:5432/my-db", "SCHEMA": "public" } } } }

或者,您可以使用包含的脚本生成此配置文件:

# Make the script executable chmod +x generate_mcp_config.sh # Run the configuration generator ./generate_mcp_config.sh

出现提示时,输入您的 PostgreSQL DSN 和架构名称。

如何使用

现在,您可以使用自然语言向 LLM 询问有关您的数据的问题:

  • “我的数据库中有哪些表?”
  • “按创建日期显示前 5 名用户”
  • “按州统计地址”

为了进行测试,Claude Desktop 原生支持 MCP,并且开箱即用所有功能(工具、资源和提示)。

示例数据库(可选)

如果您没有准备好数据库或遇到连接问题,您可以使用附带的示例数据库:

# Make the script executable chmod +x example-db/create-db.sh # Run the database setup script ./example-db/create-db.sh

此脚本会创建一个 Docker 容器,其中包含一个预先填充了示例用户和地址表的 PostgreSQL 数据库。运行后,您可以使用以下命令进行连接:

npx @modelcontextprotocol/inspector uv --directory . run postgres -e DSN=postgresql://postgres:postgres@localhost:5432/user_database -e SCHEMA=public

后续步骤

要使用您自己的 MCP 服务器扩展此项目:

  1. /src下创建一个新目录(例如/src/my-new-mcp
  2. 按照 PostgreSQL 示例实现您的 MCP 服务器
  3. 将新的 MCP 添加到pyproject.toml
[project.scripts] postgres = "src.postgres:main" my-new-mcp = "src.my-new-mcp:main"

然后,您可以使用以下命令运行新的 MCP:

npx @modelcontextprotocol/inspector uv --directory . run my-new-mcp

文档

安全

这是一个实验性项目,旨在帮助开发者创建自己的 MCP 服务器。我做了一些最低限度的设置,以确保它在你尝试时不会立即崩溃,但请小心——使用此工具很容易进行 SQL 注入。服务器会检查查询是否以 SELECT 开头,但除此之外,没有任何保证。简而言之,除非你是创始人并且没有付费客户,否则不要在生产环境中运行。

执照

麻省理工学院

-
security - not tested
A
license - permissive license
-
quality - not tested

用于构建自定义 MCP 服务器的模板项目,可直接访问 PostgreSQL 数据库,并允许通过模型上下文协议执行 SQL 查询和检索模式信息。

  1. What is MCP?
    1. Features
      1. Prerequisites
        1. Quick Setup
          1. Connect Your AI Tool to the Server
            1. How to use it
          2. Example Database (Optional)
            1. Next Steps
              1. Documentation
                1. Security
                  1. License
                    ID: ccc5pmsjxz