Model Context Protocol PostgreSQL Server

Model Context Protocol PostgreSQL Server

一个服务器,它允许人工智能模型通过标准化协议与 PostgreSQL 数据库交互,并提供数据库模式信息和 SQL 查询执行功能。

Category
访问服务器

README

Model Context Protocol PostgreSQL 服务器

本项目实现了一个连接到 PostgreSQL 数据库的 Model Context Protocol (MCP) 服务器。它允许 AI 模型通过标准化的协议与您的数据库进行交互。

功能特性

  • 使用连接池连接到 PostgreSQL 数据库
  • 实现用于 AI 模型交互的 Model Context Protocol
  • 提供数据库模式信息作为资源
  • 允许执行带有重试逻辑的 SQL 查询
  • 优雅地处理连接错误

前提条件

  • Node.js 20 或更高版本
  • PostgreSQL 数据库
  • 数据库的访问凭据

安装

  1. 克隆此仓库
  2. 安装依赖项:
npm install

配置

服务器从项目根目录下的 .env 文件中读取数据库凭据。您需要在 DB_CREDENTIALS 环境变量中以 JSON 字符串的形式添加您的数据库凭据:

  1. 在项目根目录中创建一个 .env 文件:
touch .env
  1. 添加以下行,并替换为您的实际数据库凭据:
export DB_CREDENTIALS='{"DB_USER":"your-username","DB_PASSWORD":"your-password","DB_HOST":"your-host","DB_PORT":"5433","DB_NAME":"your-database"}'

回退到 Shell 配置文件

如果 .env 文件不存在或找不到凭据变量,服务器将自动在您的 shell 配置文件中按以下顺序查找凭据:

  1. ~/.zshrc
  2. ~/.bashrc
  3. ~/.bash_profile
  4. ~/.profile

这在 shell 配置文件未自动加载的环境中尤其有用,例如 Cursor MCP 环境。

要在任何 shell 配置文件中设置凭据:

  1. 打开您首选的 shell 配置文件,例如:
nano ~/.zshrc
# 或
nano ~/.bashrc
  1. 添加以下行,并替换为您的实际数据库凭据:
export DB_CREDENTIALS='{"DB_USER":"your-username","DB_PASSWORD":"your-password","DB_HOST":"your-host","DB_PORT":"5433","DB_NAME":"your-database"}'

.env 文件不可用时,服务器将自动检测并使用这些凭据。

自定义凭据变量

您还可以使用自定义环境变量名来代替 DB_CREDENTIALS,方法是在启动服务器时使用 --credentials-var 标志:

node server.js --credentials-var MY_CUSTOM_DB_CREDS

在这种情况下,您需要在 .env 文件中定义 MY_CUSTOM_DB_CREDS

组合选项

您可以根据需要组合不同的命令行选项:

# 使用自定义凭据并启用详细模式
node server.js --credentials-var MY_CUSTOM_DB_CREDS --verbose

# 简写形式也有效
node server.js -c MY_CUSTOM_DB_CREDS -v

用法

启动 MCP 服务器:

# 直接使用 Node.js
node server.js

# 或使用 npm
npm start

日志选项

默认情况下,服务器以静默模式运行,仅显示错误消息。如果您想查看所有日志消息,可以使用 verbose 标志:

# 启用详细日志
node server.js --verbose

# 或使用 npm
npm start -- --verbose

您也可以使用简写标志 -v

node server.js -v

服务器将:

  1. 测试数据库连接
  2. 使用 stdio 传输启动 MCP 服务器
  3. 处理来自 AI 模型的请求

与 Cursor 集成

此服务器支持 Model Context Protocol (MCP) 并与 Cursor AI 集成。

自动配置

本项目包含一个预配置的 .cursor/mcp.json 文件,用于在 Cursor 中自动设置。

手动配置

要手动将此服务器添加到 Cursor:

  1. 转到 Cursor 设置 → Features → MCP
  2. 单击 "+ Add New MCP Server"
  3. 输入以下详细信息:
    • Name: Postgres MCP
    • Type: stdio
    • Command: node /full/path/to/server.js

有关 MCP 与 Cursor 集成的更多信息,请参阅官方文档

可用工具

服务器为 AI 模型提供以下工具:

  • query: 执行带有重试逻辑的 SQL 查询

资源

服务器将数据库表公开为资源,允许 AI 模型:

  • 列出数据库中的所有表
  • 查看每个表的模式信息

错误处理

服务器包括:

  • 连接重试逻辑
  • 详细的错误日志记录
  • 优雅的关闭处理

故障排除

连接问题

  1. 数据库连接失败

    • 检查 PostgreSQL 是否正在运行:pg_isready -h localhost -p 5433
    • 验证 .env 文件中的凭据是否正确
    • 确保您的 IP 地址有权访问数据库(检查 pg_hba.conf)
    • 尝试使用其他工具(如 psql)连接以验证凭据
  2. 环境变量问题

    • 确保您的 .env 文件位于项目根目录中
    • 检查 DB_CREDENTIALS 中的 JSON 结构是否有效
    • 验证 JSON 字符串中没有多余的空格或换行符
    • 使用以下命令进行测试:node -e "console.log(JSON.parse(process.env.DB_CREDENTIALS))" < .env
  3. Node.js 版本问题

    • 检查您的 Node.js 版本:node -v
    • 此服务器需要 Node.js 20+
    • 如果使用旧版本,请安装 Node.js 20:nvm install 20 && nvm use 20

Cursor 集成

  1. 服务器未在 Cursor 中显示

    • 确保 .cursor/mcp.json 文件存在且格式正确
    • 尝试重新启动 Cursor 以检测项目特定的配置
    • 检查 Cursor 日志中是否有任何错误消息
  2. "Failed to create client" 错误

    • 这通常表示服务器在启动期间崩溃
    • 使用详细日志记录手动运行服务器以查看错误:node server.js -v
    • 检查数据库凭据是否可在 Cursor 环境中访问
  3. Cursor 中没有可用工具

    • 确保服务器运行正常(检查日志)
    • 尝试单击 MCP 工具面板中的刷新按钮
    • 重新启动 Cursor 并重试

PostgreSQL 特定问题

  1. 权限被拒绝错误

    • 确保数据库用户对表具有适当的权限
    • 尝试授予所需的权限:GRANT SELECT ON ALL TABLES IN SCHEMA public TO username;
  2. "Relation does not exist" 错误

    • 验证该表是否存在:在 psql 中使用 \dt tablename
    • 检查您是否连接到正确的数据库
    • 确保用户有权访问该表所在的模式
  3. 性能问题

    • 大型查询结果可能会导致延迟,请考虑添加 LIMIT 子句
    • 检查您的数据库是否需要优化(索引、清理)

如需更多帮助,您可以运行带有详细日志记录(-v 标志)的服务器,以查看详细的错误消息和操作日志。

许可证

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

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

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

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

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

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

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

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

官方
精选
Exa MCP Server

Exa MCP Server

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

官方
精选