使用说明

项目简介

本项目 'mcp-postgres' 是一个实现了 Model Context Protocol (MCP) 的服务器,专门用于连接和操作 PostgreSQL 数据库。它允许大型语言模型 (LLM) 应用通过标准化的 MCP 协议,安全、便捷地访问 PostgreSQL 数据库中的数据和信息。借助此服务器,LLM 应用可以执行SQL查询、检索数据库结构、发现数据关系等操作,从而扩展 LLM 的上下文理解和数据处理能力。

主要功能点

  • 执行 SQL 查询: 允许 LLM 应用发送 SQL 查询语句到 PostgreSQL 数据库并获取结果。
  • 列出数据库结构: 提供工具列出数据库中的所有 schema 和指定 schema 下的表。
  • 描述表结构: 获取表的详细结构信息,包括列名、数据类型、是否允许为空、默认值等。
  • 获取外键信息: 查询表的外键约束,了解表与表之间的显式关联关系。
  • 发现表关系: 不仅能发现显式外键关系,还能根据命名约定等推断表之间的潜在关联关系。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/gldc/mcp-postgres
    cd mcp-postgres
  2. 创建并激活虚拟环境 (推荐):

    python -m venv venv
    source venv/bin/activate   # Linux/macOS
    # venv\Scripts\activate  # Windows
  3. 安装依赖:

    pip install -r requirements.txt

服务器配置

要将此 MCP 服务器集成到兼容 MCP 的客户端(如 Cursor),您需要在客户端的 MCP 配置文件(通常是 '~/.cursor/mcp.json')中添加服务器配置信息。以下是一个配置示例,您需要根据实际情况修改路径和数据库连接字符串:

{
  "servers": {
    "postgres": {
      "command": "/path/to/venv/bin/python",
      "args": [
        "/path/to/postgres_server.py",
        "postgresql://用户名:密码@主机:端口/数据库?ssl=true"
      ]
    }
  }
}

配置参数说明:

  • '"postgres"': 服务器名称,您可以自定义,用于在 MCP 客户端中引用此服务器。
  • '"command"': Python 解释器的路径,通常是您在虚拟环境中的 Python 解释器路径。请替换 '/path/to/venv/bin/python' 为实际路径。
  • '"args"': 启动服务器的参数列表。
    • '"/path/to/postgres_server.py"': 'postgres_server.py' 脚本的绝对路径。请替换 '/path/to/postgres_server.py' 为实际路径。
    • '"postgresql://用户名:密码@主机:端口/数据库?ssl=true"': PostgreSQL 数据库连接字符串。请务必替换为您的 PostgreSQL 数据库的真实连接信息,包括用户名、密码、主机、端口和数据库名。 如果数据库不需要 SSL 连接,可以移除 '?ssl=true' 部分。

请注意安全保管您的 'mcp.json' 文件,避免泄露数据库凭据。

基本使用方法

  1. 启动服务器: 配置完成后,当 MCP 客户端(如 Cursor)需要连接到 PostgreSQL 数据库时,会自动启动此 MCP 服务器。无需手动单独启动服务器,客户端会根据配置按需启动。

  2. 通过 MCP 客户端使用工具: 在 MCP 客户端中,您可以使用预定义的工具来与 PostgreSQL 数据库交互。例如,在 Cursor 中,您可以像调用函数一样使用这些工具:

    • 'postgres.query(sql="SELECT * FROM users LIMIT 10;")' 执行 SQL 查询。
    • 'postgres.list_schemas()' 列出所有数据库 schema。
    • 'postgres.list_tables(schema="public")' 列出 'public' schema 下的所有表。
    • 'postgres.describe_table(table_name="users", schema="public")' 获取 'public' schema 下 'users' 表的结构信息。
    • 'postgres.get_foreign_keys(table_name="orders", schema="public")' 获取 'public' schema 下 'orders' 表的外键信息。
    • 'postgres.find_relationships(table_name="products", schema="public")' 发现 'public' schema 下 'products' 表的关系。

    具体的工具调用方式和参数请参考 MCP 客户端的文档。

通过以上步骤,您就可以成功配置并使用 PostgreSQL MCP 服务器,在 LLM 应用中便捷地访问和操作 PostgreSQL 数据库。

信息

分类

数据库与文件