PostgreSQL查询服务器

一个基于Model Context Protocol (MCP)的PostgreSQL只读查询服务器,用于与Claude Desktop等MCP客户端集成。

  • by RathodDarshil
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 rathoddarshil/mcp-postgres-query-server

使用说明

MCP Postgres查询服务器

一种用于以只读模式查询PostgreSQL数据库的模型上下文协议(MCP)服务器实现,旨在与Claude Desktop和其他MCP客户端配合使用。

概述

该项目实现了一个模型上下文协议(MCP)服务器,该服务器提供:

  1. PostgreSQL数据库的安全只读接口
  2. 通过MCP协议与Claude Desktop集成
  3. SQL查询验证,以确保只执行SELECT查询
  4. 查询超时保护(10秒)

先决条件

  • Node.js(v14或更高版本)
  • npm(附带Node.js)
  • PostgreSQL数据库(通过命令行提供连接详细信息)

安装

# Clone the repository
git clone https://github.com/RathodDarshil/mcp-postgres-query-server.git
cd mcp-postgres-query-server

# Install dependencies
npm install

# Build the project
npm run build

连接到克劳德桌面

您可以将Claude Desktop配置为自动启动并连接到MCP服务器:

  1. 访问Claude Desktop配置文件:

    • 打开克劳德桌面
    • 前往“设置”>“开发人员”>“编辑配置”
    • 这将在默认文本编辑器中打开配置文件
  2. 将postgres查询服务器添加到 mcpServers 你的部分 claude_desktop_config.json:

{
    "mcpServers": {
        "postgres-query": {
            "command": "node",
            "args": [
                "/path/to/your/mcp-postgres-query-server/dist/index.js",
                "postgresql://username:password@hostname:port/database"
            ]
        }
    }
}
  1. 替换 /path/to/your/ 带有项目目录的实际路径。
  2. 用实际的数据库凭据替换PostgreSQL连接字符串。
  3. 保存文件并重新启动Claude Desktop。MCP服务器现在应该出现在设置中的MCP服务器选择下拉列表中。

配置示例

下面是一个带有postgres查询的配置文件的完整示例:

{
    "mcpServers": {
        "postgres-query": {
            "command": "node",
            "args": [
                "/Users/darshilrathod/mcp-servers/mcp-postgres-query-server/dist/index.js",
                "postgresql://user:password@localhost:5432/mydatabase"
            ]
        }
    }
}

更新配置

要更新您的Claude Desktop配置:

  1. 打开克劳德桌面
  2. 前往“设置”>“开发人员”>“编辑配置”
  3. 对配置文件进行更改
  4. 保存文件
  5. 重新启动Claude Desktop以使更改生效
  6. 如果您已经更新了MCP服务器代码,请确保使用以下命令重新构建它 npm run build 重新启动之前

特性

  • 只读数据库访问:出于安全考虑,只允许使用SELECT查询
  • 查询验证:防止可能有害的SQL操作
  • 超时保护:运行时间超过10秒的查询将自动终止
  • MCP协议支持:完成模型上下文协议的实施
  • JSON响应格式:查询结果以结构化JSON格式返回

API

工具

查询postgres

对配置的PostgreSQL数据库执行只读SQL查询。

参数:

  • query (string):要执行的SQL SELECT查询

答复:

  • JSON对象包含:
    • rows:结果集行
    • rowCount:返回的行数
    • fields:列元数据

例子:

query-postgres: SELECT * FROM users LIMIT 5

发展

主服务器实现在 src/index.ts.关键部件:

  • PostgreSQL连接池设置
  • 查询验证逻辑
  • MCP服务器配置
  • 工具和资源定义

要修改服务器的行为,您可以:

  • 在中编辑查询验证逻辑 isReadOnlyQuery()
  • 向MCP服务器添加其他工具或资源
  • 修改查询超时时间(当前为10秒)

安全考虑

  • 服务器验证所有查询以确保它们是只读的
  • 与数据库的连接使用SSL
  • 查询超时可防止资源耗尽
  • 不允许进行写入操作
  • 数据库凭据直接通过命令行参数传递,不存储在文件中

许可证

国际协调委员会

贡献

欢迎投稿!请随时提交拉取请求。