postgres-mcp-server
Provides tools for querying and managing PostgreSQL databases, including executing SELECT, INSERT, UPDATE, DELETE statements, listing tables, describing table structure, and retrieving table statistics.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@postgres-mcp-serverShow me all tables in the public schema"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PostgreSQL MCP 服务器
一个基于 Model Context Protocol (MCP) 的 PostgreSQL 数据库查询服务器,让 AI 助手能够安全地访问和查询您的数据库。
📋 目录
Related MCP server: PostgreSQL MCP Server
✨ 功能特性
✅ SQL 查询 - 执行 SELECT 查询语句
✅ 数据修改 - 执行 INSERT、UPDATE、DELETE 操作
✅ 表管理 - 列出数据库中的所有表
✅ 表结构查询 - 查看表的列信息、数据类型等
✅ 表统计信息 - 获取表的行数、大小等详细信息
✅ 参数化查询 - 支持参数化查询,防止 SQL 注入
✅ 自动连接管理 - 自动管理数据库连接池
🚀 快速开始
前置要求
Python 3.10 或更高版本
PostgreSQL 数据库(本地或远程)
pip 包管理器
安装步骤
1. 克隆或下载项目
git clone <repository_url>
cd ai-mcp2. 创建虚拟环境
python -m venv venv3. 激活虚拟环境
Windows (PowerShell):
.\venv\Scripts\Activate.ps1Windows (CMD):
venv\Scripts\activate.batLinux/Mac:
source venv/bin/activate4. 安装依赖
pip install -r requirements.txt5. 配置数据库连接
复制环境变量模板并编辑:
Windows:
copy env_template.txt .envLinux/Mac:
cp env_template.txt .env编辑 .env 文件,填入您的数据库连接信息:
DB_HOST=localhost
DB_PORT=5432
DB_NAME=postgres
DB_USER=postgres
DB_PASSWORD=your_password_here6. 测试运行(可选)
python postgres_mcp_server.py如果看到 "数据库连接成功" 的日志,说明配置正确。
📁 项目结构
ai-mcp/
├── postgres_mcp_server.py # MCP 服务器主程序
├── requirements.txt # Python 依赖包列表
├── env_template.txt # 环境变量配置模板
├── README.md # 项目说明文档(本文件)
├── .env # 数据库连接配置(需自行创建)
└── venv/ # Python 虚拟环境目录⚙️ 配置说明
环境变量
在 .env 文件中配置以下变量:
变量名 | 说明 | 默认值 | 示例 |
| 数据库主机地址 |
|
|
| 数据库端口 |
|
|
| 数据库名称 |
|
|
| 数据库用户名 |
|
|
| 数据库密码 | (空) |
|
依赖包
项目依赖以下 Python 包(已在 requirements.txt 中定义):
mcp>=1.0.0- Model Context Protocol SDKpsycopg2-binary>=2.9.0- PostgreSQL 数据库驱动python-dotenv>=1.0.0- 环境变量管理
📖 使用方法
直接运行(测试用)
python postgres_mcp_server.py作为 MCP 服务器运行
MCP 服务器设计为通过 stdio 协议运行,需要配合 MCP 客户端使用(如 Claude Desktop、Cursor 等)。
可用工具(Tools)
服务器提供以下 5 个工具:
1. query - 执行查询
执行 SQL 查询语句并返回结果。
参数:
sql(string, 必需) - SQL 查询语句params(array, 可选) - 查询参数列表
示例:
{
"sql": "SELECT * FROM users WHERE age > %s LIMIT 10",
"params": [18]
}2. execute - 执行修改
执行 INSERT、UPDATE、DELETE 等数据修改操作。
参数:
sql(string, 必需) - SQL 修改语句params(array, 可选) - 查询参数列表
示例:
{
"sql": "INSERT INTO users (name, email) VALUES (%s, %s)",
"params": ["张三", "zhangsan@example.com"]
}3. list_tables - 列出所有表
列出指定模式中的所有表和视图。
参数:
schema(string, 可选) - 模式名称,默认为"public"
示例:
{
"schema": "public"
}4. describe_table - 查看表结构
获取表的列信息(列名、数据类型、是否可空、默认值等)。
参数:
table_name(string, 必需) - 表名schema(string, 可选) - 模式名称,默认为"public"
示例:
{
"table_name": "users",
"schema": "public"
}5. get_table_info - 获取表详细信息
获取表的统计信息(行数、表大小、索引大小等)。
参数:
table_name(string, 必需) - 表名schema(string, 可选) - 模式名称,默认为"public"
示例:
{
"table_name": "users",
"schema": "public"
}🔌 MCP 客户端配置
Claude Desktop
配置文件位置
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonMac:
~/Library/Application Support/Claude/claude_desktop_config.json
配置示例
{
"mcpServers": {
"postgres": {
"command": "python",
"args": ["D:\\desk\\code\\python\\ai-mcp\\postgres_mcp_server.py"],
"env": {
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_NAME": "your_database",
"DB_USER": "your_username",
"DB_PASSWORD": "your_password"
}
}
}
}注意:
Windows 路径需要使用双反斜杠
\\或单正斜杠/确保 Python 在系统 PATH 中,或使用完整路径(如
C:\\Python312\\python.exe)
Cursor
配置文件位置
Windows:
%USERPROFILE%\.cursor\mcp.jsonMac/Linux:
~/.cursor/mcp.json
配置示例
{
"mcpServers": {
"postgres": {
"command": "python",
"args": ["D:\\desk\\code\\python\\ai-mcp\\postgres_mcp_server.py"],
"env": {
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_NAME": "your_database",
"DB_USER": "your_username",
"DB_PASSWORD": "your_password"
}
}
}
}配置后的使用
配置完成后,重启 Claude Desktop 或 Cursor,您就可以在对话中直接使用自然语言查询数据库了:
示例对话:
用户:列出数据库中的所有表
AI:[调用 list_tables 工具]
用户:查询 china_highway_wgs84 表中有多少条数据
AI:[调用 query 工具执行 SELECT COUNT(*)]
用户:显示 users 表的结构
AI:[调用 describe_table 工具]🔒 安全建议
1. 数据库权限控制
强烈建议为 MCP 服务器创建一个专用的数据库用户,并只授予必要的权限:
-- 创建只读用户(推荐用于查询)
CREATE USER mcp_readonly WITH PASSWORD 'secure_password';
GRANT CONNECT ON DATABASE your_database TO mcp_readonly;
GRANT USAGE ON SCHEMA public TO mcp_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_readonly;
-- 如果需要修改权限(谨慎授予)
GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO mcp_readonly;2. 环境变量安全
❌ 不要将
.env文件提交到版本控制系统✅ 将
.env添加到.gitignore✅ 使用强密码
✅ 定期更换数据库密码
3. 网络安全
如果数据库在远程服务器,使用 SSL/TLS 加密连接
限制数据库的网络访问(使用防火墙规则)
考虑使用 VPN 或 SSH 隧道
4. 查询限制
考虑在数据库层面设置:
查询超时时间
结果集大小限制
连接数限制
🐛 故障排除
问题 1: 无法连接到数据库
错误信息: could not connect to server 或 connection refused
解决方案:
确认 PostgreSQL 服务正在运行
# Windows services.msc # 查找 PostgreSQL 服务 # Linux sudo systemctl status postgresql检查
.env文件中的连接信息是否正确确认数据库允许来自客户端的连接(检查
pg_hba.conf)检查防火墙是否阻止了连接
问题 2: 认证失败
错误信息: password authentication failed
解决方案:
确认用户名和密码正确
检查用户是否有访问该数据库的权限
查看 PostgreSQL 的
pg_hba.conf配置
问题 3: 模块导入错误
错误信息: ModuleNotFoundError: No module named 'xxx'
解决方案:
确认虚拟环境已激活
重新安装依赖:
pip install -r requirements.txt
问题 4: MCP 客户端无法找到服务器
解决方案:
确认配置文件路径正确
检查 JSON 格式是否正确(使用 JSON 验证器)
确认 Python 可执行文件路径正确
查看客户端的日志文件(通常在配置文件同目录)
重启 MCP 客户端应用
问题 5: 中文显示乱码
解决方案: 确保数据库使用 UTF-8 编码:
-- 查看数据库编码
SHOW SERVER_ENCODING;
-- 创建新数据库时指定编码
CREATE DATABASE mydb WITH ENCODING 'UTF8';📝 开发说明
日志配置
服务器使用 Python 的 logging 模块记录日志。修改日志级别:
# 在 postgres_mcp_server.py 中修改
logging.basicConfig(
level=logging.DEBUG, # 改为 DEBUG 查看详细日志
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)扩展功能
如需添加新的工具,参考现有工具的实现:
在
list_tools()中添加工具定义在
call_tool()中添加工具调用实现具体的处理函数
📄 许可证
MIT License
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📚 相关资源
❓ 常见问题
Q: 这个服务器安全吗?
A: 服务器本身不暴露网络端口,只通过 stdio 与 MCP 客户端通信。但请务必遵循安全建议,使用专用数据库用户并限制权限。
Q: 可以连接多个数据库吗?
A: 当前版本只支持连接一个数据库。如需连接多个数据库,可以配置多个 MCP 服务器实例。
Q: 支持其他数据库吗(如 MySQL、SQLite)?
A: 当前只支持 PostgreSQL。如需支持其他数据库,需要修改代码并使用相应的数据库驱动。
Q: 查询结果有大小限制吗?
A: 没有硬性限制,但返回大量数据可能会影响性能。建议在查询中使用 LIMIT 子句限制结果数量。
项目版本: 1.0.0
最后更新: 2025年10月
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/liwenqikeep/ai-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server