mcpField
P
PostgreSQL MCP 服务器

PostgreSQL MCP 服务器

ローカル
github.com/cynhardchuengcデータベース079 週間前に更新

PostgreSQL MCP 服务器 について

MCP 経由で PostgreSQL にアクセスするサーバーで、AI アシスタントによるデータベース操作を必要とするユーザー向けです。読み取り専用クエリ、データ変更、スキーマ確認、明示的なトランザクション制御に加え、タイムアウトと接続プールを設定できます。

主な機能

  1. 01読み取り専用 SQL クエリの実行
  2. 02INSERT、UPDATE、DELETE の実行
  3. 03テーブル一覧とスキーマの確認
  4. 04トランザクションの明示的なコミットとロールバック
  5. 05タイムアウトと接続プールの設定

活用シーン

  1. 01AI アシスタントによる PostgreSQL データの照会
  2. 02トランザクション内でのデータ変更
  3. 03データベースのテーブルとスキーマの確認
  4. 04タイムアウト時のトランザクション自動ロールバック

MCP 対応

MCP SDK でデータベース操作ツールを登録し、Stdio トランスポートで MCP クライアントと通信します。クエリ、データ変更、トランザクション制御、テーブル確認の機能を公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

プロジェクトの README より

作者微信:1875954969

PostgreSQL MCP 服务器

基于Model Context Protocol (MCP)的PostgreSQL数据库访问服务器。该服务器允许AI助手安全地执行PostgreSQL数据库操作,包括查询、插入、更新和删除数据,以及表结构操作。

目录结构

pg-mcp-server/
├── dist/               # 编译后的JavaScript文件
├── src/                # 源代码目录
│   └── lib/            # 核心库文件
│       ├── config.ts           # 配置参数定义
│       ├── index.ts            # 主入口文件和服务器初始化
│       ├── tool-handlers.ts    # 处理各种数据库操作的函数
│       ├── transaction-manager.ts # 事务管理器
│       ├── types.ts            # 类型定义
│       └── utils.ts            # 工具函数
├── package.json        # 项目依赖定义
├── tsconfig.json       # TypeScript编译配置
└── README.md           # 项目说明文档

核心脚本说明

src/lib 目录下的脚本
  1. index.ts

    • 作用:主入口文件,用于初始化和启动MCP服务器。
    • 功能:注册数据库操作工具,设置PostgreSQL连接池,初始化事务管理器,处理命令行参数。
    • 特点:使用MCP SDK创建服务器,注册各种工具函数以处理数据库操作请求。
  2. tool-handlers.ts

    • 作用:包含所有数据库操作的处理函数。
    • 功能:实现SQL查询执行、数据修改操作、表列表获取、表结构描述等功能。
    • 处理函数:
      • handleExecuteQuery: 处理只读SQL查询
      • handleExecuteDML: 处理数据修改操作(INSERT, UPDATE, DELETE等)
      • handleExecuteCommit: 提交事务
      • handleExecuteRollback: 回滚事务
      • handleListTables: 列出数据库中的所有表
      • handleDescribeTable: 获取表结构详细信息
  3. transaction-manager.ts

    • 作用:管理数据库事务的生命周期。
    • 功能:跟踪活动事务,处理事务超时,确保资源正确释放。
    • 关键方法:添加、删除、提交和回滚事务,以及监控事务超时。
  4. types.ts

    • 作用:定义项目中使用的类型和常量。
    • 内容:TrackedTransaction接口用于跟踪事务状态,以及其他常量定义。
  5. utils.ts

    • 作用:提供通用工具函数。
    • 功能:
      • safelyReleaseClient: 安全释放PostgreSQL客户端连接
      • generateTransactionId: 生成唯一事务ID
      • isReadOnlyQuery: 检查SQL是否为只读查询
  6. config.ts

    • 作用:定义服务器配置项。
    • 内容:事务超时设置、监控间隔、PostgreSQL连接池参数等。
    • 特点:支持通过环境变量覆盖默认配置。

MCP SDK 的使用

