PostgreSQL MCP Server

PostgreSQL MCP Server
精选

一个模型上下文协议服务器,通过自然语言交互实现强大的 PostgreSQL 数据库管理功能,包括分析、模式管理、数据迁移和监控。

数据库交互
数据与应用分析
访问服务器

README

PostgreSQL MCP 服务器

一个提供 PostgreSQL 数据库管理功能的模型上下文协议 (MCP) 服务器。该服务器协助分析现有的 PostgreSQL 设置,提供实施指导,调试数据库问题,管理模式,迁移数据以及监控数据库性能。

功能

数据库分析和调试

1. 数据库分析 (analyze_database)

分析 PostgreSQL 数据库配置和性能指标:

  • 配置分析
  • 性能指标
  • 安全评估
  • 优化建议
// 示例用法
{
  "connectionString": "postgresql://user:password@localhost:5432/dbname",
  "analysisType": "performance" // 可选: "configuration" | "performance" | "security"
}

2. 安装说明 (get_setup_instructions)

提供逐步的 PostgreSQL 安装和配置指导:

  • 平台特定的安装步骤
  • 配置建议
  • 安全最佳实践
  • 安装后任务
// 示例用法
{
  "platform": "linux", // 必需: "linux" | "macos" | "windows"
  "version": "15", // 可选: PostgreSQL 版本
  "useCase": "production" // 可选: "development" | "production"
}

3. 数据库调试 (debug_database)

调试常见的 PostgreSQL 问题:

  • 连接问题
  • 性能瓶颈
  • 锁冲突
  • 复制状态
// 示例用法
{
  "connectionString": "postgresql://user:password@localhost:5432/dbname",
  "issue": "performance", // 必需: "connection" | "performance" | "locks" | "replication"
  "logLevel": "debug" // 可选: "info" | "debug" | "trace"
}

模式管理

4. 模式信息 (get_schema_info)

获取数据库或特定表的详细模式信息:

  • 数据库中的表列表
  • 列定义
  • 约束 (主键,外键等)
  • 索引
// 示例用法
{
  "connectionString": "postgresql://user:password@localhost:5432/dbname",
  "tableName": "users" // 可选: 获取特定表的信息
}

5. 创建表 (create_table)

创建具有指定列的新表:

  • 定义列名和类型
  • 设置可空约束
  • 设置默认值
// 示例用法
{
  "connectionString": "postgresql://user:password@localhost:5432/dbname",
  "tableName": "users",
  "columns": [
    { "name": "id", "type": "SERIAL", "nullable": false },
    { "name": "username", "type": "VARCHAR(100)", "nullable": false },
    { "name": "email", "type": "VARCHAR(255)", "nullable": false },
    { "name": "created_at", "type": "TIMESTAMP", "default": "NOW()" }
  ]
}

6. 修改表 (alter_table)

修改现有表:

  • 添加新列
  • 修改列类型或约束
  • 删除列
// 示例用法
{
  "connectionString": "postgresql://user:password@localhost:5432/dbname",
  "tableName": "users",
  "operations": [
    { "type": "add", "columnName": "last_login", "dataType": "TIMESTAMP" },
    { "type": "alter", "columnName": "email", "nullable": false },
    { "type": "drop", "columnName": "temporary_field" }
  ]
}

数据迁移

7. 导出表数据 (export_table_data)

将表数据导出为 JSON 或 CSV 格式:

  • 使用 WHERE 子句过滤数据
  • 限制行数
  • 选择输出格式
// 示例用法
{
  "connectionString": "postgresql://user:password@localhost:5432/dbname",
  "tableName": "users",
  "outputPath": "./exports/users.json",
  "where": "created_at > '2023-01-01'", // 可选
  "limit": 1000, // 可选
  "format": "json" // 可选: "json" | "csv"
}

8. 导入表数据 (import_table_data)

从 JSON 或 CSV 文件导入数据:

  • 可选地在导入前截断表
  • 支持不同的格式
  • 自定义 CSV 分隔符
// 示例用法
{
  "connectionString": "postgresql://user:password@localhost:5432/dbname",
  "tableName": "users",
  "inputPath": "./imports/users.json",
  "truncateFirst": false, // 可选
  "format": "json", // 可选: "json" | "csv"
  "delimiter": "," // 可选: 用于 CSV 文件
}

9. 数据库之间复制 (copy_between_databases)

在两个 PostgreSQL 数据库之间复制数据:

  • 使用 WHERE 子句过滤数据
  • 可选地截断目标表
// 示例用法
{
  "sourceConnectionString": "postgresql://user:password@localhost:5432/source_db",
  "targetConnectionString": "postgresql://user:password@localhost:5432/target_db",
  "tableName": "users",
  "where": "active = true", // 可选
  "truncateTarget": false // 可选
}

