PostgreSQL MCP Server
assadnasser
README
PostgreSQL MCP 服务器
一个模型上下文协议 (MCP) 服务器,允许用户连接到 PostgreSQL 数据库。该服务器公开资源、工具和提示,用于通过 MCP 协议与 PostgreSQL 数据库进行交互。
概述
此 MCP 服务器允许外部应用程序通过向 SSE(服务器发送事件)端点发送 POST 请求,与服务器共享数据库凭据。 然后,服务器建立与指定 PostgreSQL 数据库的连接,并提供各种与其交互的方式。
架构
服务器遵循模块化架构,具有清晰的关注点分离:
- 服务器核心 - 处理 MCP 协议的实现和协调
- 资源 - 提供有关数据库实体的数据和元数据
- 工具 - 实现数据库操作和动作
- 提示 - 定义自然语言界面模板
代码组织成以下主要目录:
src/
├── resources/ # 数据库模式、表结构、查询历史资源
├── tools/ # 数据库操作(查询、连接、表管理)
├── prompts/ # 用于数据库操作的自然语言模板
├── server.ts # 主要 MCP 服务器实现和配置
├── database.ts # 数据库连接和查询处理
└── query-history.ts # 查询历史跟踪和存储
特性
-
数据库连接
- 具有连接池的安全 PostgreSQL 连接
- 用于加密连接的 SSL 支持
- 连接验证
-
查询执行
- 带有参数绑定的 SQL 查询执行
- 查询历史跟踪
- 统计信息收集
-
模式管理
- 表格列表和描述
- 带有类型、约束和描述的列元数据
- 主键、外键和索引信息
-
数据库分析
- 数据库大小信息
- 当前数据库活动监控
- 查询性能跟踪
-
安全性
- API 速率限制
- CORS 支持和安全标头
-
服务器特性
- 优雅的关闭处理
- 跨域资源共享 (CORS) 支持
安装
# 克隆存储库
git clone https://github.com/yourusername/db-mcp-server.git
cd db-mcp-server
# 安装依赖项
npm install
# 安装 TypeScript 类型定义
npm install --save-dev @types/uuid @types/redis
# 基于示例创建一个 .env 文件
cp .env.example .env
# 使用您的配置编辑 .env 文件
开发
# 启动开发服务器
npm run dev
# 构建项目
npm run build
部署到 Vercel
该服务器与 Vercel 部署完全兼容:
# 安装 Vercel CLI
npm install -g vercel
# 部署到 Vercel
vercel
# 部署到生产环境
vercel --prod
环境变量
变量 | 描述 | 默认值 |
---|---|---|
PORT | 服务器端口 | 3000 |
NODE_ENV | 环境模式 | development |
REDIS_URL | Redis 连接 URL | 无(使用内存存储) |
PGHOST | PostgreSQL 主机 | localhost |
PGUSER | PostgreSQL 用户 | postgres |
PGDATABASE | PostgreSQL 数据库 | postgres |
PGPASSWORD | PostgreSQL 密码 | password |
PGPORT | PostgreSQL 端口 | 5432 |
API 端点
GET /health
: 健康检查端点GET /sse
: 用于 MCP 通信的 SSE 端点POST /messages
: 用于客户端到服务器通信的消息端点
使用 MCP 服务器
MCP 功能
此 MCP 服务器公开以下功能:
资源
-
db-schema
获取数据库模式信息。
URI 模板:
schema://{connectionId}
-
table-structure
获取特定表的结构。
URI 模板:
table://{connectionId}/{schema}/{table}
-
query-history
获取已执行查询的历史记录。
URI 模板:
history://{connectionId}
-
postgres-schema
获取一个或所有表的模式信息。
URI 模板:
postgres://{host}/{table}/schema
工具
-
test-connection
测试与 PostgreSQL 数据库的连接。
参数:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (可选)
-
query
在 PostgreSQL 数据库上执行 SQL 查询。
参数:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (可选)
- query: string
- params: any[] (可选)
-
list-tables
列出 PostgreSQL 数据库中的表。
参数:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (可选)
-
describe-table
描述 PostgreSQL 数据库中表的模式。
参数:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (可选)
- tableName: string
- schemaName: string (可选)
-
get-database-stats
获取有关 PostgreSQL 数据库的统计信息。
参数:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (可选)
-
get-query-history
获取已执行查询的历史记录。
参数:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (可选)
- limit: number (可选)
-
clear-query-history
清除数据库连接的查询历史记录。
参数:
- host: string
- port: number
- database: string
- user: string
- password: string
- ssl: boolean (可选)
提示
-
generate-query
根据描述生成 SQL 查询。
参数:
- description: string
- tables: string
- dbType: string (可选, 默认: 'postgresql')
-
analyze-query
分析 SQL 查询的性能和问题。
参数:
- query: string
- dbType: string (可选, 默认: 'postgresql')
-
explain-schema
用自然语言解释数据库模式。
参数:
- schemaJson: string
存储实现
服务器为存储组件提供双重实现:
查询历史
- 内存存储: 在开发中使用
- Redis 存储: 在提供 REDIS_URL 时在生产中使用
使用 MCP Inspector 进行测试
您可以使用 MCP Inspector 来测试您的服务器:
# 安装 MCP Inspector
npm install -g @modelcontextprotocol/inspector
# 启动 inspector
mcp-inspector --server-url http://localhost:3000
贡献
欢迎贡献! 请随时提交 Pull Request。
许可证
此项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。