该项目使用Model Context Protocol (MCP) SDK来实现与AI助手的标准化通信:

  1. 服务器创建:

    const server = new McpServer(
      {
        name: "postgres-full-access",
        version: "0.1.0",
      },
      {
        capabilities: {
          resources: {},
          tools: {},
        },
      }
    );
    
  2. 工具注册:

    server.tool(
      "execute_query",
      "运行只读 SQL 查询(SELECT 语句)",
      { sql: z.string().describe("要执行的 SQL 查询") },
      async (args, extra) => {
        // 处理查询
      }
    );
    
  3. 连接和启动:

    const transport = new StdioServerTransport();
    await server.connect(transport);
    

安装和运行步骤

前置条件
  • Node.js 18.x 或更高版本
  • PostgreSQL 数据库实例
  • npm 或 yarn 包管理器
安装步骤
  1. 克隆仓库

    git clone https://github.com/cynhardchueng/pg-mcp-server.git
    cd pg-mcp-server
    
  2. 安装依赖

    npm install
    

    如果需要单独安装或更新MCP SDK,请使用:

    npm install @modelcontextprotocol/[email protected]
    
  3. 编译TypeScript代码

    npm run build
    
  4. 配置Cursor的MCP配置

    在Cursor编辑器中,需要配置mcp.json文件。一般位于~/.cursor/mcp.json,添加以下内容:

    "pg-mcp-server": {
      "command": "node",
      "args": [
        "项目路径/dist/index.js", 
        "postgresql://用户名:密码@数据库地址:端口/数据库名"
      ],
      "env": {
         "TRANSACTION_TIMEOUT_MS": "60000",
         "MAX_CONCURRENT_TRANSACTIONS": "5",
         "PG_STATEMENT_TIMEOUT_MS": "30000"
      }
    }
    

    注意:请将上述配置中的"项目路径"、"用户名"、"密码"、"数据库地址"、"端口"和"数据库名"替换为实际值。

运行服务器
  1. 基本运行命令

    node dist/index.js postgresql://用户名:密码@数据库地址:端口/数据库名
    
  2. 使用环境变量配置

    TRANSACTION_TIMEOUT_MS=30000 PG_MAX_CONNECTIONS=30 node dist/index.js postgresql://用户名:密码@数据库地址:端口/数据库名
    
可用的环境变量
环境变量描述默认值
TRANSACTION_TIMEOUT_MS事务超时时间(毫秒)15000
MONITOR_INTERVAL_MS监控间隔时间(毫秒)5000
ENABLE_TRANSACTION_MONITOR启用事务监控true
MAX_CONCURRENT_TRANSACTIONS最大并发事务数10
PG_MAX_CONNECTIONS连接池最大连接数20
PG_IDLE_TIMEOUT_MS空闲连接超时(毫秒)30000
PG_STATEMENT_TIMEOUT_MSSQL语句执行超时(毫秒)30000

示例使用

通过MCP协议,AI助手可以执行以下类型的操作:

  1. 执行只读查询

    SELECT * FROM users WHERE age > 18;
    
  2. 执行数据修改

    INSERT INTO users (name, age) VALUES ('张三', 25);
    

    重要:执行数据修改操作(INSERT、UPDATE、DELETE等)后,需要在对话中明确回复"yes"(确认提交)或"no"(回滚事务)。例如:

    AI: 已执行插入操作,事务ID: tx_12345。请回复"yes"提交事务,或"no"回滚事务。
    用户: yes
    AI: 事务已成功提交,数据已永久保存。
    
  3. 查看表结构

    获取表"users"的详细信息
    
  4. 列出所有表

    列出数据库中的所有表
    

注意事项

  • 确保数据库用户具有适当的权限来执行所需的操作。
  • 对于生产环境,建议配置更严格的超时设置和连接池参数。
  • 事务会在超时后自动回滚,以防止长时间运行的事务占用资源。
  • 数据修改操作:所有DML操作(INSERT、UPDATE、DELETE)都在事务中执行,必须显式提交才会永久保存。如果用户没有回复"yes"确认提交,或会话结束,事务将自动回滚。
  • 请勿在配置文件中使用生产环境的数据库凭据,尤其是在公开分享代码时。
  • 尽量只使用查询分析功能,不要直接对生产库进行增删改,属于高危操作,请慎重

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。