监控

10. 监控数据库 (monitor_database)

PostgreSQL 数据库的实时监控:

  • 数据库指标 (连接数,缓存命中率等)
  • 表指标 (大小,行数,死元组)
  • 活动查询信息
  • 锁信息
  • 复制状态
  • 可配置的警报
// 示例用法
{
  "connectionString": "postgresql://user:password@localhost:5432/dbname",
  "includeTables": true, // 可选
  "includeQueries": true, // 可选
  "includeLocks": true, // 可选
  "includeReplication": false, // 可选
  "alertThresholds": { // 可选
    "connectionPercentage": 80,
    "longRunningQuerySeconds": 30,
    "cacheHitRatio": 0.95,
    "deadTuplesPercentage": 10,
    "vacuumAge": 7
  }
}

前提条件

  • Node.js >= 18.0.0
  • PostgreSQL 服务器 (用于目标数据库操作)
  • 对目标 PostgreSQL 实例的网络访问

安装

  1. 克隆存储库
  2. 安装依赖项:
    npm install
    
  3. 构建服务器:
    npm run build
    
  4. 添加到 MCP 设置文件:
    {
      "mcpServers": {
        "postgresql-mcp": {
          "command": "node",
          "args": ["/path/to/postgresql-mcp-server/build/index.js"],
          "disabled": false,
          "alwaysAllow": []
        }
      }
    }
    

开发

  • npm run dev - 启动具有热重载的开发服务器
  • npm run lint - 运行 ESLint
  • npm test - 运行测试

安全注意事项

  1. 连接安全

    • 使用连接池
    • 实施连接超时
    • 验证连接字符串
    • 支持 SSL/TLS 连接
  2. 查询安全

    • 验证 SQL 查询
    • 阻止危险操作
    • 实施查询超时
    • 记录所有操作
  3. 身份验证

    • 支持多种身份验证方法
    • 实施基于角色的访问控制
    • 强制执行密码策略
    • 安全地管理连接凭据

最佳实践

  1. 始终使用具有正确凭据的安全连接字符串
  2. 遵循敏感环境的生产安全建议
  3. 定期监控和分析数据库性能
  4. 保持 PostgreSQL 版本为最新
  5. 实施适当的备份策略
  6. 使用连接池以获得更好的资源管理
  7. 实施适当的错误处理和日志记录
  8. 定期安全审计和更新

错误处理

服务器实施了全面的错误处理:

  • 连接失败
  • 查询超时
  • 身份验证错误
  • 权限问题
  • 资源约束

贡献

  1. Fork 存储库
  2. 创建一个功能分支
  3. 提交您的更改
  4. 推送到分支
  5. 创建一个 Pull Request

许可证

该项目根据 AGPLv3 许可证获得许可 - 有关详细信息,请参见 LICENSE 文件。

推荐服务器

VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
AIO-MCP Server

AIO-MCP Server

🚀 集成了 AI 搜索、RAG 和多服务(GitLab/Jira/Confluence/YouTube)的一体化 MCP 服务器,旨在增强 AI 驱动的开发工作流程。来自 Folk。

精选
本地
Knowledge Graph Memory Server

Knowledge Graph Memory Server

为 Claude 实现持久性记忆,使用本地知识图谱,允许 AI 记住用户的信息,并可在自定义位置存储,跨对话保持记忆。

精选
本地
Hyperbrowser

Hyperbrowser

欢迎来到 Hyperbrowser,人工智能的互联网。Hyperbrowser 是下一代平台,旨在增强人工智能代理的能力,并实现轻松、可扩展的浏览器自动化。它专为人工智能开发者打造,消除了本地基础设施和性能瓶颈带来的麻烦,让您能够:

精选
本地
browser-use MCP server

browser-use MCP server

一个由人工智能驱动的浏览器自动化服务器,它实现了模型上下文协议,从而能够使用自然语言控制网页浏览器,以执行诸如导航、表单填写和视觉交互等任务。

精选
mcp-codex-keeper

mcp-codex-keeper

作为开发知识的守护者,为 AI 助手提供精心策划的最新文档和最佳实践访问权限。

精选
MCP Etherscan Server

MCP Etherscan Server

通过 Etherscan 的 API 促进与以太坊区块链数据的交互,提供对余额、交易、代币转移、合约 ABI、gas 价格和 ENS 名称解析的实时访问。

精选
Perplexity Deep Research MCP

Perplexity Deep Research MCP

一个服务器,它允许 AI 助手使用 Perplexity 的 sonar-deep-research 模型进行网络搜索,并提供引用支持。

精选