PostgreSQL MCP服务器

一个用于构建自定义MCP服务器的模板项目,支持通过PostgreSQL数据库执行SQL查询、管理资源和生成提示模板。

  • by NetanelBollag
  • Python
  • 本地部署
  • 32 星标
  • 更新于
在 GitHub 查看 NetanelBollag/simple-psql-mcp

使用说明

简单的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. 鼓励

    • 查询生成模板
    • 分析查询生成器
    • 基于此仓库中的模板

先决条件

  • Python 3.8+
  • 紫外线 -现代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检查器运行服务器:

    # 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文档,便于LLM开发
  • 基于以下方法:https://modelcontextprotocol.io/tutorials/building-mcp-with-llms

安全

这是一个实验项目,旨在使开发人员能够创建自己的MCP服务器。我做了最少的工作来确保它在你尝试时不会立即死亡,但要小心——用这个工具运行SQL注入非常容易。服务器将检查查询是否以SELECT开头,但除此之外,什么都不能保证。TL;DR-除非你是创始人,而且没有付费客户,否则不要在生产环境中运行。

许可证

麻省理工学院