使用说明
Postgres MCP服务器-用户指南
此存储库提供了一个连接到PostgreSQL数据库的FastMCP服务器,并公开了数据库自检工具。
此服务器提供什么
MCP服务器名称为 psql-server 目前暴露:
list_tables:返回表中的所有表名public模式extract_postgres_metadata:返回所有非系统架构的结构化元数据,包括:- 模式名称
- 表名
- 表注释(目的)
- 列(名称、类型、注释)
先决条件
- python
3.12+ - 正在运行的PostgreSQL实例
- 具有目录元数据读取权限的数据库凭据
- 推荐:
uv用于环境和依赖关系管理
项目设置
从存储库根目录:
uv sync
如果你不使用 uv,从安装依赖项 pyproject.toml 使用您喜欢的环境管理器。
环境变量
服务器从环境变量中读取PostgreSQL凭据(通过 .env 支持):
DB_HOSTDB_PORTDB_NAMEDB_USERDB_PASS
从以下位置创建本地环境文件 example.env.local (或直接在MCP客户端配置中设置变量):
DB_HOST="localhost"
DB_PORT="5432"
DB_NAME="postgres"
DB_USER="postgres"
DB_PASS="postgres"
运行服务器
开发模式
uv run fastmcp dev main.py
标准执行
uv run python main.py
MCP客户端配置示例
在启用MCP的客户端配置中使用以下模式(所示示例适用于本地Python环境):
{
"mcpServers": {
"psql-server": {
"command": "C:\\path\\to\\postgres-mcp-server\\.venv\\Scripts\\python.exe",
"args": [
"C:\\path\\to\\postgres-mcp-server\\main.py"
],
"env": {
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_NAME": "postgres",
"DB_USER": "postgres",
"DB_PASS": "postgres"
},
"cwd": "C:\\path\\to\\postgres-mcp-server"
}
}
}
全部替换 C:\\path\\to\\... 在您的计算机上具有绝对路径的值。
验证它是否有效
连接MCP客户端后:
- 呼叫
list_tables以确认连接。 - 呼叫
extract_postgres_metadata以确认元数据提取。
如果两次调用都返回了预期的数据,则设置完成。
故障排除
- 连接被拒绝/超时:验证PostgreSQL是否正在运行,主机/端口是否正确。
- 认证失败:验证
DB_USER和DB_PASS. - 未返回任何桌子:检查您的数据是否在
public;list_tables目前仅针对public. - 元数据中缺少注释:当PostgreSQL中没有定义表/列注释时,这是意料之中的。
