
go-mcp-postgres

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 功能。
核心功能
- CRUD 操作:支持对 PostgreSQL 数据库和表进行创建、读取、更新和删除操作。
- 只读模式:通过
--read-only
标志启用,仅允许使用以list
、read_
和desc_
开头的工具。 - 查询计划检查:通过
--with-explain-check
标志启用,在执行查询前使用EXPLAIN
语句检查查询计划。 - 多语言支持:工具描述会根据
--lang
参数自动本地化(支持 en/zh-CN)。
适用场景
- 数据库管理:自动化管理 PostgreSQL 数据库和表。
- 数据查询:执行复杂的 SQL 查询并获取结果。
- 数据操作:执行插入、更新和删除操作。
- 只读访问:在需要防止意外写入的场景下使用只读模式。
工具列表
Schema Tools
list_database
:列出匹配的数据库名称。list_table
:列出匹配的表名称。create_table
:创建表。alter_table
:修改现有表。desc_table
:描述表的结构。
Data Tools
read_query
:执行只读 SQL 查询。write_query
:执行写入 SQL 查询。update_query
:执行更新 SQL 查询。delete_query
:执行删除 SQL 查询。count_query
:查询表中行数。
常见问题解答
- 如何启用只读模式?:添加
--read-only
标志并重启 MCP 服务器。 - 如何禁用查询计划检查?:添加
--with-explain-check
标志。 - 如何设置语言?:使用
--lang
参数(en/zh-CN)。
使用教程
使用依赖
- 确保已安装 Go 环境(如需从源码构建)。
安装教程
- 从发布版本安装:
- 下载最新 release 并放入
$PATH
或易于访问的位置。 - 从源码构建:
sh go install -v github.com/guoling2008/go-mcp-postgres@latest
调试方式
- stdio 模式:
json { "mcpServers": { "postgres": { "command": "go-mcp-postgres", "args": [ "--dsn", "postgresql://user:pass@host:port/db" ] } } }
- sse 模式:
sh ./go-mcp-postgres --t sse --ip x.x.x.x --port nnnn --dsn postgresql://user:pass@host:port/db --lang en
- 可选标志:
--lang
:设置语言(en/zh-CN)。--read-only
:启用只读模式。--with-explain-check
:禁用查询计划检查。