使用说明

项目简介

本项目是一个基于Model Context Protocol (MCP) 的服务器实现,专门为大型语言模型(LLM)提供PostgreSQL数据库的上下文信息。它允许LLM安全地访问和查询PostgreSQL数据库,特别增强了对多Schema数据库的支持。通过此服务器,LLM可以发现数据库中的表结构信息,并执行只读SQL查询,从而更好地理解和利用数据库中的数据。

主要功能点

  • 多Schema支持: 可以配置服务器连接到PostgreSQL数据库的多个Schema,并允许LLM同时访问这些Schema中的数据。
  • Schema隔离: 严格限制LLM只能访问在服务器启动时指定的Schema,保证数据安全。
  • 跨Schema发现: LLM可以统一查看多个Schema下的表信息,方便进行跨Schema的数据分析。
  • 元数据安全: 服务器只暴露用户定义的表信息,过滤系统表,提高安全性。
  • 只读查询: 所有SQL查询都在只读事务中执行,防止LLM误操作修改数据库数据。
  • 表结构资源: 以JSON格式提供数据库表的结构信息,包括列名、数据类型等。
  • SQL查询工具: 提供名为 'query' 的工具,允许LLM执行SQL查询。

安装步骤

由于该项目基于Node.js,你需要先安装Node.js和npm (或 npx)。

  1. 安装 Node.js 和 npm: 如果你的电脑上还没有安装 Node.js,请先安装。你可以从 Node.js 官网 下载并安装。npm (或 npx) 通常会 साथ ही Node.js 一起安装。

  2. 使用 npx 运行: 本项目无需手动下载和安装,可以直接使用 'npx' 命令运行。'npx' 会自动下载并运行 'mcp-server-postgres-multi-schema' 包。

服务器配置

MCP客户端(例如 Claude Desktop)需要配置MCP服务器的启动命令才能连接。以下是针对本项目的 'claude_desktop_config.json' 配置示例:

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-server-postgres-multi-schema",
        "postgresql://[数据库地址]/[数据库名]",
        "[需要暴露的Schema,多个Schema用逗号分隔]"
      ]
    }
  }
}

配置参数说明:

  • '"postgres"': 服务器名称,可以自定义,用于在Claude Desktop中标识这个MCP服务器连接。
  • '"command": "npx"': 启动服务器的命令,这里使用 'npx'。
  • '"args"': 传递给 'npx' 命令的参数列表,包括:
    • '"-y"': 'npx' 参数,表示自动同意安装 'mcp-server-postgres-multi-schema' 包。
    • '"mcp-server-postgres-multi-schema"': 要运行的 npm 包名,即本项目。
    • '"postgresql://[数据库地址]/[数据库名]"': [请替换为你的 PostgreSQL 数据库连接字符串],例如 'postgresql://localhost/mydb'。你需要将 '[数据库地址]' 和 '[数据库名]' 替换为你的实际数据库连接信息。
    • '"[需要暴露的Schema,多个Schema用逗号分隔]"': [可选,请替换为你想要暴露给LLM访问的Schema列表],例如 '"public,analytics,staging"'。如果省略此参数,默认只暴露 'public' Schema。多个Schema之间用逗号分隔,不要包含空格

重要提示:

  • 请务必将 'postgresql://[数据库地址]/[数据库名]' 和 '[需要暴露的Schema,多个Schema用逗号分隔]' 替换为你的实际配置信息。
  • 数据库连接字符串中可能包含用户名和密码等敏感信息,请根据你的实际情况进行配置,并注意安全。

基本使用方法

  1. 启动 MCP 服务器: 配置好 'claude_desktop_config.json' 后,启动你的 MCP 客户端 (例如 Claude Desktop)。客户端会自动根据配置启动 MCP 服务器。

  2. 在 LLM 中使用: 在支持 MCP 协议的 LLM 应用中,你可以配置并连接到名为 '"postgres"' (或你在 'claude_desktop_config.json' 中配置的服务器名称) 的 MCP 服务器。

  3. 资源发现: LLM 可以通过 MCP 协议的资源发现功能,获取数据库中表的结构信息。服务器会将允许访问的 Schema 下的表作为资源暴露给 LLM。

  4. 使用 'query' 工具: LLM 可以调用名为 'query' 的工具来执行 SQL 查询。你需要提供 SQL 查询语句作为工具的输入参数。服务器会执行查询并将结果返回给 LLM。

示例: 在 Claude Desktop 中,你可以指示 Claude 使用 "postgres" MCP 服务器连接的数据库,并使用 'query' 工具查询数据,例如:

请使用 "postgres" MCP 服务器,执行 SQL 查询 "SELECT * FROM users LIMIT 10"。

LLM 应该能够调用 'query' 工具,执行 SQL 并返回结果,从而实现与 PostgreSQL 数据库的交互。

信息

分类

数据库与文件