目录
一、前提条件
- 确保已安装 Docker 环境(用于拉取、运行 Postgres 及 MCP 相关镜像)。
- 准备好 Docker 运行所需的资源(CPU、内存),并确认网络可访问 Docker Hub。
二、启动 Postgres 数据库(Docker 方式)
1. 拉取并运行 Postgres 镜像
打开终端,执行以下命令启动 Postgres 数据库容器:
docker run -d \
--name postgres-mcp-db \
-e POSTGRES_USER=username \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=dbname \
-p 5432:5432 \
postgres:16
- 参数说明:
-d
:后台运行容器。--name postgres-mcp-db
:指定容器名称为postgres-mcp-db
,便于后续管理。-e POSTGRES_USER
:设置数据库用户名(需替换为实际用户名,如mcp_user
)。-e POSTGRES_PASSWORD
:设置数据库密码(需替换为强密码,如mcp123!
)。-e POSTGRES_DB
:设置默认数据库名称(需替换为实际库名,如mcp_db
)。-p 5432:5432
:映射容器 5432 端口到主机 5432 端口(PostgreSQL 默认端口)。postgres:16
:使用 PostgreSQL 16 版本镜像(可根据需求修改版本号,如postgres:15
)。
2. 验证数据库启动状态
执行以下命令检查容器是否正常运行:
docker ps | grep postgres-mcp-db
若输出包含 postgres:16
且状态为 Up
,则数据库启动成功。
三、启动 Postgres MCP 服务(Docker 方式)
打开终端(PowerShell 或命令行),进入合适目录(如 D:\agent-llm\mcp_ser\web-search
),执行以下命令启动服务:
docker run -p 8000:8000 -e DATABASE_URI=postgresql://username:password@localhost:5432/dbname crystaldba/postgres-mcp --access-mode=unrestricted --transport=sse
- 参数说明:
-p 8000:8000
:映射容器 8000 端口到主机 8000 端口,用于 MCP 服务通信。-e DATABASE_URI
:设置 PostgreSQL 数据库连接 URI,需替换username
(用户名)、password
(密码)、dbname
(数据库名)为实际值,确保能连接到你的 PostgreSQL 实例。--access-mode=unrestricted
:开放访问权限(根据实际场景调整安全策略 )。--transport=sse
:指定传输协议为 SSE(Server-Sent Events )。
首次运行会拉取 crystaldba/postgres-mcp
镜像,耐心等待拉取和启动完成。
四、配置 MCP 客户端连接
以工具/平台中“Edit MCP Server”配置为例:
- Name:自定义名称(如
postgres
),标识该连接。 - Type:选择
SSE
(与启动服务时--transport=sse
对应 )。 - Server URL:填写
http://localhost:8000/sse
,与 Docker 映射端口、服务传输协议匹配。
点击 Save 保存配置,完成客户端与 MCP 服务的连接。
四、操作 PostgreSQL 数据库(示例流程)
1. 随意创建一张表
2. 现在数据库有多少张表
3. postgres有多少种模式
参考链接:https://github.com/crystaldba/postgres-mcp/blob/main/README.md