PostgreSQL MCP 服务端

使用说明(Markdown 格式)

  • 项目简介

    • 这是一个面向 MCP 客户端的服务器实现,使用 Node.js 编写,连接 PostgreSQL 数据库,向 LLM 客户端暴露数据库中的资源、可执行的工具以及查询与分析能力。通过 MCP 约定的 JSON-RPC 形式与客户端通信,支持通过标准接口读取资源、调用工具、获取工具清单等。
  • 主要功能点

    • 资源管理:将数据库中的表视为资源,客户端可以列出资源、读取资源(表数据的前 100 行预览)等。
    • 工具集成:提供多种工具,如列出表、描述表、列出索引、列出约束、在表中搜索文本、执行只读查询、执行修改性查询、获取执行计划等。
    • 安全与健壮性:对输入进行基本校验,/SELECT 等只读操作有简单校验,表名和对象名进行一定的防注入判断。
    • 通信传输:使用 Stdio 传输实现 MCP 的请求-响应模式,后续可扩展至其他传输(如 SSE、WebSocket 等)。
    • 会话与能力:服务器注册能力(工具与资源)并对外提供相应的 API,便于 MCP 客户端获取能力声明。
  • 安装步骤

    1. 先决条件
      • Node.js 版本 18 及以上
      • PostgreSQL 数据库可访问
    2. 获取与准备
      • 将代码克隆到本地并安装依赖
      • 根据需要修改数据库连接信息
    3. 构建与运行
      • 运行构建命令将 TypeScript 转译为可执行的 JS
      • 以环境变量 DATABASE_URL 启动服务(若使用 .env,请确保在正确工作目录下加载)
      • 启动后,服务将通过标准输入/输出(Stdio)与 MCP 客户端通信
  • 服务器配置(JSON 配置示例,供 MCP 客户端使用) 说明:MCP 客户端需要知道服务器的启动命令及参数,以便与 MCP 服务器建立连接。以下为基于仓库信息的准确描述,请勿直接拷贝运行于你环境,需要按实际路径与环境调整。 { "mcpServers": { "postgre-server": { "name": "mcp-postgre-server", "command": "node", "args": ["build/index.js"], "env": { "DATABASE_URL": "postgresql://myuser:mypassword@localhost:5432/mydatabase" } // 注释:若使用 .env 文件,请确保在运行目录下存在正确的 .env } } }

  • 基本使用方法

    • 启动服务
      • 在项目根目录确保数据库连接信息正确(DATABASE_URL)
      • 运行构建并启动:npm install、npm run build、node build/index.js(或按你的路径配置执行)
    • 配置客户端
      • 将上述 JSON 配置提交给 MCP 客户端(如 VSCode 扩展、Antigravity 等),以告知客户端如何启动并连接到服务器
    • 常用操作演示
      • 请求列出数据库中的资源(表信息)
      • 请求读取某个表的前 100 行数据作为示例内容
      • 请求列出/描述某个表、执行只读查询、解释执行计划等工具操作
    • 重要注意
      • 生产环境应加强安全策略、对 SQL 使用进一步的输入校验与访问控制

服务器信息