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 多个工具。

官方
精选
本地
Neon MCP Server

Neon MCP Server

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

官方
精选
Exa MCP Server

Exa MCP Server

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

官方
精选
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 是下一代平台,旨在增强人工智能代理的能力,并实现轻松、可扩展的浏览器自动化。它专为人工智能开发者打造,消除了本地基础设施和性能瓶颈带来的麻烦,让您能够:

精选
本地
any-chat-completions-mcp

any-chat-completions-mcp

将 Claude 与任何 OpenAI SDK 兼容的聊天完成 API 集成 - OpenAI、Perplexity、Groq、xAI、PyroPrompts 等。

精选
Exa MCP Server

Exa MCP Server

一个模型上下文协议服务器,它使像 Claude 这样的人工智能助手能够以安全和受控的方式,使用 Exa AI 搜索 API 执行实时网络搜索。

精选
BigQuery MCP Server

BigQuery MCP Server

这是一个服务器,可以让你的大型语言模型(LLM,比如Claude)直接与你的BigQuery数据对话!可以把它想象成一个友好的翻译器,它位于你的AI助手和数据库之间,确保它们可以安全高效地进行交流。

精选
mcp-perplexity

mcp-perplexity

Perplexity API 的 MCP 服务器。

精选