go-mcp-postgres
概述
本项目基于 Zhwt/go-mcp-mysql 的代码,借助 AI 的帮助,将数据库从 MySQL 迁移到了 PostgreSQL。这是一个零负担、开箱即用的 Model Context Protocol (MCP) 服务器,用于与 PostgreSQL 进行交互和自动化操作。无需 Node.js 或 Python 环境。该服务器提供了对 PostgreSQL 数据库和表进行 CRUD 操作的工具,并支持只读模式以防止意外的写操作。你还可以通过添加
--with-explain-check
标志,使 MCP 服务器在执行查询前使用 EXPLAIN
语句检查查询计划。请注意,该项目仍在开发中,可能尚未准备好用于生产环境。
安装
- 获取最新的 release,并将其放入你的
$PATH
或易于访问的位置。
- 如果你已安装 Go,可以从源码构建:
使用
方法 A:使用命令行参数进行 stdio 模式
注意:如果你将二进制文件放在
$PATH
之外,需要将 go-mcp-postgres
替换为二进制文件的完整路径。例如,如果你将二进制文件放在 Downloads 文件夹中,可以使用以下路径:方法 B:使用命令行参数进行 sse 模式
可选标志
--lang
:设置语言选项(en/zh-CN),默认为系统语言。
- 添加
--read-only
标志以启用只读模式。在此模式下,仅支持以list
、read_
和desc_
开头的工具。添加此标志后,请确保刷新或重启 MCP 服务器。
- 默认情况下,CRUD 查询会首先使用
EXPLAIN ?
语句执行,以检查生成的查询计划是否符合预期模式。添加--with-explain-check
标志以禁用此行为。
工具
多语言支持:所有工具描述将根据 lang 参数自动本地化。
如果你想添加自己的语言支持,请参考 [locales](for i18n) 文件夹。如果要在命令行中使用,需要创建新的 locales/xxx/active-xx.toml 文件。
模式工具
list_database
- ${mcp.tool.list_database.desc}
- 参数:无
- 返回:匹配的数据库名称列表。
list_table
- ${mcp.tool.list_table.desc}
- 参数:
name
:如果提供,列出指定名称的表;否则,列出所有表。- 返回:匹配的表名称列表。
create_table
- ${mcp.tool.create_table.desc}
- 参数:
query
:用于创建表的 SQL 查询。- 返回:x 行受影响。
alter_table
- 在 PostgreSQL 服务器中修改现有表。LLM 被告知不要删除现有表或列。
- 参数:
query
:用于修改表的 SQL 查询。- 返回:x 行受影响。
desc_table
- 描述表的结构。
- 参数:
name
:要描述的表的名称。- 返回:表的结构。
数据工具
read_query
- 执行只读 SQL 查询。
- 参数:
query
:要执行的 SQL 查询。- 返回:查询结果。
write_query
- 执行写 SQL 查询。
- 参数:
query
:要执行的 SQL 查询。- 返回:x 行受影响,最后插入的 id:<last_insert_id>。
update_query
- 执行更新 SQL 查询。
- 参数:
query
:要执行的 SQL 查询。- 返回:x 行受影响。
delete_query
- 执行删除 SQL 查询。
- 参数:
query
:要执行的 SQL 查询。- 返回:x 行受影响。
count_query
- 查询某个表的行数。
- 参数:
name
:要计数的表的名称。- 返回:表的行数。
许可证
MIT
- Author:waytomcp
- URL:https://www.waytomcp.com/article/guoling2008/go-mcp-postgres
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!