使用说明

项目简介

Postgres-MCP Server 是一个实现了 Model Context Protocol (MCP) 协议的后端服务器,专门为 PostgreSQL 数据库设计。它旨在作为 LLM(大型语言模型)应用的上下文服务,允许 LLM 通过标准化的 MCP 协议安全、可扩展地访问和操作 PostgreSQL 数据库的功能。

主要功能点

  • 资源 (Resources):

    • 笔记存储: 提供简单的笔记存储系统,允许 LLM 客户端访问和管理笔记资源。
    • 数据库表结构: 允许 LLM 客户端获取数据库中表的结构信息。
    • PostgreSQL 扩展: 允许 LLM 客户端查询已安装的 PostgreSQL 扩展信息。
  • Prompt 模板 (Prompts):

    • 笔记总结 (summarize-notes): 允许 LLM 客户端请求服务器生成所有存储笔记的摘要,并可选择摘要风格(简要/详细)。
  • 工具 (Tools):

    • 添加笔记 (add-note): 允许 LLM 客户端向服务器添加新的笔记。
    • 执行 SQL 查询 (query): 允许 LLM 客户端执行只读 SQL 查询并获取结果。
    • 分析工作负载 (analyze-workload): 分析数据库的频繁执行查询,并推荐优化的索引。
    • 分析指定查询 (analyze-queries): 分析用户提供的 SQL 查询列表,并推荐优化的索引。
    • 数据库健康检查 (database-health): 分析数据库的健康状况,包括索引、连接、Vacuum、Sequence、Replication、Buffer 和 Constraint 等方面。
    • 列出已安装扩展 (list-installed-extensions): 列出数据库中已安装的 PostgreSQL 扩展。
    • 安装扩展 (install-extension): 在数据库中安装指定的 PostgreSQL 扩展。
    • 报告慢查询 (top-slow-queries): 报告数据库中最慢的 SQL 查询。

安装步骤

本仓库的代码是 MCP 服务器的后端实现,需要部署后才能被 MCP 客户端(例如 Claude)连接和使用。

1. 克隆仓库

首先,您需要克隆 'postgres-mcp' 仓库到本地:

git clone https://github.com/crystaldba/postgres-mcp
cd postgres-mcp

2. 安装依赖

使用 'uv' 或 'pip' 安装项目依赖:

uv sync  # 推荐使用 uv
# 或
pip install -r requirements.txt

3. 构建 (可选)

如果您需要构建分发包,可以运行:

uv build
# 或
python -m build

这将在 'dist/' 目录下创建 wheel 和 source 文件。

4. 发布 (可选)

如果您希望将包发布到 PyPI,可以运行:

uv publish
# 或
python -m twine upload dist/*

服务器配置

要使 MCP 客户端(如 Claude Desktop)能够连接到 Postgres-MCP Server,您需要在客户端的配置文件中添加服务器配置信息。

对于 Claude Desktop 客户端,配置文件路径通常为:

  • MacOS: '~/Library/Application\ Support/Claude/claude_desktop_config.json'
  • Windows: '%APPDATA%/Claude/claude_desktop_config.json'

打开 'claude_desktop_config.json' 文件,在 '"mcpServers"' 字段下添加 'postgres-mcp' 服务器的配置。

开发/未发布服务器配置示例:

"mcpServers": {
  "postgres-mcp": {
    "command": "uv",
    "args": [
      "--directory",
      "{{PATH TO CHECKOUT}}/postgres-mcp",  //  请替换为 postgres-mcp 仓库在您本地的检出路径
      "run",
      "postgres-mcp",
      "{{POSTGRESQL DATABASE URL}}" // 请替换为您的 PostgreSQL 数据库连接 URL,例如:postgresql://user:password@host:port/database
    ]
  }
}

配置参数说明:

  • '"postgres-mcp"': 服务器名称,在客户端配置中用于标识和引用该服务器。
  • '"command": "uv"': 启动服务器的命令。这里使用 'uv run',假设您已安装 'uv' 包管理器。您也可以使用 'python' 或 'python3',并指定 'server.py' 脚本路径。
  • '"args"': 传递给启动命令的参数列表。
    • '"--directory"' 和 '"{{PATH TO CHECKOUT}}/postgres-mcp"': 指定服务器代码所在的目录。 请务必将 '{{PATH TO CHECKOUT}}/postgres-mcp' 替换为您本地 'postgres-mcp' 仓库的实际路径。
    • '"run"' 和 '"postgres-mcp"': 使用 'uv run' 运行 'postgres-mcp' 包,启动服务器。
    • '"{{POSTGRESQL DATABASE URL}}"': 请务必替换为您的 PostgreSQL 数据库连接 URL。 URL 格式通常为 'postgresql://用户名:密码@主机:端口/数据库名'。

发布服务器配置示例 (用于已发布到 PyPI 的版本):

"mcpServers": {
  "postgres-mcp": {
    "command": "uvx",
    "args": [
      "postgres-mcp", // 假设 postgres-mcp 包已安装到环境中
      "{{POSTGRESQL DATABASE URL}}" // 请替换为您的 PostgreSQL 数据库连接 URL
    ]
  }
}

注意:

  • 您需要将 '{{PATH TO CHECKOUT}}/postgres-mcp' 和 '{{POSTGRESQL DATABASE URL}}' 替换为实际的值。
  • 确保 PostgreSQL 数据库服务已启动并可访问。
  • 配置文件修改后,可能需要重启 MCP 客户端才能生效。

基本使用方法

配置完成后,您的 MCP 客户端(如 Claude)应该能够连接到 Postgres-MCP Server。您可以通过客户端的界面或命令来调用服务器提供的资源和工具。

例如,在 Claude 中,您可以:

  • 使用 '@postgres-mcp://resources' URI 读取 'list_resources' 资源,查看可用的数据库资源。
  • 使用 '@postgres-mcp:query' 工具,输入 SQL 查询语句,让服务器执行并返回结果。
  • 使用 '@postgres-mcp:analyze-workload' 工具,分析数据库工作负载并获取索引优化建议。

具体的工具和资源 URI 可以参考仓库 'README.md' 文件或通过 'list_resources' 资源动态发现。

信息

分类

数据库与文件