这是一个基于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
npm run stdio
在~/.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