PostgreSQL MCP Server
一个用于 PostgreSQL 数据库探索和查询的模型上下文协议(Model Context Protocol, MCP)服务器实现。
目录
- 概述
- 功能
- 要求
- 安装
- 使用
- 基本用法
- 与 Claude Desktop 集成
- 配置文件位置
- 可用工具
- execute_query
- list_tables
- get_table_schema
- filter_instances
- get_database_stats
- 安全注意事项
- Claude 中的交互示例
- 故障排除
- 联系
概述
本项目提供了一个模型上下文协议(MCP)服务器,用于连接 PostgreSQL 数据库,并通过 MCP 工具暴露各种数据探索和查询功能。这些工具允许您通过标准化接口探索数据库结构、查询数据并获取数据库统计信息。
功能
- 使用标准连接字符串连接到任何 PostgreSQL 数据库
- 执行自定义 SELECT 查询,并以结构化格式返回结果
- 列出连接数据库中的所有表
- 获取任意表的详细模式信息
- 通过简单的相等条件过滤数据库记录
- 获取数据库统计信息,包括大小、表数量和最大表
要求
- Python 3.7+
- 所需的 Python 包(列在
requirements.txt
中): - mcp
- pg8000
- sqlalchemy
安装
- 克隆此仓库或下载源代码
- 创建虚拟环境(推荐)
- 安装所需的包:
使用
基本用法
通过提供 PostgreSQL 连接字符串运行服务器:
与 Claude Desktop 集成
要与 Claude Desktop 集成,请将以下配置添加到 Claude Desktop 配置文件中:
添加或修改上述配置文件后,请确保通过强制退出重新启动 Claude Desktop。
配置文件位置
Claude Desktop 配置文件通常位于:
- macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
可用工具
服务器提供以下 MCP 工具:
!工具
execute_query
执行自定义 SELECT SQL 查询并返回结果。
list_tables
列出当前 PostgreSQL 数据库中的所有表。
get_table_schema
获取指定表的模式定义。
filter_instances
根据指定条件过滤数据库记录。
get_database_stats
获取 PostgreSQL 数据库的常规统计信息和元数据。
安全注意事项
- 此服务器仅允许 SELECT 查询,以防止数据库修改
- 连接凭据通过命令行提供,不会存储
- 在生产环境中,请考虑使用环境变量或安全的配置方法
Claude 中的交互示例
连接到 Claude Desktop 后,您可以提出以下问题:
- "数据库中有哪些表?"
- "显示 customers 表的模式"
- "orders 表中有多少条记录?"
- "数据库的总大小是多少?"
!输出
Claude 将使用适当的 MCP 工具通过查询您的 PostgreSQL 数据库来回答这些问题。
故障排除
- 如果连接失败,请验证您的 PostgreSQL 连接字符串是否正确
- 检查您的 PostgreSQL 服务器是否允许从客户端机器连接
- 未找到服务器:确保配置文件中的路径正确且为绝对路径
通过运行where python
使用绝对路径
例如,"command": "python"
应写为"command": "/Users/username/miniconda3/bin/python"
- 权限问题:确保 Claude Desktop 应用程序有权执行脚本
- 服务器崩溃:检查服务器日志中的错误,并确保所有依赖项都已安装
联系
如有问题,请在本仓库中提交 issue。
- Author:waytomcp
- URL:https://www.waytomcp.com/article/aadarshjain/postgres-mcp-server
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!