@kohlarnhin/mcp-server-postgres
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

MCP Server for PostgreSQL

这是一个基于Node.js的MCP(Model Context Protocol)服务器,用于与PostgreSQL数据库交互。它允许AI模型通过MCP协议查询和操作PostgreSQL数据库。

功能特点

  • 支持基本的SQL查询操作
  • 可配置的写操作权限(INSERT、UPDATE、DELETE、DDL)
  • 多数据库模式支持
  • 基于模式的细粒度权限控制
  • 安全的事务管理
  • 查询结果以JSON格式返回

安装

# 全局安装
npm install -g @kohlarnhin/mcp-server-postgres

# 本地安装
npm install @kohlarnhin/mcp-server-postgres

配置

环境变量可以通过.env文件或直接在运行环境中设置:

POSTGRES_HOST=127.0.0.1
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASS=your_password
POSTGRES_DB=your_database

# 日志设置
ENABLE_LOGGING=true

# 写操作权限(全局)
ALLOW_INSERT_OPERATION=true
ALLOW_UPDATE_OPERATION=true
ALLOW_DELETE_OPERATION=false
ALLOW_DDL_OPERATION=false

# 基于特定模式的权限(可选)
# 格式: "schema1:true,schema2:false"
SCHEMA_INSERT_PERMISSIONS="public:true,private:false"
SCHEMA_UPDATE_PERMISSIONS="public:true,private:false"
SCHEMA_DELETE_PERMISSIONS="public:false,private:false"
SCHEMA_DDL_PERMISSIONS="public:false,private:false"

# 多数据库模式(可选)
# 当POSTGRES_DB为空时启用
MULTI_DB_WRITE_MODE=false

使用方法

本地开发

npm run dev

生产环境

npm run build
npm start

以stdio模式运行(用于MCP集成)

npm run stdio

MCP集成

~/.cursor/mcp.json中添加以下配置,将其集成到支持MCP的环境中:

{
  "mcpServers": {
    "Postgres": {
      "command": "npx",
      "args": [
        "mcprunner",
        "POSTGRES_HOST=127.0.0.1",
        "POSTGRES_PORT=5432",
        "POSTGRES_USER=postgres",
        "POSTGRES_PASS=123456",
        "POSTGRES_DB=your_database",
        "ALLOW_INSERT_OPERATION=true",
        "ALLOW_UPDATE_OPERATION=true",
        "ALLOW_DELETE_OPERATION=false",
        "--",
        "npx",
        "-y",
        "@kohlarnhin/mcp-server-postgres"
      ]
    }
  }
}

查询示例

通过MCP协议,可以执行如下SQL查询:

-- 查询表列表
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'

-- 查询特定表的结构
SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'your_table' AND table_schema = 'public'

-- 查询数据
SELECT * FROM your_table WHERE condition

-- 插入数据(如果启用了INSERT权限)
INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2')

-- 更新数据(如果启用了UPDATE权限)
UPDATE your_table SET column1 = 'new_value' WHERE condition

-- 删除数据(如果启用了DELETE权限)
DELETE FROM your_table WHERE condition

-- DDL操作(如果启用了DDL权限)
CREATE TABLE new_table (id SERIAL PRIMARY KEY, name VARCHAR(100))

许可证

MIT

Dependencies (5)

Dev Dependencies (9)

Package Sidebar

Install

npm i @kohlarnhin/mcp-server-postgres

Weekly Downloads

38

Version

1.0.0

License

MIT

Unpacked Size

56.7 kB

Total Files

10

Last publish

Collaborators

  • kohlarnhin