PostgreSQL元数据服务

提供PostgreSQL数据库元数据查询和表结构分析功能的FastMCP服务器

  • by Mukilan-Mohanachandran
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Mukilan-Mohanachandran/postgres-mcp-server

使用说明

Postgres MCP服务器-用户指南

此存储库提供了一个连接到PostgreSQL数据库的FastMCP服务器,并公开了数据库自检工具。

此服务器提供什么

MCP服务器名称为 psql-server 目前暴露:

  • list_tables:返回表中的所有表名 public 模式
  • extract_postgres_metadata:返回所有非系统架构的结构化元数据,包括:
    • 模式名称
    • 表名
    • 表注释(目的)
    • 列(名称、类型、注释)

先决条件

  • python 3.12+
  • 正在运行的PostgreSQL实例
  • 具有目录元数据读取权限的数据库凭据
  • 推荐: uv 用于环境和依赖关系管理

项目设置

从存储库根目录:

uv sync

如果你不使用 uv,从安装依赖项 pyproject.toml 使用您喜欢的环境管理器。

环境变量

服务器从环境变量中读取PostgreSQL凭据(通过 .env 支持):

  • DB_HOST
  • DB_PORT
  • DB_NAME
  • DB_USER
  • DB_PASS

从以下位置创建本地环境文件 example.env.local (或直接在MCP客户端配置中设置变量):

DB_HOST="localhost"
DB_PORT="5432"
DB_NAME="postgres"
DB_USER="postgres"
DB_PASS="postgres"

运行服务器

开发模式

uv run fastmcp dev main.py

标准执行

uv run python main.py

MCP客户端配置示例

在启用MCP的客户端配置中使用以下模式(所示示例适用于本地Python环境):

{
  "mcpServers": {
    "psql-server": {
      "command": "C:\\path\\to\\postgres-mcp-server\\.venv\\Scripts\\python.exe",
      "args": [
        "C:\\path\\to\\postgres-mcp-server\\main.py"
      ],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "5432",
        "DB_NAME": "postgres",
        "DB_USER": "postgres",
        "DB_PASS": "postgres"
      },
      "cwd": "C:\\path\\to\\postgres-mcp-server"
    }
  }
}

全部替换 C:\\path\\to\\... 在您的计算机上具有绝对路径的值。

验证它是否有效

连接MCP客户端后:

  1. 呼叫 list_tables 以确认连接。
  2. 呼叫 extract_postgres_metadata 以确认元数据提取。

如果两次调用都返回了预期的数据,则设置完成。

故障排除

  • 连接被拒绝/超时:验证PostgreSQL是否正在运行,主机/端口是否正确。
  • 认证失败:验证 DB_USER 和 DB_PASS.
  • 未返回任何桌子:检查您的数据是否在 public; list_tables 目前仅针对 public.
  • 元数据中缺少注释:当PostgreSQL中没有定义表/列注释时,这是意料之中的。