内容
# PostgreSQL MCP 服务器
用于连接 PostgreSQL 的 MCP 服务器,支持只读和读写模式。
技术栈:
- Java 25
- Spring Boot 4 + Spring AI 2
## 工具列表
| 工具 | 描述 |
|-----------|--------------------------------------|
| `list` | 列出已配置的数据库连接 |
| `query` | 执行 SELECT 查询 |
| `execute` | 执行 INSERT/UPDATE/DELETE 或 DDL |
## 配置
### 配置文件
创建 `config.yml` 文件:
```yaml
servers:
- name: "预发布环境"
host: "预发布环境.example.com"
port: 5432
username: "预发布环境用户名"
password: "预发布环境密码"
database: "预发布环境"
readonly: false
- name: "生产环境"
host: "生产环境.example.com"
port: 5432
username: "生产环境用户名"
password: "生产环境密码"
database: "生产环境"
readonly: true
```
### 参数
| 参数 | 描述 |
|------------|----------------------------------------------------|
| `name` | 唯一的服务器名称 |
| `host` | PostgreSQL 主机 |
| `port` | 端口(默认 5432) |
| `username` | 用户名 |
| `password` | 密码 |
| `database` | 数据库名称 |
| `readonly` | `true` — 仅 SELECT,`false` — 完全访问 |
## 构建
```bash
./mvnw package -DskipTests
```
## 运行
### Docker
```bash
docker run -d \
-v ./config.yml:/application/config.yml:ro \
-p 2345:8080 \
ghcr.io/rcktsci/spring-pgdb-mcp:<VERSION>
```
### Docker Compose
示例暴露在端口 2345 上:
```yaml
services:
mcp-server:
image: ghcr.io/rcktsci/spring-pgdb-mcp:<VERSION>
ports:
- 0.0.0.0:2345:8080/tcp
volumes:
- ./config.yml:/application/config.yml:ro
```
## MCP
服务器使用 MCP SSE 传输。
- **MCP 端点:** `:8080/mcp` (在容器内)
- **MCP 端点:** `http://<IP>:2345/mcp` (发布端口)
## 连接外部客户端中的工具(Claude Code, OpenCode 等)
```json
{
"mcpServers": {
"测试 PostgreSQL": {
"url": "http://<IP>:2345/mcp"
}
}
}
```