PostgreSQL MCP Server

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 服务器公开以下功能:

资源

  1. db-schema

    获取数据库模式信息。

    URI 模板: schema://{connectionId}

  2. table-structure

    获取特定表的结构。

    URI 模板: table://{connectionId}/{schema}/{table}

  3. query-history

    获取已执行查询的历史记录。

    URI 模板: history://{connectionId}

  4. postgres-schema

    获取一个或所有表的模式信息。

    URI 模板: postgres://{host}/{table}/schema

工具

  1. test-connection

    测试与 PostgreSQL 数据库的连接。

    参数:

    • host: string
    • port: number
    • database: string
    • user: string
    • password: string
    • ssl: boolean (可选)
  2. query

    在 PostgreSQL 数据库上执行 SQL 查询。

    参数:

    • host: string
    • port: number
    • database: string
    • user: string
    • password: string
    • ssl: boolean (可选)
    • query: string
    • params: any[] (可选)
  3. list-tables

    列出 PostgreSQL 数据库中的表。

    参数:

    • host: string
    • port: number
    • database: string
    • user: string
    • password: string
    • ssl: boolean (可选)
  4. describe-table

    描述 PostgreSQL 数据库中表的模式。

    参数:

    • host: string
    • port: number
    • database: string
    • user: string
    • password: string
    • ssl: boolean (可选)
    • tableName: string
    • schemaName: string (可选)
  5. get-database-stats

    获取有关 PostgreSQL 数据库的统计信息。

    参数:

    • host: string
    • port: number
    • database: string
    • user: string
    • password: string
    • ssl: boolean (可选)
  6. get-query-history

    获取已执行查询的历史记录。

    参数:

    • host: string
    • port: number
    • database: string
    • user: string
    • password: string
    • ssl: boolean (可选)
    • limit: number (可选)
  7. clear-query-history

    清除数据库连接的查询历史记录。

    参数:

    • host: string
    • port: number
    • database: string
    • user: string
    • password: string
    • ssl: boolean (可选)

提示

  1. generate-query

    根据描述生成 SQL 查询。

    参数:

    • description: string
    • tables: string
    • dbType: string (可选, 默认: 'postgresql')
  2. analyze-query

    分析 SQL 查询的性能和问题。

    参数:

    • query: string
    • dbType: string (可选, 默认: 'postgresql')
  3. 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

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

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

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript