go-mcp-postgres

go-mcp-postgres

site icon
2025.04.09 4
Go数据库管理数据查询数据操作只读访问数据库
go-mcp-postgres 是一个零负担、即用的 Model Context Protocol (MCP) 服务器,用于与 PostgreSQL 数据库交互和自动化操作。它不需要 Node.js 或 Python 环境,提供了对 PostgreSQL 数据库和表进行 CRUD 操作的工具,并支持只读模式以防止意外的写入操作。此外,还可以通过添加 `--with-explain-check` 标志使 MCP 服务器在执行查询前使用 `EXPLAIN` 语句检查查询计划。
View on GitHub

Overview

基本能力

产品定位

go-mcp-postgres 是一个用于与 PostgreSQL 数据库交互的 MCP 服务器,支持自动化操作和 CRUD 功能。

核心功能

  1. CRUD 操作:支持对 PostgreSQL 数据库和表进行创建、读取、更新和删除操作。
  2. 只读模式:通过 --read-only 标志启用,仅允许使用以 listread_desc_ 开头的工具。
  3. 查询计划检查:通过 --with-explain-check 标志启用,在执行查询前使用 EXPLAIN 语句检查查询计划。
  4. 多语言支持:工具描述会根据 --lang 参数自动本地化(支持 en/zh-CN)。

适用场景

  1. 数据库管理:自动化管理 PostgreSQL 数据库和表。
  2. 数据查询:执行复杂的 SQL 查询并获取结果。
  3. 数据操作:执行插入、更新和删除操作。
  4. 只读访问:在需要防止意外写入的场景下使用只读模式。

工具列表

Schema Tools

  1. list_database:列出匹配的数据库名称。
  2. list_table:列出匹配的表名称。
  3. create_table:创建表。
  4. alter_table:修改现有表。
  5. desc_table:描述表的结构。

Data Tools

  1. read_query:执行只读 SQL 查询。
  2. write_query:执行写入 SQL 查询。
  3. update_query:执行更新 SQL 查询。
  4. delete_query:执行删除 SQL 查询。
  5. count_query:查询表中行数。

常见问题解答

  1. 如何启用只读模式?:添加 --read-only 标志并重启 MCP 服务器。
  2. 如何禁用查询计划检查?:添加 --with-explain-check 标志。
  3. 如何设置语言?:使用 --lang 参数(en/zh-CN)。

使用教程

使用依赖

  1. 确保已安装 Go 环境(如需从源码构建)。

安装教程

  1. 从发布版本安装
  2. 下载最新 release 并放入 $PATH 或易于访问的位置。
  3. 从源码构建sh go install -v github.com/guoling2008/go-mcp-postgres@latest

调试方式

  1. stdio 模式json { "mcpServers": { "postgres": { "command": "go-mcp-postgres", "args": [ "--dsn", "postgresql://user:pass@host:port/db" ] } } }
  2. sse 模式sh ./go-mcp-postgres --t sse --ip x.x.x.x --port nnnn --dsn postgresql://user:pass@host:port/db --lang en
  3. 可选标志
  4. --lang:设置语言(en/zh-CN)。
  5. --read-only:启用只读模式。
  6. --with-explain-check:禁用查询计划检查。

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。